diff --git a/mifosng-db/0002-mifosng-base-reference-data.sql b/mifosng-db/0002-mifosng-base-reference-data.sql index 2cc4ed1db..bfc73950c 100644 --- a/mifosng-db/0002-mifosng-base-reference-data.sql +++ b/mifosng-db/0002-mifosng-base-reference-data.sql @@ -19,7 +19,12 @@ VALUES ('loan_transaction_strategy_id',1,'mifos-standard-strategy','Mifos style'), ('loan_transaction_strategy_id',2,'heavensfamily-strategy','Heavensfamily'), ('loan_transaction_strategy_id',3,'creocore-strategy','Creocore'), -('loan_transaction_strategy_id',4,'rbi-india-strategy','RBI (India)'); +('loan_transaction_strategy_id',4,'rbi-india-strategy','RBI (India)'), +('processing_result_enum', '0', 'invalid', 'Invalid'), +('processing_result_enum', '1', 'processed', 'Processed'), +('processing_result_enum', '2', 'awaiting.approval', 'Awaiting Approval'), +('processing_result_enum', '3', 'rejected', 'Rejected'); + INSERT INTO `m_currency` diff --git a/mifosng-db/patches/patch-14_add_processing_result_enum_to_r_enum_value_table.sql b/mifosng-db/patches/patch-14_add_processing_result_enum_to_r_enum_value_table.sql new file mode 100644 index 000000000..2512538ab --- /dev/null +++ b/mifosng-db/patches/patch-14_add_processing_result_enum_to_r_enum_value_table.sql @@ -0,0 +1,4 @@ +INSERT INTO r_enum_value(`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) VALUES ('processing_result_enum', '0', 'invalid', 'Invalid'); +INSERT INTO r_enum_value(`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) VALUES ('processing_result_enum', '1', 'processed', 'Processed'); +INSERT INTO r_enum_value(`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) VALUES ('processing_result_enum', '2', 'awaiting.approval', 'Awaiting Approval'); +INSERT INTO r_enum_value(`enum_name`, `enum_id`, `enum_message_property`, `enum_value`) VALUES ('processing_result_enum', '3', 'rejected', 'Rejected'); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/audit/api/AuditApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/audit/api/AuditApiResource.java index 80fc73396..8d17c972f 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/audit/api/AuditApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/audit/api/AuditApiResource.java @@ -73,14 +73,15 @@ public class AuditApiResource { @QueryParam("makerDateTimeTo") final String makerDateTimeTo, @QueryParam("checkerId") final Long checkerId, @QueryParam("checkerDateTimeFrom") final String checkerDateTimeFrom, - @QueryParam("checkerDateTimeTo") final String checkerDateTimeTo) { + @QueryParam("checkerDateTimeTo") final String checkerDateTimeTo, + @QueryParam("processingResult") final Integer processingResult) { context.authenticatedUser().validateHasReadPermission( resourceNameForPermissions); final String extraCriteria = getExtraCriteria(actionName, entityName, resourceId, makerId, makerDateTimeFrom, makerDateTimeTo, - checkerId, checkerDateTimeFrom, checkerDateTimeTo); + checkerId, checkerDateTimeFrom, checkerDateTimeTo, processingResult); final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper .process(uriInfo.getQueryParameters()); @@ -137,7 +138,7 @@ public class AuditApiResource { final String entityName, final Long resourceId, final Long makerId, final String makerDateTimeFrom, final String makerDateTimeTo, final Long checkerId, final String checkerDateTimeFrom, - final String checkerDateTimeTo) { + final String checkerDateTimeTo, final Integer processingResult) { String extraCriteria = ""; @@ -176,6 +177,10 @@ public class AuditApiResource { + ApiParameterHelper.sqlEncodeString(checkerDateTimeTo); } + if (processingResult != null) { + extraCriteria += " and aud.processing_result_enum = " + processingResult; + } + if (StringUtils.isNotBlank(extraCriteria)) { extraCriteria = extraCriteria.substring(4); } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/audit/api/ProcessingResultLookup.java b/mifosng-provider/src/main/java/org/mifosplatform/audit/api/ProcessingResultLookup.java new file mode 100644 index 000000000..4a682e7e2 --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosplatform/audit/api/ProcessingResultLookup.java @@ -0,0 +1,24 @@ +package org.mifosplatform.audit.api; + +/** + * Immutable data object for application user data. + */ +public class ProcessingResultLookup { + + private final Long id; + private final String processingResult; + + public ProcessingResultLookup(final Long id, final String processingResult) { + this.id = id; + this.processingResult = processingResult; + } + + public Long getId() { + return this.id; + } + + public String getProcessingResult() { + return this.processingResult; + } + +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditData.java b/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditData.java index 3f60ae2ab..ff8ea0f52 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditData.java @@ -32,6 +32,8 @@ public final class AuditData { @SuppressWarnings("unused") private final DateTime checkedOnDate; @SuppressWarnings("unused") + private final String processingResult; + @SuppressWarnings("unused") private final String commandAsJson; public AuditData(final Long id, final String actionName, @@ -40,7 +42,7 @@ public final class AuditData { final String subResource, final Long subResourceId, final String maker, final DateTime madeOnDate, final String checker, final DateTime checkedOnDate, - final String commandAsJson) { + final String processingResult, final String commandAsJson) { this.id = id; this.actionName = actionName; @@ -55,5 +57,6 @@ public final class AuditData { this.checker = checker; this.checkedOnDate = checkedOnDate; this.commandAsJson = commandAsJson; + this.processingResult = processingResult; } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditSearchData.java b/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditSearchData.java index 9af72cf3b..6b5a48c8e 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditSearchData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/audit/data/AuditSearchData.java @@ -3,6 +3,7 @@ package org.mifosplatform.audit.data; import java.util.Collection; import java.util.List; +import org.mifosplatform.audit.api.ProcessingResultLookup; import org.mifosplatform.useradministration.data.AppUserLookup; /** @@ -10,16 +11,21 @@ import org.mifosplatform.useradministration.data.AppUserLookup; */ public final class AuditSearchData { - @SuppressWarnings("unused") - private final Collection appUsers; - @SuppressWarnings("unused") - private final List actionNames; - @SuppressWarnings("unused") - private final List entityNames; + @SuppressWarnings("unused") + private final Collection appUsers; + @SuppressWarnings("unused") + private final List actionNames; + @SuppressWarnings("unused") + private final List entityNames; + @SuppressWarnings("unused") + private final Collection processingResults; - public AuditSearchData(final Collection appUsers, final List apiOperations, final List resources) { - this.appUsers = appUsers; - this.actionNames = apiOperations; - this.entityNames = resources; - } + public AuditSearchData(final Collection appUsers, + final List apiOperations, final List resources, + final Collection processingResults) { + this.appUsers = appUsers; + this.actionNames = apiOperations; + this.entityNames = resources; + this.processingResults = processingResults; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/audit/service/AuditReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/audit/service/AuditReadPlatformServiceImpl.java index c09a5d55c..94d9d6473 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/audit/service/AuditReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/audit/service/AuditReadPlatformServiceImpl.java @@ -7,6 +7,7 @@ import java.util.List; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime; +import org.mifosplatform.audit.api.ProcessingResultLookup; import org.mifosplatform.audit.data.AuditData; import org.mifosplatform.audit.data.AuditSearchData; import org.mifosplatform.infrastructure.core.domain.JdbcSupport; @@ -49,11 +50,12 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { return " aud.id as id, aud.action_name as actionName, aud.entity_name as entityName, aud.api_operation as apiOperation, " + " aud.api_resource as resource, aud.resource_id as resourceId, aud.api_subresource as subResource, aud.subresource_id as subResourceId," - + " mk.username as maker, aud.made_on_date as madeOnDate, ck.username as checker, aud.checked_on_date as checkedOnDate" + + " mk.username as maker, aud.made_on_date as madeOnDate, ck.username as checker, aud.checked_on_date as checkedOnDate, ev.enum_message_property as processingResult " + commandAsJsonString + " from m_portfolio_command_source aud " + " left join m_appuser mk on mk.id = aud.maker_id" - + " left join m_appuser ck on ck.id = aud.checker_id"; + + " left join m_appuser ck on ck.id = aud.checker_id" + + " left join r_enum_value ev on ev.enum_name = 'processing_result_enum' and ev.enum_id = aud.processing_result_enum"; } @Override @@ -75,6 +77,7 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { final String checker = rs.getString("checker"); final DateTime checkedOnDate = JdbcSupport.getDateTime(rs, "checkedOnDate"); + final String processingResult = rs.getString("processingResult"); String commandAsJson; // commandAsJson might not be on the select list of columns try { @@ -84,7 +87,8 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { } return new AuditData(id, actionName, entityName, apiOperation, resource, resourceId, subResource, subResourceId, maker, - madeOnDate, checker, checkedOnDate, commandAsJson); + madeOnDate, checker, checkedOnDate, processingResult, + commandAsJson); } } @@ -128,7 +132,12 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { List entityNames = this.jdbcTemplate.query(mapper2.schema(), mapper2, new Object[] {}); - return new AuditSearchData(appUsers, actionNames, entityNames); + ProcessingResultsMapper mapper3 = new ProcessingResultsMapper(); + Collection processingResults = this.jdbcTemplate + .query(mapper3.schema(), mapper3, new Object[] {}); + + return new AuditSearchData(appUsers, actionNames, entityNames, + processingResults); } private static final class ActionNamesMapper implements RowMapper { @@ -164,4 +173,23 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService { + " order by if(grouping = 'datatable', 'ZZZ', entity_name), entity_name"; } } + + private static final class ProcessingResultsMapper implements + RowMapper { + + @Override + public ProcessingResultLookup mapRow(final ResultSet rs, + @SuppressWarnings("unused") final int rowNum) + throws SQLException { + Long id = JdbcSupport.getLong(rs, "id"); + String processingResult = rs.getString("processingResult"); + + return new ProcessingResultLookup(id, processingResult); + } + + public String schema() { + return " select enum_id as id, enum_message_property as processingResult from r_enum_value where enum_name = 'processing_result_enum' " + + " order by enum_id"; + } + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/commands/domain/CommandSource.java b/mifosng-provider/src/main/java/org/mifosplatform/commands/domain/CommandSource.java index 2688564b4..5c484b165 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/commands/domain/CommandSource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/commands/domain/CommandSource.java @@ -63,7 +63,8 @@ public class CommandSource extends AbstractPersistable { @Column(name = "checked_on_date", nullable = false) @Temporal(TemporalType.TIMESTAMP) private Date checkedOnDate; - + + @SuppressWarnings("unused") @Column(name = "processing_result_enum", nullable = false) private Integer processingResult;