FINERACT-2267: proper not null annotations. Remove jetbrains notnull, all services use non-null
This commit is contained in:
+2
-2
@@ -28,7 +28,6 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import jakarta.annotation.Nullable;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
@@ -67,6 +66,7 @@ import org.apache.fineract.infrastructure.creditbureau.domain.TokenRepositoryWra
|
||||
import org.apache.fineract.infrastructure.creditbureau.serialization.CreditBureauTokenCommandFromApiJsonDeserializer;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -88,7 +88,7 @@ public class ThitsaWorksCreditBureauIntegrationWritePlatformServiceImpl implemen
|
||||
@Transactional
|
||||
@Override
|
||||
public String okHttpConnectionMethod(String userName, String password, String subscriptionKey, String subscriptionId, String url,
|
||||
String token, File file, FormDataContentDisposition fileData, Long uniqueId, String nrcId, @NotNull String process) {
|
||||
String token, File file, FormDataContentDisposition fileData, Long uniqueId, String nrcId, @NonNull String process) {
|
||||
|
||||
String responseMessage = null;
|
||||
if (StringUtils.isBlank(url)) {
|
||||
|
||||
+7
-7
@@ -23,7 +23,6 @@ import static org.apache.fineract.infrastructure.core.service.database.SqlOperat
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.gson.JsonObject;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
@@ -48,6 +47,7 @@ import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.support.PageableExecutionUtils;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.support.rowset.SqlRowSet;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Slf4j
|
||||
@@ -126,8 +126,8 @@ public class DatatableReadServiceImpl implements DatatableReadService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JsonObject> queryDataTable(@NotNull String datatable, @NotNull String columnName, String columnValueString,
|
||||
@NotNull String resultColumnsString) {
|
||||
public List<JsonObject> queryDataTable(@NonNull String datatable, @NonNull String columnName, String columnValueString,
|
||||
@NonNull String resultColumnsString) {
|
||||
datatable = datatableUtil.validateDatatableRegistered(datatable);
|
||||
Map<String, ResultsetColumnHeaderData> headersByName = searchUtil
|
||||
.mapHeadersToName(genericDataService.fillResultsetColumnHeaders(datatable));
|
||||
@@ -149,7 +149,7 @@ public class DatatableReadServiceImpl implements DatatableReadService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<JsonObject> queryDataTableAdvanced(@NotNull String datatable, @NotNull PagedLocalRequest<AdvancedQueryData> pagedRequest) {
|
||||
public Page<JsonObject> queryDataTableAdvanced(@NonNull String datatable, @NonNull PagedLocalRequest<AdvancedQueryData> pagedRequest) {
|
||||
datatable = datatableUtil.validateDatatableRegistered(datatable);
|
||||
context.authenticatedUser().validateHasDatatableReadPermission(datatable);
|
||||
|
||||
@@ -219,9 +219,9 @@ public class DatatableReadServiceImpl implements DatatableReadService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean buildDataQueryEmbedded(@NotNull EntityTables entityTable, @NotNull String datatable, @NotNull AdvancedQueryData request,
|
||||
@NotNull List<String> selectColumns, @NotNull StringBuilder select, @NotNull StringBuilder from, @NotNull StringBuilder where,
|
||||
@NotNull List<Object> params, String mainAlias, String alias, String dateFormat, String dateTimeFormat, Locale locale) {
|
||||
public boolean buildDataQueryEmbedded(@NonNull EntityTables entityTable, @NonNull String datatable, @NonNull AdvancedQueryData request,
|
||||
@NonNull List<String> selectColumns, @NonNull StringBuilder select, @NonNull StringBuilder from, @NonNull StringBuilder where,
|
||||
@NonNull List<Object> params, String mainAlias, String alias, String dateFormat, String dateTimeFormat, Locale locale) {
|
||||
List<String> resultColumns = request.getResultColumns();
|
||||
List<ColumnFilterData> columnFilters = request.getColumnFilters();
|
||||
if ((resultColumns == null || resultColumns.isEmpty()) && (columnFilters == null || columnFilters.isEmpty())) {
|
||||
|
||||
+4
-4
@@ -23,7 +23,6 @@ import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiCon
|
||||
import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.TABLE_FIELD_ID;
|
||||
import static org.apache.fineract.infrastructure.dataqueries.api.DataTableApiConstant.TABLE_REGISTERED_TABLE;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -45,6 +44,7 @@ import org.apache.fineract.portfolio.search.service.SearchUtil;
|
||||
import org.apache.fineract.useradministration.domain.AppUser;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.support.rowset.SqlRowSet;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Slf4j
|
||||
@@ -96,7 +96,7 @@ public class DatatableUtil {
|
||||
return entityTable;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
public EntityTables queryForApplicationEntity(final String datatable) {
|
||||
sqlValidator.validate(datatable);
|
||||
final String sql = "SELECT application_table_name FROM x_registered_table where registered_table_name = ?";
|
||||
@@ -111,7 +111,7 @@ public class DatatableUtil {
|
||||
return resolveEntity(applicationTableName);
|
||||
}
|
||||
|
||||
public CommandProcessingResult checkMainResourceExistsWithinScope(@NotNull EntityTables entityTable, final Long appTableId) {
|
||||
public CommandProcessingResult checkMainResourceExistsWithinScope(@NonNull EntityTables entityTable, final Long appTableId) {
|
||||
final String sql = dataScopedSQL(entityTable, appTableId);
|
||||
log.debug("data scoped sql: {}", sql);
|
||||
final SqlRowSet rs = this.jdbcTemplate.queryForRowSet(sql);
|
||||
@@ -140,7 +140,7 @@ public class DatatableUtil {
|
||||
.build();
|
||||
}
|
||||
|
||||
public String dataScopedSQL(@NotNull EntityTables entityTable, final Long appTableId) {
|
||||
public String dataScopedSQL(@NonNull EntityTables entityTable, final Long appTableId) {
|
||||
// unfortunately have to, one way or another, be able to restrict data to the users office hierarchy. Here, a
|
||||
// few key tables are done. But if additional fields are needed on other tables the same pattern applies
|
||||
final AppUser currentUser = this.context.authenticatedUser();
|
||||
|
||||
+4
-4
@@ -54,7 +54,6 @@ import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import jakarta.persistence.PersistenceException;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.lang.reflect.Type;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -112,6 +111,7 @@ import org.springframework.dao.EmptyResultDataAccessException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||
import org.springframework.jdbc.support.GeneratedKeyHolder;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.orm.jpa.JpaSystemException;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1199,7 +1199,7 @@ public class DatatableWriteServiceImpl implements DatatableWriteService {
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean isUserInsertable(@NotNull EntityTables entityTable, @NotNull ResultsetColumnHeaderData columnHeader) {
|
||||
private static boolean isUserInsertable(@NonNull EntityTables entityTable, @NonNull ResultsetColumnHeaderData columnHeader) {
|
||||
String columnName = columnHeader.getColumnName();
|
||||
return !columnHeader.getIsColumnPrimaryKey() && !CREATEDAT_FIELD_NAME.equals(columnName) && !UPDATEDAT_FIELD_NAME.equals(columnName)
|
||||
&& !entityTable.getForeignKeyColumnNameOnDatatable().equals(columnName);
|
||||
@@ -1298,7 +1298,7 @@ public class DatatableWriteServiceImpl implements DatatableWriteService {
|
||||
.with(changes).build();
|
||||
}
|
||||
|
||||
private static boolean isUserUpdatable(@NotNull EntityTables entityTable, @NotNull ResultsetColumnHeaderData columnHeader) {
|
||||
private static boolean isUserUpdatable(@NonNull EntityTables entityTable, @NonNull ResultsetColumnHeaderData columnHeader) {
|
||||
return isUserInsertable(entityTable, columnHeader);
|
||||
}
|
||||
|
||||
@@ -1369,7 +1369,7 @@ public class DatatableWriteServiceImpl implements DatatableWriteService {
|
||||
|
||||
// --- DbUtils ---
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
private String mapApiTypeToDbType(String apiType, Integer length) {
|
||||
if (StringUtils.isEmpty(apiType)) {
|
||||
return "";
|
||||
|
||||
+2
-2
@@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.apache.fineract.infrastructure.dataqueries.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
@@ -47,6 +46,7 @@ import org.apache.fineract.portfolio.savings.data.SavingsProductData;
|
||||
import org.apache.fineract.portfolio.savings.service.SavingsProductReadPlatformService;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@@ -78,7 +78,7 @@ public class EntityDatatableChecksReadPlatformServiceImpl implements EntityDatat
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntityDataTableChecksData> retrieveAll(@NotNull SearchParameters searchParameters, final Integer status,
|
||||
public Page<EntityDataTableChecksData> retrieveAll(@NonNull SearchParameters searchParameters, final Integer status,
|
||||
final String entity, final Long productId) {
|
||||
final StringBuilder sqlBuilder = new StringBuilder(200);
|
||||
sqlBuilder.append("select ").append(sqlGenerator.calcFoundRows()).append(" ").append(this.entityDataTableChecksMapper.schema());
|
||||
|
||||
+6
-6
@@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.apache.fineract.infrastructure.jobs.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
@@ -38,6 +37,7 @@ import org.apache.fineract.infrastructure.security.utils.ColumnValidator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -71,7 +71,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobDetailData retrieveOne(@NotNull IdTypeResolver.IdType idType, String identifier) {
|
||||
public JobDetailData retrieveOne(@NonNull IdTypeResolver.IdType idType, String identifier) {
|
||||
JobDetailData jobDetail = switch (idType) {
|
||||
case ID -> jobDetailRepository.getDataById(Long.valueOf(identifier));
|
||||
case SHORT_NAME -> jobDetailRepository.getDataByShortName(identifier);
|
||||
@@ -84,7 +84,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<JobDetailHistoryData> retrieveJobHistory(@NotNull IdTypeResolver.IdType idType, String identifier,
|
||||
public Page<JobDetailHistoryData> retrieveJobHistory(@NonNull IdTypeResolver.IdType idType, String identifier,
|
||||
SearchParameters searchParameters) {
|
||||
if (!isJobExist(idType, identifier)) {
|
||||
throw new JobNotFoundException(idType, identifier);
|
||||
@@ -127,8 +127,8 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public Long retrieveId(@NotNull IdTypeResolver.IdType idType, String identifier) {
|
||||
@NonNull
|
||||
public Long retrieveId(@NonNull IdTypeResolver.IdType idType, String identifier) {
|
||||
return switch (idType) {
|
||||
case ID -> Long.valueOf(identifier);
|
||||
case SHORT_NAME ->
|
||||
@@ -149,7 +149,7 @@ public class SchedulerJobRunnerReadServiceImpl implements SchedulerJobRunnerRead
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean isJobExist(@NotNull IdTypeResolver.IdType idType, @NotNull String jobId) {
|
||||
private boolean isJobExist(@NonNull IdTypeResolver.IdType idType, @NonNull String jobId) {
|
||||
return switch (idType) {
|
||||
case ID -> jobDetailRepository.existsById(Long.valueOf(jobId));
|
||||
case SHORT_NAME -> jobDetailRepository.existsByShortName(jobId);
|
||||
|
||||
+33
-33
@@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.apache.fineract.interoperation.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.time.LocalDateTime;
|
||||
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
||||
import org.apache.fineract.interoperation.data.InteropAccountData;
|
||||
@@ -30,58 +29,59 @@ import org.apache.fineract.interoperation.data.InteropTransactionRequestResponse
|
||||
import org.apache.fineract.interoperation.data.InteropTransactionsData;
|
||||
import org.apache.fineract.interoperation.data.InteropTransferResponseData;
|
||||
import org.apache.fineract.interoperation.domain.InteropIdentifierType;
|
||||
import org.springframework.lang.NonNull;
|
||||
|
||||
public interface InteropService {
|
||||
|
||||
@NotNull
|
||||
InteropIdentifiersResponseData getAccountIdentifiers(@NotNull String accountId);
|
||||
@NonNull
|
||||
InteropIdentifiersResponseData getAccountIdentifiers(@NonNull String accountId);
|
||||
|
||||
@NotNull
|
||||
InteropAccountData getAccountDetails(@NotNull String accountId);
|
||||
@NonNull
|
||||
InteropAccountData getAccountDetails(@NonNull String accountId);
|
||||
|
||||
@NotNull
|
||||
InteropTransactionsData getAccountTransactions(@NotNull String accountId, boolean debit, boolean credit, LocalDateTime transactionsFrom,
|
||||
@NonNull
|
||||
InteropTransactionsData getAccountTransactions(@NonNull String accountId, boolean debit, boolean credit, LocalDateTime transactionsFrom,
|
||||
LocalDateTime transactionsTo);
|
||||
|
||||
@NotNull
|
||||
InteropIdentifierAccountResponseData getAccountByIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
|
||||
@NonNull
|
||||
InteropIdentifierAccountResponseData getAccountByIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
|
||||
String subIdOrType);
|
||||
|
||||
@NotNull
|
||||
InteropIdentifierAccountResponseData registerAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
|
||||
String subIdOrType, @NotNull JsonCommand command);
|
||||
@NonNull
|
||||
InteropIdentifierAccountResponseData registerAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
|
||||
String subIdOrType, @NonNull JsonCommand command);
|
||||
|
||||
@NotNull
|
||||
InteropIdentifierAccountResponseData deleteAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
|
||||
@NonNull
|
||||
InteropIdentifierAccountResponseData deleteAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
|
||||
String subIdOrType);
|
||||
|
||||
InteropTransactionRequestResponseData getTransactionRequest(@NotNull String transactionCode, @NotNull String requestCode);
|
||||
InteropTransactionRequestResponseData getTransactionRequest(@NonNull String transactionCode, @NonNull String requestCode);
|
||||
|
||||
@NotNull
|
||||
InteropTransactionRequestResponseData createTransactionRequest(@NotNull JsonCommand command);
|
||||
@NonNull
|
||||
InteropTransactionRequestResponseData createTransactionRequest(@NonNull JsonCommand command);
|
||||
|
||||
InteropQuoteResponseData getQuote(@NotNull String transactionCode, @NotNull String quoteCode);
|
||||
InteropQuoteResponseData getQuote(@NonNull String transactionCode, @NonNull String quoteCode);
|
||||
|
||||
@NotNull
|
||||
InteropQuoteResponseData createQuote(@NotNull JsonCommand command);
|
||||
@NonNull
|
||||
InteropQuoteResponseData createQuote(@NonNull JsonCommand command);
|
||||
|
||||
InteropTransferResponseData getTransfer(@NotNull String transactionCode, @NotNull String transferCode);
|
||||
InteropTransferResponseData getTransfer(@NonNull String transactionCode, @NonNull String transferCode);
|
||||
|
||||
@NotNull
|
||||
InteropTransferResponseData prepareTransfer(@NotNull JsonCommand command);
|
||||
@NonNull
|
||||
InteropTransferResponseData prepareTransfer(@NonNull JsonCommand command);
|
||||
|
||||
@NotNull
|
||||
InteropTransferResponseData commitTransfer(@NotNull JsonCommand command);
|
||||
@NonNull
|
||||
InteropTransferResponseData commitTransfer(@NonNull JsonCommand command);
|
||||
|
||||
@NotNull
|
||||
InteropTransferResponseData releaseTransfer(@NotNull JsonCommand command);
|
||||
@NonNull
|
||||
InteropTransferResponseData releaseTransfer(@NonNull JsonCommand command);
|
||||
|
||||
@NotNull
|
||||
InteropKycResponseData getKyc(@NotNull String accountId);
|
||||
@NonNull
|
||||
InteropKycResponseData getKyc(@NonNull String accountId);
|
||||
|
||||
@NotNull
|
||||
String disburseLoan(@NotNull String accountId, String apiRequestBodyAsJson);
|
||||
@NonNull
|
||||
String disburseLoan(@NonNull String accountId, String apiRequestBodyAsJson);
|
||||
|
||||
@NotNull
|
||||
String loanRepayment(@NotNull String accountId, String apiRequestBodyAsJson);
|
||||
@NonNull
|
||||
String loanRepayment(@NonNull String accountId, String apiRequestBodyAsJson);
|
||||
}
|
||||
|
||||
+34
-34
@@ -27,7 +27,6 @@ import static org.apache.fineract.portfolio.savings.SavingsAccountTransactionTyp
|
||||
import static org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction.releaseAmount;
|
||||
|
||||
import jakarta.persistence.PersistenceException;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
@@ -112,6 +111,7 @@ import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.dao.EmptyResultDataAccessException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.orm.jpa.JpaSystemException;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -191,17 +191,17 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Override
|
||||
@Transactional
|
||||
public InteropAccountData getAccountDetails(@NotNull String accountId) {
|
||||
public InteropAccountData getAccountDetails(@NonNull String accountId) {
|
||||
return InteropAccountData.build(validateAndGetSavingAccount(accountId));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Override
|
||||
@Transactional
|
||||
public InteropTransactionsData getAccountTransactions(@NotNull String accountId, boolean debit, boolean credit,
|
||||
public InteropTransactionsData getAccountTransactions(@NonNull String accountId, boolean debit, boolean credit,
|
||||
java.time.LocalDateTime transactionsFrom, java.time.LocalDateTime transactionsTo) {
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(accountId);
|
||||
|
||||
@@ -242,18 +242,18 @@ public class InteropServiceImpl implements InteropService {
|
||||
return interopTransactionsData;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Override
|
||||
@Transactional
|
||||
public InteropIdentifiersResponseData getAccountIdentifiers(@NotNull String accountId) {
|
||||
public InteropIdentifiersResponseData getAccountIdentifiers(@NonNull String accountId) {
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(accountId);
|
||||
return InteropIdentifiersResponseData.build(savingsAccount);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
@Override
|
||||
public InteropIdentifierAccountResponseData getAccountByIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
|
||||
public InteropIdentifierAccountResponseData getAccountByIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
|
||||
String subIdOrType) {
|
||||
InteropIdentifier identifier = findIdentifier(idType, idValue, subIdOrType);
|
||||
if (identifier == null) {
|
||||
@@ -263,11 +263,11 @@ public class InteropServiceImpl implements InteropService {
|
||||
return InteropIdentifierAccountResponseData.build(identifier.getId(), identifier.getAccount().getExternalId().getValue());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
@Override
|
||||
public InteropIdentifierAccountResponseData registerAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
|
||||
String subIdOrType, @NotNull JsonCommand command) {
|
||||
public InteropIdentifierAccountResponseData registerAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
|
||||
String subIdOrType, @NonNull JsonCommand command) {
|
||||
InteropIdentifierRequestData request = dataValidator.validateAndParseCreateIdentifier(idType, idValue, subIdOrType, command);
|
||||
// TODO: error handling
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(request.getAccountId());
|
||||
@@ -291,10 +291,10 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
@Override
|
||||
public InteropIdentifierAccountResponseData deleteAccountIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue,
|
||||
public InteropIdentifierAccountResponseData deleteAccountIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue,
|
||||
String subIdOrType) {
|
||||
InteropIdentifier identifier = findIdentifier(idType, idValue, subIdOrType);
|
||||
if (identifier == null) {
|
||||
@@ -310,15 +310,15 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteropTransactionRequestResponseData getTransactionRequest(@NotNull String transactionCode, @NotNull String requestCode) {
|
||||
public InteropTransactionRequestResponseData getTransactionRequest(@NonNull String transactionCode, @NonNull String requestCode) {
|
||||
// always REJECTED until request info is stored
|
||||
return InteropTransactionRequestResponseData.build(transactionCode, InteropActionState.REJECTED, requestCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
public InteropTransactionRequestResponseData createTransactionRequest(@NotNull JsonCommand command) {
|
||||
public InteropTransactionRequestResponseData createTransactionRequest(@NonNull JsonCommand command) {
|
||||
// only when Payee request transaction from Payer, so here role must be
|
||||
// always Payer
|
||||
InteropTransactionRequestData request = dataValidator.validateAndParseCreateRequest(command);
|
||||
@@ -331,14 +331,14 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteropQuoteResponseData getQuote(@NotNull String transactionCode, @NotNull String quoteCode) {
|
||||
public InteropQuoteResponseData getQuote(@NonNull String transactionCode, @NonNull String quoteCode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
public InteropQuoteResponseData createQuote(@NotNull JsonCommand command) {
|
||||
public InteropQuoteResponseData createQuote(@NonNull JsonCommand command) {
|
||||
InteropQuoteRequestData request = dataValidator.validateAndParseCreateQuote(command);
|
||||
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(request);
|
||||
@@ -361,14 +361,14 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteropTransferResponseData getTransfer(@NotNull String transactionCode, @NotNull String transferCode) {
|
||||
public InteropTransferResponseData getTransfer(@NonNull String transactionCode, @NonNull String transferCode) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
public InteropTransferResponseData prepareTransfer(@NotNull JsonCommand command) {
|
||||
public InteropTransferResponseData prepareTransfer(@NonNull JsonCommand command) {
|
||||
InteropTransferRequestData request = dataValidator.validateAndParseTransferRequest(command);
|
||||
String transferCode = request.getTransferCode();
|
||||
LocalDate transactionDate = DateUtils.getBusinessLocalDate();
|
||||
@@ -409,9 +409,9 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
@NonNull
|
||||
@Transactional
|
||||
public InteropTransferResponseData commitTransfer(@NotNull JsonCommand command) {
|
||||
public InteropTransferResponseData commitTransfer(@NonNull JsonCommand command) {
|
||||
InteropTransferRequestData request = dataValidator.validateAndParseTransferRequest(command);
|
||||
boolean isDebit = request.getTransactionRole().getTransactionType().isDebit();
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(request);
|
||||
@@ -474,7 +474,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public @NotNull InteropTransferResponseData releaseTransfer(@NotNull JsonCommand command) {
|
||||
public @NonNull InteropTransferResponseData releaseTransfer(@NonNull JsonCommand command) {
|
||||
InteropTransferRequestData request = dataValidator.validateAndParseTransferRequest(command);
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(request);
|
||||
|
||||
@@ -504,7 +504,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull InteropKycResponseData getKyc(@NotNull @NotNull String accountId) {
|
||||
public @NonNull InteropKycResponseData getKyc(@NonNull String accountId) {
|
||||
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(accountId);
|
||||
Long clientId = savingsAccount.getClient().getId();
|
||||
@@ -522,7 +522,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String disburseLoan(@NotNull String accountId, String apiRequestBodyAsJson) {
|
||||
public @NonNull String disburseLoan(@NonNull String accountId, String apiRequestBodyAsJson) {
|
||||
Loan loan = validateAndGetLoan(accountId);
|
||||
Long loanId = loan.getId();
|
||||
|
||||
@@ -535,7 +535,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String loanRepayment(@NotNull String accountId, String apiRequestBodyAsJson) {
|
||||
public @NonNull String loanRepayment(@NonNull String accountId, String apiRequestBodyAsJson) {
|
||||
Loan loan = validateAndGetLoan(accountId);
|
||||
Long loanId = loan.getId();
|
||||
|
||||
@@ -563,7 +563,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
return loan;
|
||||
}
|
||||
|
||||
private SavingsAccount validateAndGetSavingAccount(@NotNull InteropRequestData request) {
|
||||
private SavingsAccount validateAndGetSavingAccount(@NonNull InteropRequestData request) {
|
||||
// TODO: error handling
|
||||
SavingsAccount savingsAccount = validateAndGetSavingAccount(request.getAccountId());
|
||||
savingsAccount.setHelpers(savingsAccountTransactionSummaryWrapper, savingsHelper);
|
||||
@@ -583,7 +583,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
return savingsAccount;
|
||||
}
|
||||
|
||||
private BigDecimal calculateTotalTransferAmount(@NotNull InteropTransferRequestData request, @NotNull SavingsAccount savingsAccount) {
|
||||
private BigDecimal calculateTotalTransferAmount(@NonNull InteropTransferRequestData request, @NonNull SavingsAccount savingsAccount) {
|
||||
BigDecimal total = request.getAmount().getAmount();
|
||||
MoneyData requestFee = request.getFspFee();
|
||||
if (requestFee != null) {
|
||||
@@ -604,7 +604,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
return total;
|
||||
}
|
||||
|
||||
private DateTimeFormatter getDateTimeFormatter(@NotNull JsonCommand command) {
|
||||
private DateTimeFormatter getDateTimeFormatter(@NonNull JsonCommand command) {
|
||||
Locale locale = command.extractLocale();
|
||||
if (locale == null) {
|
||||
locale = DEFAULT_LOCALE;
|
||||
@@ -637,7 +637,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
}).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public InteropIdentifier findIdentifier(@NotNull InteropIdentifierType idType, @NotNull String idValue, String subIdOrType) {
|
||||
public InteropIdentifier findIdentifier(@NonNull InteropIdentifierType idType, @NonNull String idValue, String subIdOrType) {
|
||||
return identifierRepository.findOneByTypeAndValueAndSubType(idType, idValue, subIdOrType);
|
||||
}
|
||||
|
||||
@@ -657,7 +657,7 @@ public class InteropServiceImpl implements InteropService {
|
||||
"Unknown data integrity issue with resource: " + realCause.getMessage());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
String getRoutingCode() {
|
||||
return DEFAULT_ROUTING_CODE;
|
||||
}
|
||||
|
||||
+39
-40
@@ -28,7 +28,6 @@ import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionTy
|
||||
import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.ACCRUAL_ADJUSTMENT;
|
||||
import static org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType.INCOME_POSTING;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
@@ -121,7 +120,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void addPeriodicAccruals(@NotNull LocalDate tillDate) throws JobExecutionException {
|
||||
public void addPeriodicAccruals(@NonNull LocalDate tillDate) throws JobExecutionException {
|
||||
List<Loan> loans = loanRepositoryWrapper.findLoansForPeriodicAccrual(AccountingRuleType.ACCRUAL_PERIODIC, tillDate,
|
||||
!isChargeOnDueDate());
|
||||
List<Throwable> errors = new ArrayList<>();
|
||||
@@ -143,7 +142,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void addPeriodicAccruals(@NotNull final LocalDate tillDate, @NotNull final Loan loan) {
|
||||
public void addPeriodicAccruals(@NonNull final LocalDate tillDate, @NonNull final Loan loan) {
|
||||
if (loan.isClosed() || loan.getStatus().isOverpaid()) {
|
||||
return;
|
||||
}
|
||||
@@ -156,7 +155,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void addAccruals(@NotNull LocalDate tillDate) throws JobExecutionException {
|
||||
public void addAccruals(@NonNull LocalDate tillDate) throws JobExecutionException {
|
||||
final boolean chargeOnDueDate = isChargeOnDueDate();
|
||||
List<Loan> loans = loanRepositoryWrapper.findLoansForAddAccrual(AccountingRuleType.ACCRUAL_PERIODIC, tillDate, !chargeOnDueDate);
|
||||
|
||||
@@ -203,7 +202,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
* reschedule
|
||||
*/
|
||||
@Override
|
||||
public void reprocessExistingAccruals(@NotNull final Loan loan, final boolean addEvent) {
|
||||
public void reprocessExistingAccruals(@NonNull final Loan loan, final boolean addEvent) {
|
||||
List<LoanTransaction> accrualTransactions = retrieveListOfAccrualTransactions(loan);
|
||||
if (!accrualTransactions.isEmpty()) {
|
||||
if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()) {
|
||||
@@ -219,7 +218,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void processAccrualsOnInterestRecalculation(@NotNull Loan loan, boolean isInterestRecalculationEnabled, boolean addJournal) {
|
||||
public void processAccrualsOnInterestRecalculation(@NonNull Loan loan, boolean isInterestRecalculationEnabled, boolean addJournal) {
|
||||
if (isProgressiveAccrual(loan)) {
|
||||
return;
|
||||
}
|
||||
@@ -254,7 +253,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
* method calculates accruals for loan with interest recalculation and compounding to be posted as income
|
||||
*/
|
||||
@Override
|
||||
public void processIncomePostingAndAccruals(@NotNull final Loan loan, final boolean addEvent) {
|
||||
public void processIncomePostingAndAccruals(@NonNull final Loan loan, final boolean addEvent) {
|
||||
if (isProgressiveAccrual(loan)) {
|
||||
return;
|
||||
}
|
||||
@@ -298,8 +297,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
* method calculates accruals for loan on loan fore closure
|
||||
*/
|
||||
@Override
|
||||
public void processAccrualsOnLoanForeClosure(@NotNull Loan loan, @NotNull LocalDate foreClosureDate,
|
||||
@NotNull List<LoanTransaction> newAccrualTransactions) {
|
||||
public void processAccrualsOnLoanForeClosure(@NonNull Loan loan, @NonNull LocalDate foreClosureDate,
|
||||
@NonNull List<LoanTransaction> newAccrualTransactions) {
|
||||
// TODO implement progressive accrual case
|
||||
if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()
|
||||
&& (loan.getAccruedTill() == null || !DateUtils.isEqual(foreClosureDate, loan.getAccruedTill()))) {
|
||||
@@ -323,7 +322,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
|
||||
// PeriodicAccruals
|
||||
|
||||
private void addAccruals(@NotNull final Loan loan, @NotNull LocalDate tillDate, final boolean periodic, final boolean isFinal,
|
||||
private void addAccruals(@NonNull final Loan loan, @NonNull LocalDate tillDate, final boolean periodic, final boolean isFinal,
|
||||
final boolean addJournal, final boolean chargeOnDueDate) {
|
||||
if ((!isFinal && !loan.isOpen()) || loan.isNpa() || loan.isChargedOff() || !loan.isPeriodicAccrualAccountingEnabledOnLoanProduct()
|
||||
|| loan.isContractTermination()) {
|
||||
@@ -436,7 +435,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
return loan.getLoanCharges(t -> t.isActive() && DateUtils.isEqual(t.getDueDate(), accrualDate)).isEmpty();
|
||||
}
|
||||
|
||||
private AccrualPeriodsData calculateAccrualAmounts(@NotNull final Loan loan, @NotNull final LocalDate tillDate, final boolean periodic,
|
||||
private AccrualPeriodsData calculateAccrualAmounts(@NonNull final Loan loan, @NonNull final LocalDate tillDate, final boolean periodic,
|
||||
final boolean isFinal, final boolean chargeOnDueDate) {
|
||||
final LoanProductRelatedDetail productDetail = loan.getLoanProductRelatedDetail();
|
||||
final MonetaryCurrency currency = productDetail.getCurrency();
|
||||
@@ -455,8 +454,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
return accrualPeriods;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<LoanRepaymentScheduleInstallment> getInstallmentsToAccrue(@NotNull final Loan loan, @NotNull final LocalDate tillDate,
|
||||
@NonNull
|
||||
private List<LoanRepaymentScheduleInstallment> getInstallmentsToAccrue(@NonNull final Loan loan, @NonNull final LocalDate tillDate,
|
||||
final boolean periodic, final boolean chargeOnDueDate) {
|
||||
final LocalDate organisationStartDate = this.configurationDomainService.retrieveOrganisationStartDate();
|
||||
final int firstInstallmentNumber = fetchFirstNormalInstallmentNumber(loan.getRepaymentScheduleInstallments());
|
||||
@@ -466,9 +465,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
&& !isAfterPeriod(organisationStartDate, i));
|
||||
}
|
||||
|
||||
private void addInterestAccrual(@NotNull final Loan loan, @NotNull final LocalDate tillDate,
|
||||
final LoanScheduleGenerator scheduleGenerator, @NotNull final LoanRepaymentScheduleInstallment installment,
|
||||
@NotNull final AccrualPeriodsData accrualPeriods) {
|
||||
private void addInterestAccrual(@NonNull final Loan loan, @NonNull final LocalDate tillDate,
|
||||
final LoanScheduleGenerator scheduleGenerator, @NonNull final LoanRepaymentScheduleInstallment installment,
|
||||
@NonNull final AccrualPeriodsData accrualPeriods) {
|
||||
if (installment.isAdditional() || installment.isReAged()) {
|
||||
return;
|
||||
}
|
||||
@@ -506,9 +505,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
period.setInterestAccrued(accrued);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private BigDecimal calcInterestTransactionWaivedAmount(@NotNull LoanRepaymentScheduleInstallment installment,
|
||||
@NotNull LocalDate tillDate) {
|
||||
@NonNull
|
||||
private BigDecimal calcInterestTransactionWaivedAmount(@NonNull LoanRepaymentScheduleInstallment installment,
|
||||
@NonNull LocalDate tillDate) {
|
||||
Predicate<LoanTransaction> transactionPredicate = t -> !t.isReversed() && t.isInterestWaiver()
|
||||
&& !DateUtils.isAfter(t.getTransactionDate(), tillDate);
|
||||
return installment.getLoanTransactionToRepaymentScheduleMappings().stream()
|
||||
@@ -516,9 +515,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
.map(LoanTransactionToRepaymentScheduleMapping::getInterestPortion).reduce(BigDecimal.ZERO, MathUtil::add);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private BigDecimal calcInterestUnrecognizedWaivedAmount(@NotNull LoanRepaymentScheduleInstallment installment,
|
||||
@NotNull AccrualPeriodsData accrualPeriods, @NotNull LocalDate tillDate) {
|
||||
@NonNull
|
||||
private BigDecimal calcInterestUnrecognizedWaivedAmount(@NonNull LoanRepaymentScheduleInstallment installment,
|
||||
@NonNull AccrualPeriodsData accrualPeriods, @NonNull LocalDate tillDate) {
|
||||
// unrecognized amount of the transaction is not mapped to installments
|
||||
LocalDate dueDate = installment.getDueDate();
|
||||
LocalDate toDate = DateUtils.isBefore(dueDate, tillDate) ? dueDate : tillDate;
|
||||
@@ -532,9 +531,9 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
return MathUtil.min(installment.getInterestWaived(), MathUtil.subtractToZero(totalUnrecognized, prevUnrecognized), false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private BigDecimal calcInterestAccruedAmount(@NotNull LoanRepaymentScheduleInstallment installment,
|
||||
@NotNull AccrualPeriodsData accrualPeriods, @NotNull LocalDate tillDate) {
|
||||
@NonNull
|
||||
private BigDecimal calcInterestAccruedAmount(@NonNull LoanRepaymentScheduleInstallment installment,
|
||||
@NonNull AccrualPeriodsData accrualPeriods, @NonNull LocalDate tillDate) {
|
||||
Loan loan = installment.getLoan();
|
||||
if (isProgressiveAccrual(loan)) {
|
||||
BigDecimal totalAccrued = loanTransactionRepository.findTotalInterestAccruedAmount(loan);
|
||||
@@ -550,8 +549,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
}
|
||||
}
|
||||
|
||||
private void addChargeAccrual(@NotNull final Loan loan, @NotNull final LocalDate tillDate, final boolean chargeOnDueDate,
|
||||
@NotNull final LoanRepaymentScheduleInstallment installment, @NotNull final AccrualPeriodsData accrualPeriods) {
|
||||
private void addChargeAccrual(@NonNull final Loan loan, @NonNull final LocalDate tillDate, final boolean chargeOnDueDate,
|
||||
@NonNull final LoanRepaymentScheduleInstallment installment, @NonNull final AccrualPeriodsData accrualPeriods) {
|
||||
final AccrualPeriodData period = accrualPeriods.getPeriodByInstallmentNumber(installment.getInstallmentNumber());
|
||||
final LocalDate dueDate = installment.getDueDate();
|
||||
final Collection<LoanCharge> loanCharges = loan
|
||||
@@ -564,8 +563,8 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
}
|
||||
}
|
||||
|
||||
private void addChargeAccrual(@NotNull final LoanCharge loanCharge, @NotNull final LocalDate tillDate, final boolean chargeOnDueDate,
|
||||
@NotNull final LoanRepaymentScheduleInstallment installment, @NotNull final AccrualPeriodsData accrualPeriods) {
|
||||
private void addChargeAccrual(@NonNull final LoanCharge loanCharge, @NonNull final LocalDate tillDate, final boolean chargeOnDueDate,
|
||||
@NonNull final LoanRepaymentScheduleInstallment installment, @NonNull final AccrualPeriodsData accrualPeriods) {
|
||||
final MonetaryCurrency currency = accrualPeriods.getCurrency();
|
||||
final Integer firstInstallmentNumber = accrualPeriods.getFirstInstallmentNumber();
|
||||
final boolean installmentFee = loanCharge.isInstalmentFee();
|
||||
@@ -617,16 +616,16 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
duePeriod.addCharge(chargeData);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private BigDecimal calcChargeWaivedAmount(@NotNull final Collection<LoanChargePaidBy> loanChargePaidBy,
|
||||
@NotNull final LocalDate tillDate) {
|
||||
@NonNull
|
||||
private BigDecimal calcChargeWaivedAmount(@NonNull final Collection<LoanChargePaidBy> loanChargePaidBy,
|
||||
@NonNull final LocalDate tillDate) {
|
||||
return loanChargePaidBy.stream().filter(pb -> {
|
||||
final LoanTransaction t = pb.getLoanTransaction();
|
||||
return !t.isReversed() && t.isWaiveCharge() && !DateUtils.isAfter(t.getTransactionDate(), tillDate);
|
||||
}).map(LoanChargePaidBy::getAmount).reduce(BigDecimal.ZERO, MathUtil::add);
|
||||
}
|
||||
|
||||
private boolean isChargeDue(@NotNull final LoanCharge loanCharge, @NotNull final LocalDate tillDate, boolean chargeOnDueDate,
|
||||
private boolean isChargeDue(@NonNull final LoanCharge loanCharge, @NonNull final LocalDate tillDate, boolean chargeOnDueDate,
|
||||
final LoanRepaymentScheduleInstallment installment, final boolean isFirstPeriod) {
|
||||
final LocalDate fromDate = installment.getFromDate();
|
||||
final LocalDate dueDate = installment.getDueDate();
|
||||
@@ -636,7 +635,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
: isInPeriod(loanCharge.getSubmittedOnDate(), fromDate, toDate, isFirstPeriod);
|
||||
}
|
||||
|
||||
private LoanTransaction createOrMergeAccrualTransaction(@NotNull final Loan loan, LoanTransaction transaction,
|
||||
private LoanTransaction createOrMergeAccrualTransaction(@NonNull final Loan loan, LoanTransaction transaction,
|
||||
final LocalDate transactionDate, final AccrualPeriodData accrualPeriod, final List<LoanTransaction> accrualTransactions,
|
||||
final Money interest, final Money fee, final Money penalty, final boolean adjustment) {
|
||||
if (transaction == null) {
|
||||
@@ -650,7 +649,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
return transaction;
|
||||
}
|
||||
|
||||
private LoanTransaction addAccrualTransaction(@NotNull Loan loan, @NotNull LocalDate transactionDate, AccrualPeriodData accrualPeriod,
|
||||
private LoanTransaction addAccrualTransaction(@NonNull Loan loan, @NonNull LocalDate transactionDate, AccrualPeriodData accrualPeriod,
|
||||
Money interestPortion, Money feePortion, Money penaltyPortion, boolean adjustment) {
|
||||
interestPortion = MathUtil.negativeToZero(interestPortion);
|
||||
BigDecimal interest = MathUtil.toBigDecimal(interestPortion);
|
||||
@@ -673,7 +672,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
return savedTransaction;
|
||||
}
|
||||
|
||||
private void mergeAccrualTransaction(@NotNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
|
||||
private void mergeAccrualTransaction(@NonNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
|
||||
Money interestPortion, Money feePortion, Money penaltyPortion, final boolean adjustment) {
|
||||
interestPortion = MathUtil.negativeToZero(interestPortion);
|
||||
feePortion = MathUtil.negativeToZero(feePortion);
|
||||
@@ -687,7 +686,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
addTransactionMappings(transaction, accrualPeriod, adjustment);
|
||||
}
|
||||
|
||||
private void addTransactionMappings(@NotNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
|
||||
private void addTransactionMappings(@NonNull final LoanTransaction transaction, final AccrualPeriodData accrualPeriod,
|
||||
final boolean adjustment) {
|
||||
if (accrualPeriod == null) {
|
||||
return;
|
||||
@@ -700,7 +699,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
addPaidByMappings(transaction, installment, accrualPeriod, adjustment);
|
||||
}
|
||||
|
||||
private void addPaidByMappings(@NotNull final LoanTransaction transaction, final LoanRepaymentScheduleInstallment installment,
|
||||
private void addPaidByMappings(@NonNull final LoanTransaction transaction, final LoanRepaymentScheduleInstallment installment,
|
||||
final AccrualPeriodData accrualPeriod, final boolean adjustment) {
|
||||
final Loan loan = installment.getLoan();
|
||||
final MonetaryCurrency currency = loan.getCurrency();
|
||||
@@ -725,7 +724,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFullPeriod(@NotNull final LocalDate tillDate, @NotNull final LoanRepaymentScheduleInstallment installment) {
|
||||
private boolean isFullPeriod(@NonNull final LocalDate tillDate, @NonNull final LoanRepaymentScheduleInstallment installment) {
|
||||
return isAfterPeriod(tillDate, installment) || DateUtils.isEqual(tillDate, installment.getDueDate());
|
||||
}
|
||||
|
||||
@@ -1280,7 +1279,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
};
|
||||
}
|
||||
|
||||
public boolean isProgressiveAccrual(@NotNull Loan loan) {
|
||||
public boolean isProgressiveAccrual(@NonNull Loan loan) {
|
||||
return loan.isProgressiveSchedule();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-4
@@ -42,7 +42,6 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationT
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository;
|
||||
import org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository;
|
||||
import org.apache.fineract.portfolio.loanaccount.util.CapitalizedIncomeAmortizationUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -60,7 +59,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void processCapitalizedIncomeAmortizationOnLoanClosure(@NotNull final Loan loan, final boolean addJournal) {
|
||||
public void processCapitalizedIncomeAmortizationOnLoanClosure(@NonNull final Loan loan, final boolean addJournal) {
|
||||
final LocalDate transactionDate = getFinalCapitalizedIncomeAmortizationTransactionDate(loan);
|
||||
final Optional<LoanTransaction> amortizationTransaction = createCapitalizedIncomeAmortizationTransaction(loan, transactionDate,
|
||||
false, null);
|
||||
@@ -80,7 +79,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void processCapitalizedIncomeAmortizationOnLoanChargeOff(@NotNull final Loan loan,
|
||||
public void processCapitalizedIncomeAmortizationOnLoanChargeOff(@NonNull final Loan loan,
|
||||
@NonNull final LoanTransaction chargeOffTransaction) {
|
||||
LocalDate transactionDate = loan.getChargedOffOnDate();
|
||||
if (transactionDate == null) {
|
||||
@@ -148,7 +147,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void processCapitalizedIncomeAmortizationOnLoanUndoChargeOff(@NotNull final LoanTransaction loanTransaction) {
|
||||
public void processCapitalizedIncomeAmortizationOnLoanUndoChargeOff(@NonNull final LoanTransaction loanTransaction) {
|
||||
final Loan loan = loanTransaction.getLoan();
|
||||
|
||||
loan.getLoanTransactions().stream().filter(LoanTransaction::isCapitalizedIncomeAmortization)
|
||||
|
||||
+3
-3
@@ -25,7 +25,6 @@ import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
@@ -56,6 +55,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepositor
|
||||
import org.apache.fineract.portfolio.loanaccount.serialization.LoanChargeValidator;
|
||||
import org.apache.fineract.portfolio.loanaccount.serialization.LoanDisbursementValidator;
|
||||
import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
|
||||
import org.springframework.lang.NonNull;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LoanDisbursementService {
|
||||
@@ -117,8 +117,8 @@ public class LoanDisbursementService {
|
||||
}
|
||||
}
|
||||
|
||||
public Money adjustDisburseAmount(final Loan loan, @NotNull final JsonCommand command,
|
||||
@NotNull final LocalDate actualDisbursementDate) {
|
||||
public Money adjustDisburseAmount(final Loan loan, @NonNull final JsonCommand command,
|
||||
@NonNull final LocalDate actualDisbursementDate) {
|
||||
Money disburseAmount = loan.getLoanRepaymentScheduleDetail().getPrincipal().zero();
|
||||
final BigDecimal principalDisbursed = command.bigDecimalValueOfParameterNamed(LoanApiConstants.principalDisbursedParameterName);
|
||||
if (loan.getActualDisbursementDate() == null || DateUtils.isBefore(actualDisbursementDate, loan.getActualDisbursementDate())) {
|
||||
|
||||
+3
-3
@@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.apache.fineract.portfolio.loanaccount.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Map;
|
||||
@@ -36,6 +35,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType;
|
||||
import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
|
||||
import org.apache.fineract.portfolio.paymentdetail.service.PaymentDetailWritePlatformService;
|
||||
import org.springframework.lang.NonNull;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LoanTransactionAssembler {
|
||||
@@ -69,8 +69,8 @@ public class LoanTransactionAssembler {
|
||||
txnExternalId, null);
|
||||
}
|
||||
|
||||
public LoanTransaction assembleAccrualActivityTransaction(@NotNull Loan loan, @NotNull LoanRepaymentScheduleInstallment installment,
|
||||
@NotNull LocalDate transactionDate) {
|
||||
public LoanTransaction assembleAccrualActivityTransaction(@NonNull Loan loan, @NonNull LoanRepaymentScheduleInstallment installment,
|
||||
@NonNull LocalDate transactionDate) {
|
||||
ExternalId externalId = externalIdFactory.create();
|
||||
|
||||
BigDecimal interestPortion = installment.getInterestCharged();
|
||||
|
||||
+2
-2
@@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.apache.fineract.portfolio.savings.service;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.MathContext;
|
||||
import java.time.LocalDate;
|
||||
@@ -48,6 +47,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsHelper;
|
||||
import org.apache.fineract.portfolio.savings.domain.interest.PostingPeriod;
|
||||
import org.apache.fineract.portfolio.tax.data.TaxComponentData;
|
||||
import org.apache.fineract.portfolio.tax.service.TaxUtils;
|
||||
import org.springframework.lang.NonNull;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountInterestPostingService {
|
||||
@@ -346,7 +346,7 @@ public class SavingsAccountInterestPostingServiceImpl implements SavingsAccountI
|
||||
return savingsAccountData.getSavingsAccountTransactionData();
|
||||
}
|
||||
|
||||
private SavingsAccountTransactionData retrieveLastTransaction(@NotNull SavingsAccountData savingsAccountData) {
|
||||
private SavingsAccountTransactionData retrieveLastTransaction(@NonNull SavingsAccountData savingsAccountData) {
|
||||
List<SavingsAccountTransactionData> transactions = savingsAccountData.getSavingsAccountTransactionData();
|
||||
if (transactions == null || transactions.isEmpty()) {
|
||||
return savingsAccountData.getLastSavingsAccountTransaction(); // what is this?
|
||||
|
||||
+8
-8
@@ -22,7 +22,6 @@ import static org.apache.fineract.infrastructure.core.domain.AuditableFieldsCons
|
||||
import static org.apache.fineract.portfolio.savings.SavingsApiConstants.SAVINGS_ACCOUNT_RESOURCE_NAME;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -50,13 +49,14 @@ import org.apache.fineract.portfolio.search.data.ColumnFilterData;
|
||||
import org.apache.fineract.portfolio.search.data.TableQueryData;
|
||||
import org.apache.fineract.portfolio.search.data.TransactionSearchRequest;
|
||||
import org.apache.fineract.portfolio.search.service.SearchUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.support.PageableExecutionUtils;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.support.rowset.SqlRowSet;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@@ -72,8 +72,8 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
|
||||
private final SearchUtil searchUtil;
|
||||
|
||||
@Override
|
||||
public Page<SavingsAccountTransactionData> searchTransactions(@NotNull Long savingsId,
|
||||
@NotNull TransactionSearchRequest searchParameters) {
|
||||
public Page<SavingsAccountTransactionData> searchTransactions(@NonNull Long savingsId,
|
||||
@NonNull TransactionSearchRequest searchParameters) {
|
||||
context.authenticatedUser().validateHasReadPermission(SAVINGS_ACCOUNT_RESOURCE_NAME);
|
||||
|
||||
String apptable = EntityTables.SAVINGS_TRANSACTION.getApptableName();
|
||||
@@ -130,8 +130,8 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
|
||||
return PageableExecutionUtils.getPage(results, pageable, () -> totalElements);
|
||||
}
|
||||
|
||||
private static void addFromToFilter(@NotNull String column, String fromValue, String toValue,
|
||||
@NotNull List<ColumnFilterData> columnFilters) {
|
||||
private static void addFromToFilter(@NonNull String column, String fromValue, String toValue,
|
||||
@NonNull List<ColumnFilterData> columnFilters) {
|
||||
if (fromValue != null) {
|
||||
columnFilters.add(toValue == null ? ColumnFilterData.create(column, SqlOperator.GTE, fromValue)
|
||||
: ColumnFilterData.btw(column, fromValue, toValue));
|
||||
@@ -141,7 +141,7 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Boolean addTransactionTypesFilter(@NotNull TransactionSearchRequest searchParameters,
|
||||
private static Boolean addTransactionTypesFilter(@NonNull TransactionSearchRequest searchParameters,
|
||||
List<ColumnFilterData> columnFilters) {
|
||||
Predicate<SavingsAccountTransactionType> filter = null;
|
||||
Boolean credit = searchParameters.getCredit();
|
||||
@@ -178,7 +178,7 @@ public class SavingsAccountTransactionsSearchServiceImpl implements SavingsAccou
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<JsonObject> queryAdvanced(@NotNull Long savingsId, @NotNull PagedLocalRequest<AdvancedQueryRequest> pagedRequest) {
|
||||
public Page<JsonObject> queryAdvanced(@NonNull Long savingsId, @NonNull PagedLocalRequest<AdvancedQueryRequest> pagedRequest) {
|
||||
context.authenticatedUser().validateHasReadPermission(SAVINGS_ACCOUNT_RESOURCE_NAME);
|
||||
String apptable = EntityTables.SAVINGS_TRANSACTION.getApptableName();
|
||||
|
||||
|
||||
+2
-2
@@ -57,7 +57,6 @@ import org.apache.fineract.infrastructure.core.exception.IdempotentCommandProces
|
||||
import org.apache.fineract.infrastructure.core.serialization.ToApiJsonSerializer;
|
||||
import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
|
||||
import org.apache.fineract.useradministration.domain.AppUser;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -67,6 +66,7 @@ import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.Spy;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
@@ -454,7 +454,7 @@ public class SynchronousCommandProcessingServiceTest {
|
||||
verify(commandSourceService).generateErrorInfo(runtimeException);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@NonNull
|
||||
private static CommandWrapper getCommandWrapper() {
|
||||
CommandWrapper commandWrapper = Mockito.mock(CommandWrapper.class);
|
||||
when(commandWrapper.isDatatableResource()).thenReturn(false);
|
||||
|
||||
+1
-1
@@ -46,12 +46,12 @@ import org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction;
|
||||
import org.apache.fineract.portfolio.delinquency.helper.DelinquencyEffectivePauseHelper;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.function.Executable;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
class DelinquencyActionParseAndValidatorTest {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user