diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java index ffacba208..457454395 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocReadPlatformServiceImpl.java @@ -22,30 +22,22 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.time.ZonedDateTime; import java.util.Collection; +import lombok.RequiredArgsConstructor; import org.apache.fineract.adhocquery.data.AdHocData; import org.apache.fineract.adhocquery.exception.AdHocNotFoundException; import org.apache.fineract.infrastructure.core.domain.JdbcSupport; import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; -@Service +@RequiredArgsConstructor public class AdHocReadPlatformServiceImpl implements AdHocReadPlatformService { private final JdbcTemplate jdbcTemplate; private final DatabaseSpecificSQLGenerator sqlGenerator; private final AdHocMapper adHocRowMapper; - @Autowired - public AdHocReadPlatformServiceImpl(final JdbcTemplate jdbcTemplate, DatabaseSpecificSQLGenerator sqlGenerator) { - this.jdbcTemplate = jdbcTemplate; - this.sqlGenerator = sqlGenerator; - this.adHocRowMapper = new AdHocMapper(sqlGenerator); - } - @Override public Collection retrieveAllAdHocQuery() { final String sql = "select " + this.adHocRowMapper.schema() + " order by r.id"; @@ -70,7 +62,7 @@ public class AdHocReadPlatformServiceImpl implements AdHocReadPlatformService { } } - protected static final class AdHocMapper implements RowMapper { + public static final class AdHocMapper implements RowMapper { private final DatabaseSpecificSQLGenerator sqlGenerator; diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java index 5f81ff8f0..c436a20bb 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocWritePlatformServiceJpaRepositoryImpl.java @@ -32,10 +32,8 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityConte import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -@Service @Slf4j @RequiredArgsConstructor public class AdHocWritePlatformServiceJpaRepositoryImpl implements AdHocWritePlatformService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/starter/AdhocQueryConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/starter/AdhocQueryConfiguration.java new file mode 100644 index 000000000..f70585d0c --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/starter/AdhocQueryConfiguration.java @@ -0,0 +1,59 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.adhocquery.starter; + +import org.apache.fineract.adhocquery.domain.AdHocRepository; +import org.apache.fineract.adhocquery.service.AdHocDataValidator; +import org.apache.fineract.adhocquery.service.AdHocReadPlatformService; +import org.apache.fineract.adhocquery.service.AdHocReadPlatformServiceImpl; +import org.apache.fineract.adhocquery.service.AdHocWritePlatformService; +import org.apache.fineract.adhocquery.service.AdHocWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +@Configuration +public class AdhocQueryConfiguration { + + @Bean + public AdHocReadPlatformServiceImpl.AdHocMapper adHocRowMapper(DatabaseSpecificSQLGenerator sqlGenerator) { + return new AdHocReadPlatformServiceImpl.AdHocMapper(sqlGenerator); + } + + @Bean + @ConditionalOnMissingBean(AdHocReadPlatformService.class) + public AdHocReadPlatformService adHocReadPlatformService(JdbcTemplate jdbcTemplate, DatabaseSpecificSQLGenerator sqlGenerator, + AdHocReadPlatformServiceImpl.AdHocMapper adHocRowMapper) { + return new AdHocReadPlatformServiceImpl(jdbcTemplate, sqlGenerator, adHocRowMapper) { + + }; + } + + @Bean + @ConditionalOnMissingBean(AdHocWritePlatformService.class) + public AdHocWritePlatformService adHocWritePlatformService(PlatformSecurityContext context, AdHocRepository adHocRepository, + AdHocDataValidator adHocCommandFromApiJsonDeserializer) { + return new AdHocWritePlatformServiceJpaRepositoryImpl(context, adHocRepository, adHocCommandFromApiJsonDeserializer) { + + }; + } +}