some formatting changes. sorry.

This commit is contained in:
Keith Woodlock
2012-11-23 17:53:06 +00:00
parent c36370ae83
commit d0ec329115
9 changed files with 97 additions and 98 deletions
@@ -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);
@@ -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<String> 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> permissionUsageData = this.permissionReadPlatformService.retrieveAllRolePermissions(roleId);
Collection<PermissionUsageData> currentChanges = null;
if (commandId != null) {
currentChanges = handleRequestToIntegrateProposedChangesFromCommand(roleId, commandId);
}
Collection<Collection<PermissionUsageData>> allChanges = retrieveAllUnprocessedDataChanges(roleId);
final RolePermissionsData permissionsData = role.toRolePermissionData(permissionUsageData, currentChanges, allChanges);
return this.apiJsonSerializerService.serializeRolePermissionDataToJson(prettyPrint, responseParameters, permissionsData);
}
private Collection<PermissionUsageData> handleRequestToIntegrateProposedChangesFromCommand(final Long roleId, final Long commandId) {
final CommandSourceData entry = this.commandSourceReadPlatformService.retrieveById(commandId);
return assemblePermissionChanges(roleId, entry);
}
private Collection<PermissionUsageData> 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<PermissionUsageData> proposedChanges = new ArrayList<PermissionUsageData>();
Collection<PermissionUsageData> proposedChanges = new ArrayList<PermissionUsageData>();
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<Collection<PermissionUsageData>> retrieveAllUnprocessedDataChanges(final Long roleId) {
Collection<Collection<PermissionUsageData>> allChanges = new ArrayList<Collection<PermissionUsageData>>();
final Collection<CommandSourceData> unprocessedChanges = this.commandSourceReadPlatformService.retrieveUnprocessChangesByResourceId("roles", roleId);
final Collection<CommandSourceData> unprocessedChanges = this.commandSourceReadPlatformService
.retrieveUnprocessChangesByResourceId("roles", roleId);
for (CommandSourceData commandSourceData : unprocessedChanges) {
if (commandSourceData.isRoleResource() && commandSourceData.isUpdateRolePermissions()) {
Collection<PermissionUsageData> 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);
}
@@ -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;
}
}
@@ -10,10 +10,10 @@ public class RoleData {
private final Long id;
private final String name;
private final String description;
// @SuppressWarnings("unused")
// private final Collection<RoleData> currentChanges;
// @SuppressWarnings("unused")
// private final Collection<RoleData> 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> permissionUsageData,
final Collection<PermissionUsageData> currentChanges,
final Collection<Collection<PermissionUsageData>> allChanges) {
final Collection<PermissionUsageData> currentChanges, final Collection<Collection<PermissionUsageData>> allChanges) {
return new RolePermissionsData(id, name, description, permissionUsageData, currentChanges, allChanges);
}
}
@@ -22,8 +22,7 @@ public class RolePermissionsData {
private final Collection<Collection<PermissionUsageData>> allChanges;
public RolePermissionsData(final Long id, final String name, final String description,
final Collection<PermissionUsageData> permissionUsageData,
final Collection<PermissionUsageData> currentChanges,
final Collection<PermissionUsageData> permissionUsageData, final Collection<PermissionUsageData> currentChanges,
final Collection<Collection<PermissionUsageData>> allChanges) {
this.id = id;
this.name = name;
@@ -54,7 +54,8 @@ import com.google.gson.Gson;
@Service
public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApiJsonSerializerService {
private static final Set<String> PERMISSION_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("grouping", "code", "entityName", "actionName", "selected", "isMakerChecker"));
private static final Set<String> PERMISSION_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("grouping", "code", "entityName",
"actionName", "selected", "isMakerChecker"));
private static final Set<String> ROLE_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "name", "description",
"availablePermissions", "selectedPermissions"));
private static final Set<String> ROLE_PERMISSION_DATA_PARAMETERS = new HashSet<String>(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<String> GUARANTOR_DATA_PARAMETERS = new HashSet<String>(
Arrays.asList("externalGuarantor", "existingClientId",
"firstname", "lastname", "addressLine1",
"addressLine2", "city", "state", "zip", "country",
"mobileNumber", "housePhoneNumber", "comment", "dob"));
// guarantors
private static final Set<String> GUARANTOR_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("externalGuarantor", "existingClientId",
"firstname", "lastname", "addressLine1", "addressLine2", "city", "state", "zip", "country", "mobileNumber", "housePhoneNumber",
"comment", "dob"));
// accounting
private static final Set<String> CHART_OF_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "name"));
@@ -587,11 +586,9 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
}
@Override
public String serializeGuarantorDataToJson(boolean prettyPrint,
Set<String> responseParameters, GuarantorData guarantorData) {
final Gson gsonDeserializer = helper
.createGsonBuilderWithParameterExclusionSerializationStrategy(
GUARANTOR_DATA_PARAMETERS, prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, guarantorData);
}
public String serializeGuarantorDataToJson(boolean prettyPrint, Set<String> responseParameters, GuarantorData guarantorData) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GUARANTOR_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, guarantorData);
}
}
@@ -155,7 +155,7 @@ public interface PortfolioApiJsonSerializerService {
String serializeSavingAccountsDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<SavingAccountData> accounts);
String serializeGuarantorDataToJson(boolean prettyPrint, Set<String> responseParameters, GuarantorData guarantorData);
// TODO - KW - might devide serialize up into portfolio and account to
// reduce interface
String serializeChartOfAccountDataToJson(boolean prettyPrint, Set<String> responseParameters, ChartOfAccountsData chartOfAccounts);
@@ -6,7 +6,7 @@ import org.mifosng.platform.api.data.PermissionUsageData;
public interface PermissionReadPlatformService {
Collection<PermissionUsageData> retrieveAllPermissions();
Collection<PermissionUsageData> retrieveAllPermissions();
Collection<PermissionUsageData> retrieveAllRolePermissions(Long roleId);
Collection<PermissionUsageData> retrieveAllRolePermissions(Long roleId);
}
@@ -28,14 +28,13 @@ public class PermissionReadPlatformServiceImpl implements PermissionReadPlatform
public Collection<PermissionUsageData> retrieveAllPermissions() {
context.authenticatedUser();
final PermissionUsageDataMapper mapper = new PermissionUsageDataMapper();
final String sql = mapper.permissionSchema();
return this.jdbcTemplate.query(sql, mapper, new Object[] {});
}
@Override
public Collection<PermissionUsageData> 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";