some formatting changes. sorry.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
+22
-23
@@ -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);
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -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;
|
||||
|
||||
+12
-15
@@ -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);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
+4
-6
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user