diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionsApiResource.java index f05f66ed1..501c7df9c 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionsApiResource.java @@ -35,10 +35,10 @@ public class PermissionsApiResource { private PlatformSecurityContext context; private final String resourceNameForPermissions = "PERMISSION"; - + @GET - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String retrieveAllPermissions(@Context final UriInfo uriInfo) { context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/RolesApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/RolesApiResource.java index 60013ecf6..7da8a5d68 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/RolesApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/RolesApiResource.java @@ -46,24 +46,24 @@ public class RolesApiResource { @Autowired private PortfolioApiJsonSerializerService apiJsonSerializerService; - + @Autowired private PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - + @Autowired private PortfolioCommandsReadPlatformService commandSourceReadPlatformService; - + @Autowired private PortfolioCommandDeserializerService commandDeserializerService; @Autowired private PlatformSecurityContext context; - + private final String resourceNameForPermissions = "ROLE"; @GET - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String retrieveAllRoles(@Context final UriInfo uriInfo) { context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions); @@ -77,11 +77,12 @@ public class RolesApiResource { } @POST - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String createRole(final String apiRequestBodyAsJson) { - - final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("CREATE", "roles", null, apiRequestBodyAsJson); + + final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("CREATE", "roles", null, + apiRequestBodyAsJson); return this.apiJsonSerializerService.serializeEntityIdentifier(result); } @@ -96,8 +97,8 @@ public class RolesApiResource { // into account the Object its looking at. @GET @Path("{roleId}") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String retrieveRole(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) { context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions); @@ -106,30 +107,33 @@ public class RolesApiResource { final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); final Long commandId = ApiParameterHelper.commandId(uriInfo.getQueryParameters()); - + RoleData role = this.roleReadPlatformService.retrieveRole(roleId); if (commandId != null) { -// currentChanges = handleRequestToIntegrateProposedChangesFromCommand(roleId, commandId); + // currentChanges = + // handleRequestToIntegrateProposedChangesFromCommand(roleId, + // commandId); } - + return this.apiJsonSerializerService.serializeRoleDataToJson(prettyPrint, responseParameters, role); } - + @PUT @Path("{roleId}") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String updateRole(@PathParam("roleId") final Long roleId, final String apiRequestBodyAsJson) { - - final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("UPDATE", "roles", roleId, apiRequestBodyAsJson); + + final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("UPDATE", "roles", roleId, + apiRequestBodyAsJson); return this.apiJsonSerializerService.serializeEntityIdentifier(result); } @GET @Path("{roleId}/permissions") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String retrieveRolePermissions(@PathParam("roleId") final Long roleId, @Context final UriInfo uriInfo) { context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions); @@ -137,50 +141,52 @@ public class RolesApiResource { final Set responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters()); final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); final Long commandId = ApiParameterHelper.commandId(uriInfo.getQueryParameters()); - + final RoleData role = this.roleReadPlatformService.retrieveRole(roleId); final Collection permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId); Collection currentChanges = null; if (commandId != null) { currentChanges = handleRequestToIntegrateProposedChangesFromCommand(roleId, commandId); } - + Collection> allChanges = retrieveAllUnprocessedDataChanges(roleId); - + final RolePermissionsData permissionsData = role.toRolePermissionData(permissionUsageData, currentChanges, allChanges); - + return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, permissionsData); } - + private Collection handleRequestToIntegrateProposedChangesFromCommand(final Long roleId, final Long commandId) { final CommandSourceData entry = this.commandSourceReadPlatformService.retrieveById(commandId); return assemblePermissionChanges(roleId, entry); } private Collection assemblePermissionChanges(final Long roleId, final CommandSourceData entry) { - final RolePermissionCommand changesOnly = this.commandDeserializerService.deserializeRolePermissionCommand(roleId, entry.json(), false); - + final RolePermissionCommand changesOnly = this.commandDeserializerService.deserializeRolePermissionCommand(roleId, entry.json(), + false); + // assemble map of string/booleans into PermissionUsageData - Collection proposedChanges = new ArrayList(); + Collection proposedChanges = new ArrayList(); for (final String permissionCode : changesOnly.getPermissions().keySet()) { final boolean isSelected = changesOnly.getPermissions().get(permissionCode).booleanValue(); final PermissionUsageData item = PermissionUsageData.from(permissionCode, isSelected); - + proposedChanges.add(item); } - + return proposedChanges; } - + private Collection> retrieveAllUnprocessedDataChanges(final Long roleId) { Collection> allChanges = new ArrayList>(); - final Collection unprocessedChanges = this.commandSourceReadPlatformService.retrieveUnprocessChangesByResourceId("roles", roleId); + final Collection unprocessedChanges = this.commandSourceReadPlatformService + .retrieveUnprocessChangesByResourceId("roles", roleId); for (CommandSourceData commandSourceData : unprocessedChanges) { - + if (commandSourceData.isRoleResource() && commandSourceData.isUpdateRolePermissions()) { Collection dataChanges = assemblePermissionChanges(roleId, commandSourceData); - + allChanges.add(dataChanges); } } @@ -191,14 +197,15 @@ public class RolesApiResource { return allChanges; } - + @PUT @Path("{roleId}/permissions") - @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON}) + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) public String updateRolePermissions(@PathParam("roleId") final Long roleId, final String apiRequestBodyAsJson) { - final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("UPDATEPERMISSIONS", "roles", roleId, apiRequestBodyAsJson); + final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("UPDATEPERMISSIONS", "roles", roleId, + apiRequestBodyAsJson); return this.apiJsonSerializerService.serializeEntityIdentifier(result); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java index 7574524db..8b2481c90 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/PermissionUsageData.java @@ -5,31 +5,30 @@ package org.mifosng.platform.api.data; */ public class PermissionUsageData { - @SuppressWarnings("unused") - private final String grouping; - @SuppressWarnings("unused") - private final String code; - @SuppressWarnings("unused") - private final String entityName; - @SuppressWarnings("unused") - private final String actionName; - @SuppressWarnings("unused") - private final Boolean selected; - @SuppressWarnings("unused") - private final Boolean isMakerChecker; + @SuppressWarnings("unused") + private final String grouping; + @SuppressWarnings("unused") + private final String code; + @SuppressWarnings("unused") + private final String entityName; + @SuppressWarnings("unused") + private final String actionName; + @SuppressWarnings("unused") + private final Boolean selected; + @SuppressWarnings("unused") + private final Boolean isMakerChecker; public static PermissionUsageData from(final String permissionCode, final boolean isSelected) { return new PermissionUsageData(null, permissionCode, null, null, isSelected, null); } - - public PermissionUsageData(final String grouping, final String code, - final String entityName, final String actionName, - final Boolean selected, final Boolean isMakerChecker) { - this.grouping = grouping; - this.code = code; - this.entityName = entityName; - this.actionName = actionName; - this.selected = selected; - this.isMakerChecker = isMakerChecker; - } + + public PermissionUsageData(final String grouping, final String code, final String entityName, final String actionName, + final Boolean selected, final Boolean isMakerChecker) { + this.grouping = grouping; + this.code = code; + this.entityName = entityName; + this.actionName = actionName; + this.selected = selected; + this.isMakerChecker = isMakerChecker; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java index 9fdff46a4..9a3efc064 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RoleData.java @@ -10,10 +10,10 @@ public class RoleData { private final Long id; private final String name; private final String description; - -// @SuppressWarnings("unused") -// private final Collection currentChanges; - + + // @SuppressWarnings("unused") + // private final Collection currentChanges; + public RoleData(final Long id, final String name, final String description) { this.id = id; this.name = name; @@ -44,8 +44,7 @@ public class RoleData { } public RolePermissionsData toRolePermissionData(final Collection permissionUsageData, - final Collection currentChanges, - final Collection> allChanges) { + final Collection currentChanges, final Collection> allChanges) { return new RolePermissionsData(id, name, description, permissionUsageData, currentChanges, allChanges); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RolePermissionsData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RolePermissionsData.java index 120c2b968..f621e6f62 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RolePermissionsData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/RolePermissionsData.java @@ -22,8 +22,7 @@ public class RolePermissionsData { private final Collection> allChanges; public RolePermissionsData(final Long id, final String name, final String description, - final Collection permissionUsageData, - final Collection currentChanges, + final Collection permissionUsageData, final Collection currentChanges, final Collection> allChanges) { this.id = id; this.name = name; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonPortfolioApiJsonSerializerService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonPortfolioApiJsonSerializerService.java index c22864d68..e2be4d4cc 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonPortfolioApiJsonSerializerService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonPortfolioApiJsonSerializerService.java @@ -54,7 +54,8 @@ import com.google.gson.Gson; @Service public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApiJsonSerializerService { - private static final Set PERMISSION_DATA_PARAMETERS = new HashSet(Arrays.asList("grouping", "code", "entityName", "actionName", "selected", "isMakerChecker")); + private static final Set PERMISSION_DATA_PARAMETERS = new HashSet(Arrays.asList("grouping", "code", "entityName", + "actionName", "selected", "isMakerChecker")); private static final Set ROLE_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "name", "description", "availablePermissions", "selectedPermissions")); private static final Set ROLE_PERMISSION_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "name", "description", @@ -165,13 +166,11 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi "projectedInterestAccuredOnMaturity", "actualInterestAccured", "projectedMaturityAmount", "actualMaturityAmount", "preClosureAllowed", "preClosureInterestRate", "withdrawnonDate", "rejectedonDate", "closedonDate", "isLockinPeriodAllowed", "lockinPeriod", "lockinPeriodType")); - - //guarantors - private static final Set GUARANTOR_DATA_PARAMETERS = new HashSet( - Arrays.asList("externalGuarantor", "existingClientId", - "firstname", "lastname", "addressLine1", - "addressLine2", "city", "state", "zip", "country", - "mobileNumber", "housePhoneNumber", "comment", "dob")); + + // guarantors + private static final Set GUARANTOR_DATA_PARAMETERS = new HashSet(Arrays.asList("externalGuarantor", "existingClientId", + "firstname", "lastname", "addressLine1", "addressLine2", "city", "state", "zip", "country", "mobileNumber", "housePhoneNumber", + "comment", "dob")); // accounting private static final Set CHART_OF_ACCOUNTS_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "name")); @@ -587,11 +586,9 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi } @Override - public String serializeGuarantorDataToJson(boolean prettyPrint, - Set responseParameters, GuarantorData guarantorData) { - final Gson gsonDeserializer = helper - .createGsonBuilderWithParameterExclusionSerializationStrategy( - GUARANTOR_DATA_PARAMETERS, prettyPrint, responseParameters); - return helper.serializedJsonFrom(gsonDeserializer, guarantorData); - } + public String serializeGuarantorDataToJson(boolean prettyPrint, Set responseParameters, GuarantorData guarantorData) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GUARANTOR_DATA_PARAMETERS, + prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, guarantorData); + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/PortfolioApiJsonSerializerService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/PortfolioApiJsonSerializerService.java index 94a8e6c01..c4735fbe3 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/PortfolioApiJsonSerializerService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/PortfolioApiJsonSerializerService.java @@ -155,7 +155,7 @@ public interface PortfolioApiJsonSerializerService { String serializeSavingAccountsDataToJson(boolean prettyPrint, Set responseParameters, Collection accounts); String serializeGuarantorDataToJson(boolean prettyPrint, Set responseParameters, GuarantorData guarantorData); - + // TODO - KW - might devide serialize up into portfolio and account to // reduce interface String serializeChartOfAccountDataToJson(boolean prettyPrint, Set responseParameters, ChartOfAccountsData chartOfAccounts); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformService.java index 17de08dcc..466012bb8 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformService.java @@ -6,7 +6,7 @@ import org.mifosng.platform.api.data.PermissionUsageData; public interface PermissionReadPlatformService { - Collection retrieveAllPermissions(); + Collection retrieveAllPermissions(); - Collection retrieveAllRolePermissions(Long roleId); + Collection retrieveAllRolePermissions(Long roleId); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java index 7855b538e..a4d19133b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/user/service/PermissionReadPlatformServiceImpl.java @@ -28,14 +28,13 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform public Collection retrieveAllPermissions() { context.authenticatedUser(); - + final PermissionUsageDataMapper mapper = new PermissionUsageDataMapper(); final String sql = mapper.permissionSchema(); return this.jdbcTemplate.query(sql, mapper, new Object[] {}); } - @Override public Collection retrieveAllRolePermissions(final Long roleId) { @@ -62,13 +61,12 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform public String permissionSchema() { return "select p.grouping, p.code, p.entity_name as entityName, p.action_name as actionName, true as selected, p.is_maker_checker as isMakerChecker" - + " from m_permission p " - + " order by p.grouping, ifnull(entity_name, ''), p.code"; + + " from m_permission p " + " order by p.grouping, ifnull(entity_name, ''), p.code"; } - + public String rolePermissionSchema() { return "select p.grouping, p.code, p.entity_name as entityName, p.action_name as actionName, if(isnull(rp.role_id), false, true) as selected, " - + " if(isnull(rp.role_id), false, p.is_maker_checker) as isMakerChecker " + + " if(isnull(rp.role_id), false, p.is_maker_checker) as isMakerChecker " + " from m_permission p " + " left join m_role_permission rp on rp.permission_id = p.id and rp.role_id = ? " + " order by p.grouping, ifnull(entity_name, ''), p.code";