clean up remainder of serialization code for reports, datatables and groups.2

This commit is contained in:
Keith Woodlock
2012-12-21 11:45:37 +00:00
parent 4e589cfeb8
commit 46c315815d
15 changed files with 188 additions and 311 deletions
@@ -85,7 +85,7 @@ public class CodesApiResource {
@Path("{codeId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String retreiveOffice(@PathParam("codeId") final Long codeId, @Context final UriInfo uriInfo) {
public String retrieveCode(@PathParam("codeId") final Long codeId, @Context final UriInfo uriInfo) {
final CodeData code = this.readPlatformService.retrieveCode(codeId);
@@ -109,7 +109,7 @@ public class CodesApiResource {
@Path("{codeId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public String deleteCodeApplication(@PathParam("codeId") final Long codeId) {
public String deleteCode(@PathParam("codeId") final Long codeId) {
final EntityIdentifier result = this.commandsSourceWritePlatformService.logCommandSource("DELETE", "CODE", "DELETE", "codes",
codeId, "{}");
@@ -10,4 +10,8 @@ public class CodeNotFoundException extends AbstractPlatformResourceNotFoundExcep
public CodeNotFoundException(final String name) {
super("error.msg.code.not.found", "Code with name `" + name + "` does not exist", name);
}
public CodeNotFoundException(final Long codeId) {
super("error.msg.code.identifier.not.found", "Code with identifier `" + codeId + "` does not exist", codeId);
}
}
@@ -5,9 +5,9 @@ import java.sql.SQLException;
import java.util.Collection;
import org.mifosplatform.infrastructure.codes.data.CodeData;
import org.mifosplatform.infrastructure.codes.exception.CodeNotFoundException;
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.portfolio.fund.exception.FundNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -38,7 +38,7 @@ public class CodeReadPlatformServiceImpl implements CodeReadPlatformService {
final Long id = rs.getLong("id");
final String code_name = rs.getString("code_name");
final boolean systemDefined = rs.getBoolean("systemDefined");
return new CodeData(id, code_name, systemDefined);
}
}
@@ -54,7 +54,7 @@ public class CodeReadPlatformServiceImpl implements CodeReadPlatformService {
}
@Override
public CodeData retrieveCode(Long codeId) {
public CodeData retrieveCode(final Long codeId) {
try {
context.authenticatedUser();
@@ -63,7 +63,7 @@ public class CodeReadPlatformServiceImpl implements CodeReadPlatformService {
return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { codeId });
} catch (EmptyResultDataAccessException e) {
throw new FundNotFoundException(codeId);
throw new CodeNotFoundException(codeId);
}
}
}
@@ -6,13 +6,6 @@ import java.util.HashSet;
import java.util.Set;
import org.mifosplatform.infrastructure.core.serialization.GoogleGsonSerializerHelper;
import org.mifosplatform.infrastructure.dataqueries.data.DatatableData;
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
import org.mifosplatform.infrastructure.documentmanagement.data.DocumentData;
import org.mifosplatform.infrastructure.security.data.AuthenticatedUserData;
import org.mifosplatform.portfolio.client.data.ClientAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.loanaccount.gaurantor.data.GuarantorData;
import org.mifosplatform.portfolio.savingsaccount.data.SavingAccountData;
import org.mifosplatform.portfolio.savingsaccount.data.SavingScheduleData;
@@ -54,23 +47,6 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
"isLockinPeriodAllowed", "lockinPeriod", "lockinPeriodType", "printFDdetailsLocation", "availableInterest",
"interestPostedAmount", "lastInterestPostedDate", "nextInterestPostedDate", "fatherName", "address", "imageKey"));
private static final Set<String> DOCUMENT_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "parentEntityType",
"parentEntityId", "name", "fileName", "type", "size", "description"));
private static final Set<String> CLIENT_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("pendingApprovalLoans",
"awaitingDisbursalLoans", "openLoans", "closedLoans", "anyLoanCount", "pendingApprovalLoanCount", "awaitingDisbursalLoanCount",
"activeLoanCount", "closedLoanCount", "pendingApprovalDespositAccountsCount", "pendingApprovalDespositAccounts",
"approvedDespositAccountsCount", "approvedDespositAccounts", "withdrawnByClientDespositAccountsCount",
"withdrawnByClientDespositAccounts", "closedDepositAccountsCount", "closedDepositAccounts", "rejectedDepositAccountsCount",
"rejectedDepositAccounts", "preclosedDepositAccountsCount", "preclosedDepositAccounts"));
private static final Set<String> GROUP_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("pendingApprovalLoans",
"awaitingDisbursalLoans", "openLoans", "closedLoans", "anyLoanCount", "pendingApprovalLoanCount", "awaitingDisbursalLoanCount",
"activeLoanCount", "closedLoanCount"));
private static final Set<String> GROUP_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "officeId", "name", "externalId",
"clientMembers", "allowedClients", "allowedOffices"));
private static final Set<String> SAVINGS_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "status", "externalId",
"clientId", "clientName", "productId", "productName", "productType", "currencyData", "savingsDepostiAmountPerPeriod",
"savingsFrequencyType", "totalDepositAmount", "reccuringInterestRate", "savingInterestRate", "interestType",
@@ -94,24 +70,6 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
this.helper = helper;
}
@Override
public String serializeAuthenticatedUserDataToJson(final boolean prettyPrint, final AuthenticatedUserData authenticatedUserData) {
final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint);
return helper.serializedJsonFrom(gsonDeserializer, authenticatedUserData);
}
@Override
public String serializeGenericResultsetDataToJson(final boolean prettyPrint, final GenericResultsetData resultsetData) {
final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint);
return helper.serializedJsonFrom(gsonDeserializer, resultsetData);
}
@Override
public String serializeDatatableDataToJson(final boolean prettyPrint, final Collection<DatatableData> datatables) {
final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint);
return helper.serializedJsonFrom(gsonDeserializer, datatables.toArray(new DatatableData[datatables.size()]));
}
@Override
public String serializeSavingProductDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
final Collection<SavingProductData> products) {
@@ -160,51 +118,6 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
return helper.serializedJsonFrom(gsonDeserializer, account);
}
@Override
public String serializeClientAccountSummaryCollectionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
final ClientAccountSummaryCollectionData clientAccount) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(CLIENT_ACCOUNTS_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, clientAccount);
}
@Override
public String serializeGroupAccountSummaryCollectionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
final GroupAccountSummaryCollectionData groupAccount) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GROUP_ACCOUNTS_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, groupAccount);
}
@Override
public String serializeGroupDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
final Collection<GroupData> groups) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GROUP_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, groups.toArray(new GroupData[groups.size()]));
}
@Override
public String serializeGroupDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final GroupData group) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GROUP_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, group);
}
@Override
public String serializeDocumentDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<DocumentData> documentDatas) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(DOCUMENT_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, documentDatas.toArray(new DocumentData[documentDatas.size()]));
}
@Override
public String serializeDocumentDataToJson(boolean prettyPrint, Set<String> responseParameters, DocumentData documentData) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(DOCUMENT_DATA_PARAMETERS,
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, documentData);
}
@Override
public String serializeSavingAccountsDataToJson(boolean prettyPrint, Set<String> responseParameters, SavingAccountData account) {
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(SAVINGS_ACCOUNTS_DATA_PARAMETERS,
@@ -234,5 +147,4 @@ public class GoogleGsonPortfolioApiJsonSerializerService implements PortfolioApi
prettyPrint, responseParameters);
return helper.serializedJsonFrom(gsonDeserializer, savingScheduleData);
}
}
@@ -1,6 +1,5 @@
package org.mifosplatform.infrastructure.core.api;
import org.mifosplatform.portfolio.client.command.NoteCommand;
import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.group.command.GroupCommand;
import org.mifosplatform.portfolio.loanaccount.gaurantor.command.GuarantorCommand;
@@ -23,8 +22,6 @@ public interface PortfolioApiDataConversionService {
GroupCommand convertJsonToGroupCommand(Long resourceIdentifier, String json);
NoteCommand convertJsonToNoteCommand(Long resourceIdentifier, Long clientId, String json);
DepositAccountCommand convertJsonToDepositAccountCommand(Long resourceIdentifier, String json);
DepositStateTransitionCommand convertJsonToDepositStateTransitionCommand(Long resourceIdentifier, String json);
@@ -22,7 +22,6 @@ import org.mifosplatform.infrastructure.core.exception.InvalidJsonException;
import org.mifosplatform.infrastructure.core.exception.PlatformApiDataValidationException;
import org.mifosplatform.infrastructure.core.exception.UnsupportedParameterException;
import org.mifosplatform.portfolio.client.command.ClientCommand;
import org.mifosplatform.portfolio.client.command.NoteCommand;
import org.mifosplatform.portfolio.client.data.ClientData;
import org.mifosplatform.portfolio.client.serialization.ClientCommandFromApiJsonDeserializer;
import org.mifosplatform.portfolio.group.command.GroupCommand;
@@ -109,24 +108,6 @@ public class PortfolioApiDataConversionServiceImpl implements PortfolioApiDataCo
return new GroupCommand(modifiedParameters, resourceIdentifier, externalId, name, officeId, clientMembers);
}
@Override
public NoteCommand convertJsonToNoteCommand(final Long noteId, final Long clientId, final String json) {
if (StringUtils.isBlank(json)) { throw new InvalidJsonException(); }
Type typeOfMap = new TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
Set<String> supportedParams = new HashSet<String>(Arrays.asList("note"));
checkForUnsupportedParameters(requestMap, supportedParams);
Set<String> modifiedParameters = new HashSet<String>();
String note = extractStringParameter("note", requestMap, modifiedParameters);
return new NoteCommand(noteId, clientId, note);
}
private void checkForUnsupportedParameters(Map<String, ?> requestMap, Set<String> supportedParams) {
List<String> unsupportedParameterList = new ArrayList<String>();
for (String providedParameter : requestMap.keySet()) {
@@ -3,13 +3,6 @@ package org.mifosplatform.infrastructure.core.api;
import java.util.Collection;
import java.util.Set;
import org.mifosplatform.infrastructure.dataqueries.data.DatatableData;
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
import org.mifosplatform.infrastructure.documentmanagement.data.DocumentData;
import org.mifosplatform.infrastructure.security.data.AuthenticatedUserData;
import org.mifosplatform.portfolio.client.data.ClientAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupAccountSummaryCollectionData;
import org.mifosplatform.portfolio.group.data.GroupData;
import org.mifosplatform.portfolio.loanaccount.gaurantor.data.GuarantorData;
import org.mifosplatform.portfolio.savingsaccount.data.SavingAccountData;
import org.mifosplatform.portfolio.savingsaccount.data.SavingScheduleData;
@@ -19,12 +12,6 @@ import org.mifosplatform.portfolio.savingsdepositproduct.data.DepositProductData
public interface PortfolioApiJsonSerializerService {
String serializeAuthenticatedUserDataToJson(boolean prettyPrint, AuthenticatedUserData authenticatedUserData);
String serializeGenericResultsetDataToJson(boolean prettyPrint, GenericResultsetData result);
String serializeDatatableDataToJson(boolean prettyPrint, Collection<DatatableData> result);
String serializeSavingProductDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<SavingProductData> products);
String serializeSavingProductDataToJson(boolean prettyPrint, Set<String> responseParameters, SavingProductData savingProduct);
@@ -37,20 +24,6 @@ public interface PortfolioApiJsonSerializerService {
String serializeDepositAccountDataToJson(boolean prettyPrint, Set<String> responseParameters, DepositAccountData account);
String serializeClientAccountSummaryCollectionDataToJson(boolean prettyPrint, Set<String> responseParameters,
ClientAccountSummaryCollectionData clientAccount);
String serializeGroupAccountSummaryCollectionDataToJson(boolean prettyPrint, Set<String> responseParameters,
GroupAccountSummaryCollectionData groupAccount);
String serializeGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<GroupData> groups);
String serializeGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, GroupData group);
String serializeDocumentDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<DocumentData> documentDatas);
String serializeDocumentDataToJson(boolean prettyPrint, Set<String> responseParameters, DocumentData documentData);
String serializeSavingAccountsDataToJson(boolean prettyPrint, Set<String> responseParameters, SavingAccountData account);
String serializeSavingAccountsDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<SavingAccountData> accounts);
@@ -41,6 +41,18 @@ public final class DefaultToApiJsonSerializer<T> implements ToApiJsonSerializer<
public String serialize(final Object object) {
return this.excludeNothingWithPrettyPrintingOff.serialize(object);
}
@Override
public String serializePretty(boolean prettyOn, final Object object) {
String json = "";
if (prettyOn) {
json = this.excludeNothingWithPrettyPrintingOn.serialize(object);
} else {
json = serialize(object);
}
return json;
}
@Override
public String serialize(final ApiRequestJsonSerializationSettings settings, final Collection<T> collection,
@@ -5,11 +5,13 @@ import java.util.Set;
public interface ToApiJsonSerializer<T> {
String serialize(final Object object);
String serialize(Object object);
String serializeResult(final Object object);
String serializePretty(boolean prettyOn, Object object);
String serializeResult(Object object);
String serialize(final ApiRequestJsonSerializationSettings settings, Collection<T> collection, Set<String> supportedResponseParameters);
String serialize(ApiRequestJsonSerializationSettings settings, Collection<T> collection, Set<String> supportedResponseParameters);
String serialize(final ApiRequestJsonSerializationSettings settings, T single, Set<String> supportedResponseParameters);
String serialize(ApiRequestJsonSerializationSettings settings, T single, Set<String> supportedResponseParameters);
}
@@ -24,8 +24,8 @@ import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.dataqueries.data.DatatableData;
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
import org.mifosplatform.infrastructure.dataqueries.service.GenericDataService;
@@ -45,18 +45,20 @@ import org.springframework.stereotype.Component;
public class DataTableApiResource {
private final static Logger logger = LoggerFactory.getLogger(DataTableApiResource.class);
private final PlatformSecurityContext context;
private final GenericDataService genericDataService;
private final ReadWriteNonCoreDataService readWriteNonCoreDataService;
private final ToApiJsonSerializer<GenericResultsetData> toApiJsonSerializer;
@Autowired
private PlatformSecurityContext context;
@Autowired
private GenericDataService genericDataService;
@Autowired
private ReadWriteNonCoreDataService readWriteNonCoreDataService;
@Autowired
private PortfolioApiJsonSerializerService apiJsonSerializerService;
public DataTableApiResource(final PlatformSecurityContext context, final GenericDataService genericDataService,
final ReadWriteNonCoreDataService readWriteNonCoreDataService, ToApiJsonSerializer<GenericResultsetData> toApiJsonSerializer) {
this.context = context;
this.genericDataService = genericDataService;
this.readWriteNonCoreDataService = readWriteNonCoreDataService;
this.toApiJsonSerializer = toApiJsonSerializer;
}
@GET
@Consumes({ MediaType.APPLICATION_JSON })
@@ -66,29 +68,29 @@ public class DataTableApiResource {
final List<DatatableData> result = this.readWriteNonCoreDataService.retrieveDatatableNames(apptable);
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
return this.apiJsonSerializerService.serializeDatatableDataToJson(prettyPrint, result);
return this.toApiJsonSerializer.serializePretty(prettyPrint, result);
}
@POST
@Path("register/{datatable}/{apptable}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response registerDatatable(@PathParam("datatable") final String datatable, @PathParam("apptable") final String apptable) {
public String registerDatatable(@PathParam("datatable") final String datatable, @PathParam("apptable") final String apptable) {
this.readWriteNonCoreDataService.registerDatatable(datatable, apptable);
return Response.ok().entity(EntityIdentifier.empty()).build();
return this.toApiJsonSerializer.serialize(EntityIdentifier.empty());
}
@POST
@Path("deregister/{datatable}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response deregisterDatatable(@PathParam("datatable") final String datatable) {
public String deregisterDatatable(@PathParam("datatable") final String datatable) {
this.readWriteNonCoreDataService.deregisterDatatable(datatable);
return Response.ok().entity(EntityIdentifier.empty()).build();
return this.toApiJsonSerializer.serialize(EntityIdentifier.empty());
}
@GET
@@ -106,8 +108,8 @@ public class DataTableApiResource {
String json = "";
final boolean genericResultSet = ApiParameterHelper.genericResultSet(uriInfo.getQueryParameters());
if (genericResultSet) {
boolean prettyPrints = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
json = this.apiJsonSerializerService.serializeGenericResultsetDataToJson(prettyPrints, results);
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
json = this.toApiJsonSerializer.serializePretty(prettyPrint, results);
} else {
json = this.genericDataService.generateJsonFromGenericResultsetData(results);
}
@@ -119,7 +121,7 @@ public class DataTableApiResource {
@Path("{datatable}/{apptableId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response newDatatableEntry(@PathParam("datatable") final String datatable, @PathParam("apptableId") final Long apptableId,
public String newDatatableEntry(@PathParam("datatable") final String datatable, @PathParam("apptableId") final Long apptableId,
final String jsonRequestBody) {
checkUserPermissionForDatatable(datatable, "CREATE");
@@ -127,17 +129,16 @@ public class DataTableApiResource {
this.readWriteNonCoreDataService.newDatatableEntry(datatable, apptableId, queryParams);
EntityIdentifier entityIdentifier = new EntityIdentifier(Long.valueOf(apptableId));
return Response.ok().entity(entityIdentifier).build();
EntityIdentifier entityIdentifier = EntityIdentifier.resourceResult(Long.valueOf(apptableId), null);
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@PUT
@Path("{datatable}/{apptableId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response updateDatatableEntryOnetoOne(@PathParam("datatable") final String datatable,
public String updateDatatableEntryOnetoOne(@PathParam("datatable") final String datatable,
@PathParam("apptableId") final Long apptableId, final String jsonRequestBody) {
/*
* for updating one to one relationships (where foreign key is the
@@ -148,17 +149,16 @@ public class DataTableApiResource {
this.readWriteNonCoreDataService.updateDatatableEntryOnetoOne(datatable, apptableId, queryParams);
EntityIdentifier entityIdentifier = new EntityIdentifier(Long.valueOf(apptableId));
return Response.ok().entity(entityIdentifier).build();
EntityIdentifier entityIdentifier = EntityIdentifier.resourceResult(Long.valueOf(apptableId), null);
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@PUT
@Path("{datatable}/{apptableId}/{datatableId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response updateDatatableEntryOnetoOne(@PathParam("datatable") final String datatable,
public String updateDatatableEntryOnetoOne(@PathParam("datatable") final String datatable,
@PathParam("apptableId") final Long apptableId, @PathParam("datatableId") final Long datatableId, final String jsonRequestBody) {
/*
* for updating one to many relationships (where foreign key isn't the
@@ -169,25 +169,24 @@ public class DataTableApiResource {
this.readWriteNonCoreDataService.updateDatatableEntryOnetoMany(datatable, apptableId, datatableId, queryParams);
EntityIdentifier entityIdentifier = new EntityIdentifier(Long.valueOf(apptableId));
return Response.ok().entity(entityIdentifier).build();
EntityIdentifier entityIdentifier = EntityIdentifier.resourceResult(Long.valueOf(apptableId), null);
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@DELETE
@Path("{datatable}/{apptableId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response deleteDatatableEntries(@PathParam("datatable") final String datatable, @PathParam("apptableId") final Long apptableId) {
public String deleteDatatableEntries(@PathParam("datatable") final String datatable, @PathParam("apptableId") final Long apptableId) {
checkUserPermissionForDatatable(datatable, "DELETE");
this.readWriteNonCoreDataService.deleteDatatableEntries(datatable, apptableId);
EntityIdentifier entityIdentifier = new EntityIdentifier(Long.valueOf(apptableId));
EntityIdentifier entityIdentifier = EntityIdentifier.resourceResult(Long.valueOf(apptableId), null);
return Response.ok().entity(entityIdentifier).build();
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@@ -195,20 +194,19 @@ public class DataTableApiResource {
@Path("{datatable}/{apptableId}/{datatableId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response deleteDatatableEntries(@PathParam("datatable") final String datatable, @PathParam("apptableId") final Long apptableId,
public String deleteDatatableEntries(@PathParam("datatable") final String datatable, @PathParam("apptableId") final Long apptableId,
@PathParam("datatableId") final Long datatableId) {
checkUserPermissionForDatatable(datatable, "DELETE");
this.readWriteNonCoreDataService.deleteDatatableEntry(datatable, apptableId, datatableId);
EntityIdentifier entityIdentifier = new EntityIdentifier(Long.valueOf(apptableId));
return Response.ok().entity(entityIdentifier).build();
EntityIdentifier entityIdentifier = EntityIdentifier.resourceResult(Long.valueOf(apptableId), null);
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
private Map<String, String> getQueryParamsFromJsonRequestBody(String jsonRequestBody) {
private Map<String, String> getQueryParamsFromJsonRequestBody(final String jsonRequestBody) {
Map<String, String> queryParams = new HashMap<String, String>();
@@ -234,7 +232,7 @@ public class DataTableApiResource {
}
private void checkUserPermissionForDatatable(String datatable, String accessType) {
private void checkUserPermissionForDatatable(final String datatable, final String accessType) {
AppUser currentUser = context.authenticatedUser();
if (currentUser.hasNotPermissionForDatatable(datatable, accessType)) { throw new NoAuthorizationException("Not Authorised to "
+ accessType + " Data Table: " + datatable); }
@@ -19,7 +19,7 @@ import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.dataqueries.data.GenericResultsetData;
import org.mifosplatform.infrastructure.dataqueries.service.ReadReportingService;
import org.mifosplatform.infrastructure.security.exception.NoAuthorizationException;
@@ -34,14 +34,17 @@ import org.springframework.stereotype.Component;
@Scope("singleton")
public class ReportsApiResource {
@Autowired
private PlatformSecurityContext context;
private final PlatformSecurityContext context;
private final ToApiJsonSerializer<GenericResultsetData> toApiJsonSerializer;
private final ReadReportingService readExtraDataAndReportingService;
@Autowired
private ReadReportingService readExtraDataAndReportingService;
@Autowired
private PortfolioApiJsonSerializerService apiJsonSerializerService;
public ReportsApiResource(final PlatformSecurityContext context, final ReadReportingService readExtraDataAndReportingService,
final ToApiJsonSerializer<GenericResultsetData> toApiJsonSerializer) {
this.context = context;
this.readExtraDataAndReportingService = readExtraDataAndReportingService;
this.toApiJsonSerializer = toApiJsonSerializer;
}
@GET
@Consumes({ MediaType.APPLICATION_JSON })
@@ -55,8 +58,7 @@ public class ReportsApiResource {
boolean exportPdf = ApiParameterHelper.exportPdf(uriInfo.getQueryParameters());
if (exportPdf)
{
if (exportPdf) {
String result = this.readExtraDataAndReportingService.retrieveReportPDF(".", ".", extractedQueryParams);
return Response.ok().entity(result).header("Content-Disposition", "attachment;filename=ReportList.pdf").build();
}
@@ -64,7 +66,7 @@ public class ReportsApiResource {
if (!exportCsv) {
GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(".", ".", extractedQueryParams);
final String json = this.apiJsonSerializerService.serializeGenericResultsetDataToJson(prettyPrint, result);
final String json = this.toApiJsonSerializer.serializePretty(prettyPrint, result);
return Response.ok().entity(json).build();
}
@@ -123,7 +125,7 @@ public class ReportsApiResource {
GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(reportName, parameterTypeValue,
reportParams);
final String json = this.apiJsonSerializerService.serializeGenericResultsetDataToJson(prettyPrint, result);
final String json = this.toApiJsonSerializer.serializePretty(prettyPrint, result);
return Response.ok().entity(json).type(MediaType.APPLICATION_JSON).build();
}
@@ -136,7 +138,7 @@ public class ReportsApiResource {
.header("Content-Disposition", "attachment;filename=" + reportName.replaceAll(" ", "") + ".csv").build();
}
private void checkUserPermissionForReport(String reportName, boolean parameterType) {
private void checkUserPermissionForReport(final String reportName, final boolean parameterType) {
// Anyone can run a 'report' that is simply getting possible parameter
// (dropdown listbox) values.
@@ -2,6 +2,7 @@ package org.mifosplatform.infrastructure.documentmanagement.api;
import java.io.File;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -22,9 +23,10 @@ import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.UriInfo;
import org.mifosplatform.infrastructure.core.api.ApiConstants;
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.core.service.FileUtils;
import org.mifosplatform.infrastructure.documentmanagement.command.DocumentCommand;
import org.mifosplatform.infrastructure.documentmanagement.data.DocumentData;
@@ -44,21 +46,26 @@ import com.sun.jersey.multipart.FormDataParam;
@Scope("singleton")
public class DocumentManagementApiResource {
private final Set<String> RESPONSE_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "parentEntityType", "parentEntityId",
"name", "fileName", "type", "size", "description"));
private final String SystemEntityType = "DOCUMENT";
private final PlatformSecurityContext context;
private final DocumentReadPlatformService documentReadPlatformService;
private final DocumentWritePlatformService documentWritePlatformService;
private final PortfolioApiJsonSerializerService apiJsonSerializerService;
private final ApiRequestParameterHelper apiRequestParameterHelper;
private final ToApiJsonSerializer<DocumentData> toApiJsonSerializer;
@Autowired
public DocumentManagementApiResource(final PlatformSecurityContext context,
final DocumentReadPlatformService documentReadPlatformService, final DocumentWritePlatformService documentWritePlatformService,
final PortfolioApiJsonSerializerService apiJsonSerializerService) {
final ApiRequestParameterHelper apiRequestParameterHelper, final ToApiJsonSerializer<DocumentData> toApiJsonSerializer) {
this.context = context;
this.documentReadPlatformService = documentReadPlatformService;
this.documentWritePlatformService = documentWritePlatformService;
this.apiJsonSerializerService = apiJsonSerializerService;
this.apiRequestParameterHelper = apiRequestParameterHelper;
this.toApiJsonSerializer = toApiJsonSerializer;
}
@GET
@@ -69,18 +76,16 @@ public class DocumentManagementApiResource {
context.authenticatedUser().validateHasReadPermission(SystemEntityType);
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
final Collection<DocumentData> documentDatas = this.documentReadPlatformService.retrieveAllDocuments(entityType, entityId);
return this.apiJsonSerializerService.serializeDocumentDataToJson(prettyPrint, responseParameters, documentDatas);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, documentDatas, RESPONSE_DATA_PARAMETERS);
}
@POST
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public Response createDocument(@PathParam("entityType") String entityType, @PathParam("entityId") Long entityId,
public String createDocument(@PathParam("entityType") String entityType, @PathParam("entityId") Long entityId,
@HeaderParam("Content-Length") Long fileSize, @FormDataParam("file") InputStream inputStream,
@FormDataParam("file") FormDataContentDisposition fileDetails, @FormDataParam("file") FormDataBodyPart bodyPart,
@FormDataParam("name") String name, @FormDataParam("description") String description) {
@@ -101,14 +106,14 @@ public class DocumentManagementApiResource {
Long documentId = this.documentWritePlatformService.createDocument(documentCommand, inputStream);
return Response.ok().entity(new EntityIdentifier(documentId)).build();
return this.toApiJsonSerializer.serialize(EntityIdentifier.resourceResult(documentId, null));
}
@PUT
@Path("{documentId}")
@Consumes({ MediaType.MULTIPART_FORM_DATA })
@Produces({ MediaType.APPLICATION_JSON })
public Response updateDocument(@PathParam("entityType") String entityType, @PathParam("entityId") Long entityId,
public String updateDocument(@PathParam("entityType") String entityType, @PathParam("entityId") Long entityId,
@PathParam("documentId") Long documentId, @HeaderParam("Content-Length") Long fileSize,
@FormDataParam("file") InputStream inputStream, @FormDataParam("file") FormDataContentDisposition fileDetails,
@FormDataParam("file") FormDataBodyPart bodyPart, @FormDataParam("name") String name,
@@ -138,7 +143,7 @@ public class DocumentManagementApiResource {
}
EntityIdentifier identifier = this.documentWritePlatformService.updateDocument(documentCommand, inputStream);
return Response.ok().entity(identifier).build();
return this.toApiJsonSerializer.serialize(identifier);
}
@GET
@@ -150,12 +155,10 @@ public class DocumentManagementApiResource {
context.authenticatedUser().validateHasReadPermission(SystemEntityType);
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
final DocumentData documentData = this.documentReadPlatformService.retrieveDocument(entityType, entityId, documentId);
return this.apiJsonSerializerService.serializeDocumentDataToJson(prettyPrint, responseParameters, documentData);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, documentData, RESPONSE_DATA_PARAMETERS);
}
@GET
@@ -172,6 +175,7 @@ public class DocumentManagementApiResource {
ResponseBuilder response = Response.ok(file);
response.header("Content-Disposition", "attachment; filename=\"" + documentData.fileName() + "\"");
response.header("Content-Type", documentData.contentType());
return response.build();
}
@@ -179,13 +183,14 @@ public class DocumentManagementApiResource {
@Path("{documentId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response deleteDocument(@PathParam("entityType") String entityType, @PathParam("entityId") Long entityId,
public String deleteDocument(@PathParam("entityType") String entityType, @PathParam("entityId") Long entityId,
@PathParam("documentId") Long documentId) {
DocumentCommand documentCommand = new DocumentCommand(null, documentId, entityType, entityId, null, null, null, null, null, null);
final DocumentCommand documentCommand = new DocumentCommand(null, documentId, entityType, entityId, null, null, null, null, null,
null);
EntityIdentifier documentIdentifier = this.documentWritePlatformService.deleteDocument(documentCommand);
final EntityIdentifier documentIdentifier = this.documentWritePlatformService.deleteDocument(documentCommand);
return Response.ok(documentIdentifier).build();
return this.toApiJsonSerializer.serialize(documentIdentifier);
}
}
@@ -10,7 +10,7 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.security.data.AuthenticatedUserData;
import org.mifosplatform.useradministration.domain.AppUser;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,12 +29,16 @@ import com.sun.jersey.core.util.Base64;
@Scope("singleton")
public class AuthenticationApiResource {
@Qualifier("customAuthenticationProvider")
@Autowired
private DaoAuthenticationProvider customAuthenticationProvider;
private final DaoAuthenticationProvider customAuthenticationProvider;
private final ToApiJsonSerializer<AuthenticatedUserData> apiJsonSerializerService;
@Autowired
private PortfolioApiJsonSerializerService apiJsonSerializerService;
public AuthenticationApiResource(
@Qualifier("customAuthenticationProvider") final DaoAuthenticationProvider customAuthenticationProvider,
final ToApiJsonSerializer<AuthenticatedUserData> apiJsonSerializerService) {
this.customAuthenticationProvider = customAuthenticationProvider;
this.apiJsonSerializerService = apiJsonSerializerService;
}
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@@ -59,6 +63,6 @@ public class AuthenticationApiResource {
base64EncodedAuthenticationKey));
}
return this.apiJsonSerializerService.serializeAuthenticatedUserDataToJson(false, authenticatedUserData);
return this.apiJsonSerializerService.serialize(authenticatedUserData);
}
}
@@ -27,10 +27,9 @@ import org.mifosplatform.commands.service.PortfolioCommandsReadPlatformService;
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
import org.mifosplatform.infrastructure.core.api.PortfolioApiDataConversionService;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.organisation.office.data.OfficeLookup;
import org.mifosplatform.organisation.office.service.OfficeReadPlatformService;
@@ -52,27 +51,27 @@ public class ClientsApiResource {
private final PlatformSecurityContext context;
private final ClientReadPlatformService clientReadPlatformService;
private final OfficeReadPlatformService officeReadPlatformService;
private final DefaultToApiJsonSerializer<ClientData> toApiJsonSerializer;
private final ToApiJsonSerializer<ClientData> toApiJsonSerializer;
private final ToApiJsonSerializer<ClientAccountSummaryCollectionData> clientAccountSummaryToApiJsonSerializer;
private final ApiRequestParameterHelper apiRequestParameterHelper;
private final PortfolioApiDataConversionService apiDataConversionService;
private final PortfolioApiJsonSerializerService apiJsonSerializerService;
private final PortfolioCommandsReadPlatformService commandSourceReadPlatformService;
private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService;
@Autowired
public ClientsApiResource(final PlatformSecurityContext context, final ClientReadPlatformService readPlatformService,
final OfficeReadPlatformService officeReadPlatformService, final DefaultToApiJsonSerializer<ClientData> toApiJsonSerializer,
final OfficeReadPlatformService officeReadPlatformService, final ToApiJsonSerializer<ClientData> toApiJsonSerializer,
final ToApiJsonSerializer<ClientAccountSummaryCollectionData> clientAccountSummaryToApiJsonSerializer,
final ApiRequestParameterHelper apiRequestParameterHelper, final PortfolioApiDataConversionService apiDataConversionService,
final PortfolioApiJsonSerializerService apiJsonSerializerService,
final PortfolioCommandsReadPlatformService commandsReadPlatformService,
final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) {
this.context = context;
this.clientReadPlatformService = readPlatformService;
this.officeReadPlatformService = officeReadPlatformService;
this.toApiJsonSerializer = toApiJsonSerializer;
this.clientAccountSummaryToApiJsonSerializer = clientAccountSummaryToApiJsonSerializer;
this.apiRequestParameterHelper = apiRequestParameterHelper;
this.apiDataConversionService = apiDataConversionService;
this.apiJsonSerializerService = apiJsonSerializerService;
this.commandSourceReadPlatformService = commandsReadPlatformService;
this.commandsSourceWritePlatformService = commandsSourceWritePlatformService;
}
@@ -251,12 +250,17 @@ public class ClientsApiResource {
context.authenticatedUser().validateHasReadPermission("CLIENT");
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
final ClientAccountSummaryCollectionData clientAccount = this.clientReadPlatformService.retrieveClientAccountDetails(clientId);
return this.apiJsonSerializerService.serializeClientAccountSummaryCollectionDataToJson(prettyPrint, responseParameters,
clientAccount);
final Set<String> CLIENT_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("pendingApprovalLoans",
"awaitingDisbursalLoans", "openLoans", "closedLoans", "anyLoanCount", "pendingApprovalLoanCount",
"awaitingDisbursalLoanCount", "activeLoanCount", "closedLoanCount", "pendingApprovalDespositAccountsCount",
"pendingApprovalDespositAccounts", "approvedDespositAccountsCount", "approvedDespositAccounts",
"withdrawnByClientDespositAccountsCount", "withdrawnByClientDespositAccounts", "closedDepositAccountsCount",
"closedDepositAccounts", "rejectedDepositAccountsCount", "rejectedDepositAccounts", "preclosedDepositAccountsCount",
"preclosedDepositAccounts"));
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.clientAccountSummaryToApiJsonSerializer.serialize(settings, clientAccount, CLIENT_ACCOUNTS_DATA_PARAMETERS);
}
}
@@ -16,14 +16,15 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.apache.commons.lang.StringUtils;
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
import org.mifosplatform.infrastructure.core.api.PortfolioApiDataConversionService;
import org.mifosplatform.infrastructure.core.api.PortfolioApiJsonSerializerService;
import org.mifosplatform.infrastructure.core.data.EntityIdentifier;
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
import org.mifosplatform.organisation.office.data.OfficeLookup;
import org.mifosplatform.organisation.office.service.OfficeReadPlatformService;
@@ -43,29 +44,40 @@ import org.springframework.stereotype.Component;
@Scope("singleton")
public class GroupsApiResource {
@Autowired
private static final Set<String> GROUP_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("id", "officeId", "name", "externalId",
"clientMembers", "allowedClients", "allowedOffices"));
private final PlatformSecurityContext context;
private GroupReadPlatformService groupReadPlatformService;
private final GroupWritePlatformService groupWritePlatformService;
private final ClientReadPlatformService clientReadPlatformService;
private final OfficeReadPlatformService officeReadPlatformService;
private final ToApiJsonSerializer<GroupData> toApiJsonSerializer;
private final ToApiJsonSerializer<GroupAccountSummaryCollectionData> groupSummaryToApiJsonSerializer;
private final ApiRequestParameterHelper apiRequestParameterHelper;
private final PortfolioApiDataConversionService apiDataConversionService;
@Autowired
private GroupWritePlatformService groupWritePlatformService;
@Autowired
private ClientReadPlatformService clientReadPlatformService;
@Autowired
private PortfolioApiDataConversionService apiDataConversionService;
@Autowired
private OfficeReadPlatformService officeReadPlatformService;
@Autowired
private PortfolioApiJsonSerializerService apiJsonSerializerService;
@Autowired
private PlatformSecurityContext context;
private static final Set<String> typicalResponseParameters = new HashSet<String>(Arrays.asList("id", "officeId", "name", "externalId",
"clientMembers"));
public GroupsApiResource(
final PlatformSecurityContext context,
final GroupReadPlatformService groupReadPlatformService,
final GroupWritePlatformService groupWritePlatformService,
final ClientReadPlatformService clientReadPlatformService,
final OfficeReadPlatformService officeReadPlatformService,
final ToApiJsonSerializer<GroupData> toApiJsonSerializer,
final ToApiJsonSerializer<GroupAccountSummaryCollectionData> groupSummaryToApiJsonSerializer,
final ApiRequestParameterHelper apiRequestParameterHelper,
final PortfolioApiDataConversionService apiDataConversionService) {
this.context = context;
this.groupReadPlatformService = groupReadPlatformService;
this.groupWritePlatformService = groupWritePlatformService;
this.clientReadPlatformService = clientReadPlatformService;
this.officeReadPlatformService = officeReadPlatformService;
this.toApiJsonSerializer = toApiJsonSerializer;
this.groupSummaryToApiJsonSerializer = groupSummaryToApiJsonSerializer;
this.apiRequestParameterHelper = apiRequestParameterHelper;
this.apiDataConversionService = apiDataConversionService;
}
@GET
@Consumes({ MediaType.APPLICATION_JSON })
@@ -77,17 +89,10 @@ public class GroupsApiResource {
context.authenticatedUser().validateHasReadPermission("GROUP");
final String extraCriteria = getGroupExtraCriteria(sqlSearch, officeId, externalId, name, hierarchy);
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
if (responseParameters.isEmpty()) {
responseParameters.addAll(typicalResponseParameters);
}
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
Collection<GroupData> groups = this.groupReadPlatformService.retrieveAllGroups(extraCriteria);
return this.apiJsonSerializerService.serializeGroupDataToJson(prettyPrint, responseParameters, groups);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, groups, GROUP_DATA_PARAMETERS);
}
@GET
@@ -99,13 +104,6 @@ public class GroupsApiResource {
context.authenticatedUser().validateHasReadPermission("GROUP");
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
if (responseParameters.isEmpty()) {
responseParameters.addAll(typicalResponseParameters);
}
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
GroupData group = this.groupReadPlatformService.retrieveGroup(groupId);
final Collection<ClientLookup> clientMembers = this.groupReadPlatformService.retrieveClientMembers(groupId);
Collection<ClientLookup> availableClients = null;
@@ -115,9 +113,6 @@ public class GroupsApiResource {
boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
if (template) {
responseParameters.add("allowedClients");
responseParameters.add("allowedOffices");
if (officeId != null) {
availableClients = this.clientReadPlatformService.retrieveAllIndividualClientsForLookupByOfficeId(officeId);
} else {
@@ -131,7 +126,8 @@ public class GroupsApiResource {
group = new GroupData(group, group.clientMembers(), availableClients, allowedOffices);
}
return this.apiJsonSerializerService.serializeGroupDataToJson(prettyPrint, responseParameters, group);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, group, GROUP_DATA_PARAMETERS);
}
@GET
@@ -142,58 +138,51 @@ public class GroupsApiResource {
context.authenticatedUser().validateHasReadPermission("GROUP");
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
if (responseParameters.isEmpty()) {
responseParameters.addAll(typicalResponseParameters);
}
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
responseParameters.addAll(Arrays.asList("officeId", "allowedClients", "allowedOffices"));
GroupData groupData;
GroupData groupTemplateData;
if (officeId != null) {
groupData = this.groupReadPlatformService.retrieveNewGroupDetails(officeId);
groupTemplateData = this.groupReadPlatformService.retrieveNewGroupDetails(officeId);
} else {
groupData = this.groupReadPlatformService.retrieveNewGroupDetails(context.authenticatedUser().getOffice().getId());
groupTemplateData = this.groupReadPlatformService.retrieveNewGroupDetails(context.authenticatedUser().getOffice().getId());
}
return this.apiJsonSerializerService.serializeGroupDataToJson(prettyPrint, responseParameters, groupData);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.toApiJsonSerializer.serialize(settings, groupTemplateData, GROUP_DATA_PARAMETERS);
}
@POST
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response createGroup(final String jsonRequestBody) {
public String createGroup(final String jsonRequestBody) {
final GroupCommand command = this.apiDataConversionService.convertJsonToGroupCommand(null, jsonRequestBody);
EntityIdentifier entityIdentifier = this.groupWritePlatformService.createGroup(command);
return Response.ok().entity(entityIdentifier).build();
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@PUT
@Path("{groupId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response updateGroup(@PathParam("groupId") final Long groupId, final String jsonRequestBody) {
public String updateGroup(@PathParam("groupId") final Long groupId, final String jsonRequestBody) {
final GroupCommand command = this.apiDataConversionService.convertJsonToGroupCommand(groupId, jsonRequestBody);
EntityIdentifier entityIdentifier = this.groupWritePlatformService.updateGroup(command);
return Response.ok().entity(entityIdentifier).build();
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@DELETE
@Path("{groupId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response deleteGroup(@PathParam("groupId") final Long groupId) {
public String deleteGroup(@PathParam("groupId") final Long groupId) {
EntityIdentifier entityIdentifier = this.groupWritePlatformService.deleteGroup(groupId);
return Response.ok().entity(entityIdentifier).build();
return this.toApiJsonSerializer.serialize(entityIdentifier);
}
@GET
@@ -204,20 +193,14 @@ public class GroupsApiResource {
context.authenticatedUser().validateHasReadPermission("GROUP");
Set<String> typicalResponseParameters = new HashSet<String>(Arrays.asList("pendingApprovalLoans", "awaitingDisbursalLoans",
"openLoans", "closedLoans", "anyLoanCount", "pendingApprovalLoanCount", "awaitingDisbursalLoanCount", "activeLoanCount",
"closedLoanCount"));
GroupAccountSummaryCollectionData groupAccount = this.groupReadPlatformService.retrieveGroupAccountDetails(groupId);
final Set<String> GROUP_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("pendingApprovalLoans",
"awaitingDisbursalLoans", "openLoans", "closedLoans", "anyLoanCount", "pendingApprovalLoanCount", "awaitingDisbursalLoanCount",
"activeLoanCount", "closedLoanCount"));
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
if (responseParameters.isEmpty()) {
responseParameters.addAll(typicalResponseParameters);
}
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
GroupAccountSummaryCollectionData clientAccount = this.groupReadPlatformService.retrieveGroupAccountDetails(groupId);
return this.apiJsonSerializerService.serializeGroupAccountSummaryCollectionDataToJson(prettyPrint, responseParameters,
clientAccount);
final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters());
return this.groupSummaryToApiJsonSerializer.serialize(settings, groupAccount, GROUP_ACCOUNTS_DATA_PARAMETERS);
}
// 'g.' preffix because of ERROR 1052 (23000): Column 'column_name' in where