diff --git a/mifosng-db/patches/14-drop_per_row_audit_support.sql b/mifosng-db/patches/14-drop_per_row_audit_support.sql new file mode 100644 index 000000000..21e41beec --- /dev/null +++ b/mifosng-db/patches/14-drop_per_row_audit_support.sql @@ -0,0 +1,9 @@ +ALTER TABLE `m_product_deposit` + DROP FOREIGN KEY FKJPX0000000000003, + DROP FOREIGN KEY FKJPX0000000000004, + DROP KEY FKJPW0000000000003, + DROP KEY FKJPW0000000000004, + DROP COLUMN createdby_id, + DROP COLUMN created_date, + DROP COLUMN lastmodified_date, + DROP COLUMN lastmodifiedby_id; \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/api/DepositProductsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/api/DepositProductsApiResource.java index 0a9a504bd..46e1ff4e4 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/api/DepositProductsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/api/DepositProductsApiResource.java @@ -37,6 +37,7 @@ import org.mifosplatform.organisation.monetary.service.CurrencyReadPlatformServi import org.mifosplatform.portfolio.loanproduct.domain.PeriodFrequencyType; import org.mifosplatform.portfolio.savingsaccountproduct.service.SavingsDepositEnumerations; import org.mifosplatform.portfolio.savingsdepositproduct.data.DepositProductData; +import org.mifosplatform.portfolio.savingsdepositproduct.exception.DepositProductNotFoundException; import org.mifosplatform.portfolio.savingsdepositproduct.service.DepositProductReadPlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; @@ -47,7 +48,7 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class DepositProductsApiResource { - private final Set DEPOSIT_PRODUCT_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "externalId", "name", "description", "createdOn", "lastModifedOn", + private final Set DEPOSIT_PRODUCT_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "externalId", "name", "description", "currencyCode", "digitsAfterDecimal", "minimumBalance", "maximumBalance", "tenureInMonths", "maturityDefaultInterestRate", "maturityMinInterestRate", "maturityMaxInterestRate", "interestCompoundedEvery", "interestCompoundedEveryPeriodType", "renewalAllowed", "preClosureAllowed", "preClosureInterestRate", "interestCompoundingAllowed", "isLockinPeriodAllowed", "lockinPeriod", "lockinPeriodType", "currency","currencyOptions", "interestCompoundedEveryPeriodTypeOptions")); @@ -132,6 +133,9 @@ public class DepositProductsApiResource { context.authenticatedUser().validateHasReadPermission(entityType); DepositProductData productData = this.depositProductReadPlatformService.retrieveDepositProductData(productId); + if (productData.isDeleted()) { + throw new DepositProductNotFoundException(productId); + } final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters()); if (settings.isTemplate()) { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/data/DepositProductData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/data/DepositProductData.java index 0a385ee74..f50b59924 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/data/DepositProductData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/data/DepositProductData.java @@ -10,7 +10,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.joda.time.DateTime; import org.mifosplatform.infrastructure.core.data.EnumOptionData; import org.mifosplatform.organisation.monetary.data.CurrencyData; @@ -44,23 +43,19 @@ public class DepositProductData { private final Integer lockinPeriod; private final EnumOptionData lockinPeriodType; - private final DateTime createdOn; - private final DateTime lastModifedOn; - private final Collection currencyOptions; private final List interestCompoundedEveryPeriodTypeOptions; + private final Boolean isDeleted; - public DepositProductData(final DateTime createdOn, final DateTime lastModifedOn, final Long id, final String externalId, + public DepositProductData(final Long id, final String externalId, final String name, final String description, final String currencyCode, final Integer digitsAfterDecimal, final BigDecimal minimumBalance, final BigDecimal maximumBalance, final Integer tenureMonths, final BigDecimal maturityDefaultInterestRate, final BigDecimal maturityMinInterestRate, final BigDecimal maturityMaxInterestRate, final Integer interestCompoundedEvery, final EnumOptionData interestCompoundedEveryPeriodType, final boolean renewalAllowed, final boolean preClosureAllowed, final BigDecimal preClosureInterestRate, final boolean interestCompoundingAllowed, final boolean isLockinPeriodAllowed, - final Integer lockinPeriod, final EnumOptionData lockinPeriodType,final CurrencyData currencyData) { + final Integer lockinPeriod, final EnumOptionData lockinPeriodType,final CurrencyData currencyData, final Boolean isDeleted) { - this.createdOn = createdOn; - this.lastModifedOn = lastModifedOn; this.id = id; this.externalId = externalId; this.name = name; @@ -87,13 +82,12 @@ public class DepositProductData { this.currency = currencyData; this.currencyOptions = null; this.interestCompoundedEveryPeriodTypeOptions = null; + this.isDeleted = isDeleted; } public DepositProductData(final Collection currencyOptions, final EnumOptionData defaultInterestCompoundedEveryPeriodType, final List interestCompoundedEveryPeriodTypeOptions) { - this.createdOn = null; - this.lastModifedOn = null; this.id = null; this.externalId = null; this.name = null; @@ -123,12 +117,11 @@ public class DepositProductData { this.currencyOptions = currencyOptions; this.interestCompoundedEveryPeriodTypeOptions = interestCompoundedEveryPeriodTypeOptions; + this.isDeleted = false; } public DepositProductData(final DepositProductData product, final Collection currencyOptions, final List interestCompoundedEveryPeriodTypeOptions) { - this.createdOn = product.getCreatedOn(); - this.lastModifedOn = product.getLastModifedOn(); this.id = product.getId(); this.externalId = product.getExternalId(); this.name = product.getName(); @@ -162,6 +155,8 @@ public class DepositProductData { } else { this.currency = product.currency; } + + this.isDeleted = product.isDeleted; } public Long getId() { @@ -232,14 +227,6 @@ public class DepositProductData { return preClosureInterestRate; } - public DateTime getCreatedOn() { - return createdOn; - } - - public DateTime getLastModifedOn() { - return lastModifedOn; - } - public Collection getCurrencyOptions() { return currencyOptions; } @@ -264,4 +251,8 @@ public class DepositProductData { return lockinPeriodType; } + public Boolean isDeleted() { + return this.isDeleted; + } + } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/domain/DepositProduct.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/domain/DepositProduct.java index d5287f0e6..2663c2ad0 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/domain/DepositProduct.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/domain/DepositProduct.java @@ -17,16 +17,15 @@ import javax.persistence.UniqueConstraint; import org.apache.commons.lang.StringUtils; import org.mifosplatform.infrastructure.core.api.JsonCommand; -import org.mifosplatform.infrastructure.core.domain.AbstractAuditableCustom; import org.mifosplatform.organisation.monetary.domain.MonetaryCurrency; import org.mifosplatform.portfolio.loanproduct.domain.PeriodFrequencyType; import org.mifosplatform.portfolio.savingsdepositproduct.exception.DepositProductValueOutsideRangeException; -import org.mifosplatform.useradministration.domain.AppUser; +import org.springframework.data.jpa.domain.AbstractPersistable; @Entity @Table(name = "m_product_deposit", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name_deposit_product"), @UniqueConstraint(columnNames = { "external_id" }, name = "externalid_deposit_product") }) -public class DepositProduct extends AbstractAuditableCustom { +public class DepositProduct extends AbstractPersistable { @Column(name = "name", nullable = false) private String name; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/service/DepositProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/service/DepositProductReadPlatformServiceImpl.java index a36c8d28c..dc89573e3 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/service/DepositProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savingsdepositproduct/service/DepositProductReadPlatformServiceImpl.java @@ -11,7 +11,6 @@ import java.sql.SQLException; import java.util.Collection; import java.util.List; -import org.joda.time.DateTime; import org.mifosplatform.infrastructure.core.data.EnumOptionData; import org.mifosplatform.infrastructure.core.domain.JdbcSupport; import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource; @@ -78,13 +77,14 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead private static final class DepositProductMapper implements RowMapper { public String depositProductSchema() { - return " dp.id as id, dp.external_id as exernalId, dp.name as name, dp.description as description,dp.currency_code as currencyCode, dp.currency_digits as currencyDigits,dp.minimum_balance as minimumBalance,dp.maximum_balance as maximumBalance," - + "dp.created_date as createdon, dp.lastmodified_date as modifiedon,dp.tenure_months as tenureMonths, " + return " dp.id as id, dp.external_id as exernalId, dp.name as name, dp.description as description,dp.currency_code as currencyCode, dp.currency_digits as currencyDigits, " + + "dp.minimum_balance as minimumBalance,dp.maximum_balance as maximumBalance, dp.tenure_months as tenureMonths, " + "dp.interest_compounded_every as interestCompoundedEvery, dp.interest_compounded_every_period_enum as interestCompoundedEveryPeriodType, " + "dp.maturity_default_interest_rate as maturityDefaultInterestRate, dp.is_compounding_interest_allowed as interestCompoundingAllowed, " - + "dp.maturity_min_interest_rate as maturityMinInterestRate, dp.maturity_max_interest_rate as maturityMaxInterestRate, dp.is_renewal_allowed as canRenew, dp.is_preclosure_allowed as canPreClose, dp.pre_closure_interest_rate as preClosureInterestRate, " + + "dp.maturity_min_interest_rate as maturityMinInterestRate, dp.maturity_max_interest_rate as maturityMaxInterestRate, " + + "dp.is_renewal_allowed as canRenew, dp.is_preclosure_allowed as canPreClose, dp.pre_closure_interest_rate as preClosureInterestRate, " + "dp.is_lock_in_period_allowed as isLockinPeriodAllowed, dp.lock_in_period as lockinPeriod, dp.lock_in_period_type as lockinPeriodType, " - + "curr.name as currencyName, curr.internationalized_name_code as currencyNameCode, curr.display_symbol as currencyDisplaySymbol " + + "curr.name as currencyName, curr.internationalized_name_code as currencyNameCode, curr.display_symbol as currencyDisplaySymbol, dp.is_deleted as isDeleted " + "from m_product_deposit dp join m_currency curr on curr.code = dp.currency_code "; } @@ -103,9 +103,6 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead String currencyDisplaySymbol = rs.getString("currencyDisplaySymbol"); CurrencyData currencyData = new CurrencyData(currencyCode, currencyName, currencyDigits, currencyDisplaySymbol, currencyNameCode); - DateTime createdOn = JdbcSupport.getDateTime(rs, "createdon"); - DateTime lastModifedOn = JdbcSupport.getDateTime(rs, "modifiedon"); - BigDecimal minimumBalance = rs.getBigDecimal("minimumBalance"); BigDecimal maximumBalance = rs.getBigDecimal("maximumBalance"); @@ -129,11 +126,12 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead Integer lockinPeriod = JdbcSupport.getInteger(rs, "lockinPeriod"); Integer lockinPeriodTypeValue = JdbcSupport.getInteger(rs, "lockinPeriodType"); EnumOptionData lockinPeriodType = SavingsDepositEnumerations.interestCompoundingPeriodType(lockinPeriodTypeValue); + Boolean isDeleted = rs.getBoolean("isDeleted"); - return new DepositProductData(createdOn, lastModifedOn, id, exernalId, name, description, currencyCode, currencyDigits, + return new DepositProductData(id, exernalId, name, description, currencyCode, currencyDigits, minimumBalance, maximumBalance, tenureMonths, maturityDefaultInterestRate, maturityMinInterestRate, maturityMaxInterestRate, interestCompoundedEvery, interestCompoundedEveryPeriodType, canRenew, canPreClose, - preClosureInterestRate, interestCompoundingAllowed, isLockinPeriodAllowed, lockinPeriod, lockinPeriodType, currencyData); + preClosureInterestRate, interestCompoundingAllowed, isLockinPeriodAllowed, lockinPeriod, lockinPeriodType, currencyData,isDeleted); } }