MIFOSX-1245,MIFOSX-1244,MIFOSX-1243,MIFOSX-1242,MIFOSX-1241,MIFOSX-1240

This commit is contained in:
Madhukar
2014-06-02 11:05:55 +05:30
parent 761c3b1e8d
commit 95e78699d6
8 changed files with 198 additions and 33 deletions
@@ -16,7 +16,6 @@ public final class AuditData {
private final Long id;
@SuppressWarnings("unused")
private final String actionName;
@SuppressWarnings("unused")
private final String entityName;
@SuppressWarnings("unused")
private final Long resourceId;
@@ -84,4 +83,8 @@ public final class AuditData {
public String getCommandAsJson() {
return this.commandAsJson;
}
public String getEntityName() {
return this.entityName;
}
}
@@ -38,6 +38,12 @@ import org.mifosplatform.portfolio.client.service.ClientReadPlatformService;
import org.mifosplatform.portfolio.loanproduct.data.LoanProductData;
import org.mifosplatform.portfolio.loanproduct.service.LoanEnumerations;
import org.mifosplatform.portfolio.loanproduct.service.LoanProductReadPlatformService;
import org.mifosplatform.portfolio.savings.DepositAccountType;
import org.mifosplatform.portfolio.savings.data.DepositProductData;
import org.mifosplatform.portfolio.savings.data.SavingsProductData;
import org.mifosplatform.portfolio.savings.service.DepositProductReadPlatformService;
import org.mifosplatform.portfolio.savings.service.SavingsEnumerations;
import org.mifosplatform.portfolio.savings.service.SavingsProductReadPlatformService;
import org.mifosplatform.useradministration.data.AppUserData;
import org.mifosplatform.useradministration.domain.AppUser;
import org.mifosplatform.useradministration.service.AppUserReadPlatformService;
@@ -70,13 +76,17 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
private final StaffReadPlatformService staffReadPlatformService;
private final PaginationHelper<AuditData> paginationHelper = new PaginationHelper<AuditData>();
private final PaginationParametersDataValidator paginationParametersDataValidator;
private final SavingsProductReadPlatformService savingsProductReadPlatformService;
private final DepositProductReadPlatformService depositProductReadPlatformService;
@Autowired
public AuditReadPlatformServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
final FromJsonHelper fromApiJsonHelper, final AppUserReadPlatformService appUserReadPlatformService,
final OfficeReadPlatformService officeReadPlatformService, final ClientReadPlatformService clientReadPlatformService,
final LoanProductReadPlatformService loanProductReadPlatformService, final StaffReadPlatformService staffReadPlatformService,
final PaginationParametersDataValidator paginationParametersDataValidator) {
final PaginationParametersDataValidator paginationParametersDataValidator,
final SavingsProductReadPlatformService savingsProductReadPlatformService,
final DepositProductReadPlatformService depositProductReadPlatformService) {
this.context = context;
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.fromApiJsonHelper = fromApiJsonHelper;
@@ -86,6 +96,8 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
this.loanProductReadPlatformService = loanProductReadPlatformService;
this.staffReadPlatformService = staffReadPlatformService;
this.paginationParametersDataValidator = paginationParametersDataValidator;
this.savingsProductReadPlatformService = savingsProductReadPlatformService;
this.depositProductReadPlatformService = depositProductReadPlatformService;
}
private static final class AuditMapper implements RowMapper<AuditData> {
@@ -308,43 +320,52 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
final String productIdStr = auditObject.get("productId").getAsString();
if (StringUtils.isNotBlank(productIdStr)) {
productId = Long.valueOf(productIdStr);
final LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
commandAsJsonMap.put("productName", loanProduct.getName());
if (auditResult.getEntityName().equalsIgnoreCase("LOAN")) {
final LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
commandAsJsonMap.put("productName", loanProduct.getName());
} else if (auditResult.getEntityName().equalsIgnoreCase("SAVINGSACCOUNT")) {
final SavingsProductData savingProduct = this.savingsProductReadPlatformService.retrieveOne(productId);
commandAsJsonMap.put("productName", savingProduct.getName());
} else if (auditResult.getEntityName().equalsIgnoreCase("RECURRINGDEPOSITACCOUNT")) {
final DepositProductData depositProduct = this.depositProductReadPlatformService.retrieveOne(
DepositAccountType.RECURRING_DEPOSIT, productId);
commandAsJsonMap.put("productName", depositProduct.getName());
} else if (auditResult.getEntityName().equalsIgnoreCase("FIXEDDEPOSITACCOUNT")) {
final DepositProductData depositProduct = this.depositProductReadPlatformService.retrieveOne(
DepositAccountType.FIXED_DEPOSIT, productId);
commandAsJsonMap.put("productName", depositProduct.getName());
} else {
commandAsJsonMap.put("productName", "");
}
} else {
commandAsJsonMap.put("productName", "");
}
}
if (commandAsJsonMap.containsKey("loanOfficerId")) {
commandAsJsonMap.remove("loanOfficerId");
if (commandAsJsonMap.containsKey("loanOfficerId") || commandAsJsonMap.containsKey("fieldOfficerId")
|| commandAsJsonMap.containsKey("staffId")) {
String staffIdStr = "";
String staffNameParamName = "";
Long loanOfficerId = null;
final String loanOfficerIdStr = auditObject.get("loanOfficerId").getAsString();
if (StringUtils.isNotBlank(loanOfficerIdStr)) {
loanOfficerId = Long.valueOf(loanOfficerIdStr);
final StaffData officer = this.staffReadPlatformService.retrieveStaff(loanOfficerId);
commandAsJsonMap.put("loanOfficerName", officer.getDisplayName());
} else {
commandAsJsonMap.put("loanOfficerName", "");
if (commandAsJsonMap.containsKey("loanOfficerId")) {
commandAsJsonMap.remove("loanOfficerId");
staffIdStr = auditObject.get("loanOfficerId").getAsString();
staffNameParamName = "loanOfficerName";
} else if (commandAsJsonMap.containsKey("fieldOfficerId")) {
commandAsJsonMap.remove("fieldOfficerId");
staffIdStr = auditObject.get("fieldOfficerId").getAsString();
staffNameParamName = "fieldOfficerName";
} else if (commandAsJsonMap.containsKey("staffId")) {
commandAsJsonMap.remove("staffId");
staffIdStr = auditObject.get("staffId").getAsString();
staffNameParamName = "staffName";
}
replaceStaffIdWithStaffName(staffIdStr, staffNameParamName, commandAsJsonMap);
}
final String[] enumTypes = { "loanTermFrequencyType", "repaymentFrequencyType", "amortizationType", "interestType",
"interestCalculationPeriodType", "interestRateFrequencyType" };
for (final String typeName : enumTypes) {
if (commandAsJsonMap.containsKey(typeName)) {
commandAsJsonMap.remove(typeName);
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
if (enumTypeId != null) {
final String code = LoanEnumerations.loanEnumueration(typeName, enumTypeId).getCode();
if (code != null) {
commandAsJsonMap.put(typeName, code);
}
}
}
}
updateEnumerations(commandAsJsonMap, auditObject, auditResult.getEntityName());
final String newAuditAsJson = this.fromApiJsonHelper.toJson(commandAsJsonMap);
auditResult.setCommandAsJson(newAuditAsJson);
@@ -352,6 +373,64 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
return auditResult;
}
private void updateEnumerations(Map<String, Object> commandAsJsonMap, JsonObject auditObject, String entityName) {
if (entityName.equalsIgnoreCase("LOAN") || entityName.equalsIgnoreCase("LOANPRODUCT")) {
final String[] enumTypes = { "loanTermFrequencyType", "termFrequencyType", "repaymentFrequencyType", "amortizationType",
"interestType", "interestCalculationPeriodType", "interestRateFrequencyType", "loanType", "accountingRule" };
for (final String typeName : enumTypes) {
if (commandAsJsonMap.containsKey(typeName)) {
commandAsJsonMap.remove(typeName);
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
if (enumTypeId != null) {
final String code = LoanEnumerations.loanEnumueration(typeName, enumTypeId).getValue();
if (code != null) {
commandAsJsonMap.put(typeName, code);
}
}
}
}
} else if (entityName.equalsIgnoreCase("SAVINGSPRODUCT") || entityName.equalsIgnoreCase("SAVINGSACCOUNT")
|| entityName.equalsIgnoreCase("RECURRINGDEPOSITPRODUCT") || entityName.equalsIgnoreCase("RECURRINGDEPOSITACCOUNT")
|| entityName.equalsIgnoreCase("FIXEDDEPOSITPRODUCT") || entityName.equalsIgnoreCase("FIXEDDEPOSITACCOUNT")) {
final String[] enumTypes = { "interestCompoundingPeriodType", "interestPostingPeriodType", "interestCalculationType",
"lockinPeriodFrequencyType", "minDepositTermTypeId", "maxDepositTermTypeId", "inMultiplesOfDepositTermTypeId",
"depositPeriodFrequencyId", "accountingRule", "interestCalculationDaysInYearType", "preClosurePenalInterestOnTypeId",
"recurringFrequencyType" };
for (final String typeName : enumTypes) {
if (commandAsJsonMap.containsKey(typeName)) {
commandAsJsonMap.remove(typeName);
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
if (enumTypeId != null) {
final String code = SavingsEnumerations.savingEnumueration(typeName, enumTypeId).getValue();
if (code != null) {
commandAsJsonMap.put(typeName, code);
}
}
}
}
}
}
private void replaceStaffIdWithStaffName(final String staffIdStr, final String staffNameParamName, Map<String, Object> commandAsJsonMap) {
Long staffId = null;
if (StringUtils.isNotBlank(staffIdStr)) {
staffId = Long.valueOf(staffIdStr);
final StaffData officer = this.staffReadPlatformService.retrieveStaff(staffId);
commandAsJsonMap.put(staffNameParamName, officer.getDisplayName());
} else {
commandAsJsonMap.put(staffNameParamName, "");
}
}
@Override
public AuditSearchData retrieveSearchTemplate(final String useType) {
@@ -429,6 +429,11 @@ public final class Client extends AbstractPersistable<Long> {
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.staffIdParamName);
actualChanges.put(ClientApiConstants.staffIdParamName, newValue);
}
if (command.isChangeInLongParameterNamed(ClientApiConstants.genderIdParamName, genderId())) {
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.genderIdParamName);
actualChanges.put(ClientApiConstants.genderIdParamName, newValue);
}
if (command.isChangeInLongParameterNamed(ClientApiConstants.savingsProductIdParamName, savingsProductId())) {
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.savingsProductIdParamName);
@@ -734,4 +739,16 @@ public final class Client extends AbstractPersistable<Long> {
public CodeValue gender() {
return this.gender;
}
private Long genderId() {
Long genderId = null;
if (this.gender != null) {
genderId = this.gender.getId();
}
return genderId;
}
public void updateGender(final CodeValue gender) {
this.gender = gender;
}
}
@@ -260,6 +260,16 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
}
clientForUpdate.updateStaff(newStaff);
}
if (changes.containsKey(ClientApiConstants.genderIdParamName)) {
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.genderIdParamName);
CodeValue gender = null;
if (newValue != null) {
gender = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.GENDER, newValue);
}
clientForUpdate.updateGender(gender);
}
if (changes.containsKey(ClientApiConstants.savingsProductIdParamName)) {
if (clientForUpdate.isActive()) { throw new ClientActiveForUpdateException(clientId,
@@ -5,6 +5,7 @@
*/
package org.mifosplatform.portfolio.loanproduct.service;
import org.mifosplatform.accounting.common.AccountingEnumerations;
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
import org.mifosplatform.portfolio.accountdetails.service.AccountEnumerations;
import org.mifosplatform.portfolio.common.domain.PeriodFrequencyType;
@@ -29,7 +30,7 @@ public class LoanEnumerations {
public static final String INTEREST_TYPE = "interestType";
public static final String INTEREST_CALCULATION_PERIOD_TYPE = "interestCalculationPeriodType";
public static final String PAYMENT_TYPE = "paymentType";
public static final String ACCOUNTING_RULE_TYPE = "accountingRuleType";
public static final String ACCOUNTING_RULE_TYPE = "accountingRule";
public static final String LOAN_TYPE = "loanType";
public static EnumOptionData loanEnumueration(final String typeName, final int id) {
@@ -47,7 +48,11 @@ public class LoanEnumerations {
return interestType(id);
} else if (typeName.equals(INTEREST_CALCULATION_PERIOD_TYPE)) {
return interestCalculationPeriodType(id);
} else if (typeName.equals(LOAN_TYPE)) { return AccountEnumerations.loanType(id); }
} else if (typeName.equals(ACCOUNTING_RULE_TYPE)) {
return AccountingEnumerations.accountingRuleType(id);
} else if (typeName.equals(LOAN_TYPE)) {
return AccountEnumerations.loanType(id);
}
return null;
}
@@ -361,4 +361,8 @@ public class DepositProductData {
public int accountingRuleTypeId() {
return this.accountingRule.getId().intValue();
}
public String getName() {
return this.name;
}
}
@@ -341,4 +341,8 @@ public class SavingsProductData {
public int hashCode() {
return this.id.hashCode();
}
public String getName() {
return this.name;
}
}
@@ -8,6 +8,7 @@ package org.mifosplatform.portfolio.savings.service;
import java.util.ArrayList;
import java.util.List;
import org.mifosplatform.accounting.common.AccountingEnumerations;
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
import org.mifosplatform.portfolio.savings.DepositAccountOnClosureType;
import org.mifosplatform.portfolio.savings.DepositAccountType;
@@ -25,7 +26,49 @@ import org.mifosplatform.portfolio.savings.data.SavingsAccountTransactionEnumDat
import org.mifosplatform.portfolio.savings.domain.SavingsAccountStatusType;
public class SavingsEnumerations {
public static final String INTEREST_COMPOUNDING_PERIOD_TYPE = "interestCompoundingPeriodType";
public static final String INTEREST_POSTING_PERIOD_TYPE = "interestPostingPeriodType";
public static final String INTEREST_CALCULATION_TYPE = "interestCalculationType";
public static final String MIN_DEPOSIT_TERM_TYPE = "minDepositTermTypeId";
public static final String MAX_DEPOSIT_TERM_TYPE = "maxDepositTermTypeId";
public static final String IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE = "inMultiplesOfDepositTermTypeId";
public static final String DEPOSIT_PERIOD_FREQUNCY_TYPE = "depositPeriodFrequencyId";
public static final String LOCKIN_PERIOD_FREQUNCY_TYPE = "lockinPeriodFrequencyType";
public static final String ACCOUNTING_RULE_TYPE = "accountingRule";
public static final String PRE_CLOSURE_PENAL_INTEREST_TYPE = "preClosurePenalInterestOnTypeId";
public static final String INTEREST_CALCULATION_DAYS_IN_YEAR = "interestCalculationDaysInYearType";
public static final String RECURRING_FREQUENCY_TYPE = "recurringFrequencyType";
public static EnumOptionData savingEnumueration(final String typeName, final int id) {
if (typeName.equals(INTEREST_COMPOUNDING_PERIOD_TYPE)) {
return compoundingInterestPeriodType(id);
} else if (typeName.equals(INTEREST_POSTING_PERIOD_TYPE)) {
return interestPostingPeriodType(id);
} else if (typeName.equals(INTEREST_CALCULATION_TYPE)) {
return interestCalculationType(id);
} else if (typeName.equals(MIN_DEPOSIT_TERM_TYPE)) {
return depositTermFrequencyType(id);
} else if (typeName.equals(MAX_DEPOSIT_TERM_TYPE)) {
return depositTermFrequencyType(id);
} else if (typeName.equals(IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE)) {
return inMultiplesOfDepositTermFrequencyType(id);
} else if (typeName.equals(DEPOSIT_PERIOD_FREQUNCY_TYPE)) {
return depositPeriodFrequency(id);
} else if (typeName.equals(LOCKIN_PERIOD_FREQUNCY_TYPE)) {
return lockinPeriodFrequencyType(id);
} else if (typeName.equals(ACCOUNTING_RULE_TYPE)) {
return AccountingEnumerations.accountingRuleType(id);
} else if (typeName.equals(PRE_CLOSURE_PENAL_INTEREST_TYPE)) {
return preClosurePenaltyInterestOnType(id);
} else if (typeName.equals(INTEREST_CALCULATION_DAYS_IN_YEAR)) {
return interestCalculationDaysInYearType(id);
} else if (typeName.equals(RECURRING_FREQUENCY_TYPE)) {
return depositPeriodFrequency(id);
}
return null;
}
public static EnumOptionData lockinPeriodFrequencyType(final int id) {
return lockinPeriodFrequencyType(SavingsPeriodFrequencyType.fromInt(id));
}