From 31433c2e72a1c96d97292e74d39cb44163a6963a Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Mon, 23 Jul 2012 00:44:53 +0100 Subject: [PATCH] tidy up json serialization around additional data and reports. --- .../ReadExtraDataAndReportingService.java | 16 ++-- .../ReadExtraDataAndReportingServiceImpl.java | 30 +++--- .../api/AdditionalFieldsApiResource.java | 44 ++++----- .../platform/api/ReportsApiResource.java | 96 ++++++++----------- .../api/data/AdditionalFieldsSet.java | 46 --------- .../api/data/AdditionalFieldsSetData.java | 26 +++++ ...sultset.java => GenericResultsetData.java} | 4 +- .../ApiDataConversionService.java | 6 ++ .../ApiDataConversionServiceImpl.java | 36 +++++++ .../ApiJSONFormattingService.java | 4 + .../ApiJSONFormattingServiceImpl.java | 6 +- .../infrastructure/ApiParameterHelper.java | 18 ++++ 12 files changed, 176 insertions(+), 156 deletions(-) delete mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSet.java create mode 100644 mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java rename mifosng-provider/src/main/java/org/mifosng/platform/api/data/{GenericResultset.java => GenericResultsetData.java} (89%) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingService.java b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingService.java index 2b86bde02..28bf49d72 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingService.java @@ -6,8 +6,8 @@ import java.util.Map; import javax.ws.rs.core.Response; import javax.ws.rs.core.StreamingOutput; -import org.mifosng.platform.api.data.AdditionalFieldsSet; -import org.mifosng.platform.api.data.GenericResultset; +import org.mifosng.platform.api.data.AdditionalFieldsSetData; +import org.mifosng.platform.api.data.GenericResultsetData; public interface ReadExtraDataAndReportingService { @@ -15,18 +15,18 @@ public interface ReadExtraDataAndReportingService { Map extractedQueryParams); // @PreAuthorize(value = "hasAnyRole('REPORTING_SUPER_USER_ROLE')") - GenericResultset retrieveGenericResultset(String name, String type, + GenericResultsetData retrieveGenericResultset(String name, String type, Map extractedQueryParams); - List retrieveExtraDatasetNames(String type); + List retrieveExtraDatasetNames(String type); - GenericResultset retrieveExtraData(String type, String set, Long id); + GenericResultsetData retrieveExtraData(String type, String set, Long id); void updateExtraData(String type, String set, Long id, Map queryParams); - public Response processPentahoRequest(String reportName, - String outputType, Map queryParams); - + Response processPentahoRequest(String reportName, String outputType, + Map queryParams); + String getReportType(String reportName); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java index 9227d5851..46870f575 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java @@ -20,8 +20,8 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.StreamingOutput; import org.apache.commons.lang.StringUtils; -import org.mifosng.platform.api.data.AdditionalFieldsSet; -import org.mifosng.platform.api.data.GenericResultset; +import org.mifosng.platform.api.data.AdditionalFieldsSetData; +import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.ResultsetColumnHeader; import org.mifosng.platform.api.data.ResultsetDataRow; import org.mifosng.platform.exceptions.AdditionalFieldsNotFoundException; @@ -76,7 +76,7 @@ public class ReadExtraDataAndReportingServiceImpl implements public void write(OutputStream out) { try { - GenericResultset result = retrieveGenericResultset(name, + GenericResultsetData result = retrieveGenericResultset(name, type, queryParams); StringBuffer sb = generateCsvFileBuffer(result); @@ -102,7 +102,7 @@ public class ReadExtraDataAndReportingServiceImpl implements } - private static StringBuffer generateCsvFileBuffer(GenericResultset result) { + private static StringBuffer generateCsvFileBuffer(GenericResultsetData result) { StringBuffer writer = new StringBuffer(); List columnHeaders = result.getColumnHeaders(); @@ -149,7 +149,7 @@ public class ReadExtraDataAndReportingServiceImpl implements } @Override - public GenericResultset retrieveGenericResultset(final String name, + public GenericResultsetData retrieveGenericResultset(final String name, final String type, final Map queryParams) { long startTime = System.currentTimeMillis(); @@ -180,7 +180,7 @@ public class ReadExtraDataAndReportingServiceImpl implements sql = getSQLtoRun(name, type, queryParams); } - GenericResultset result = fillReportingGenericResultSet(sql); + GenericResultsetData result = fillReportingGenericResultSet(sql); long elapsed = System.currentTimeMillis() - startTime; logger.info("FINISHING Report/Request Name: " + name + " - " + type @@ -188,9 +188,9 @@ public class ReadExtraDataAndReportingServiceImpl implements return result; } - private GenericResultset fillReportingGenericResultSet(final String sql) { + private GenericResultsetData fillReportingGenericResultSet(final String sql) { - GenericResultset result = new GenericResultset(); + GenericResultsetData result = new GenericResultsetData(); Connection db_connection = null; Statement db_statement = null; @@ -328,9 +328,9 @@ public class ReadExtraDataAndReportingServiceImpl implements } @Override - public List retrieveExtraDatasetNames(String type) { + public List retrieveExtraDatasetNames(String type) { - List additionalFieldsSets = new ArrayList(); + List additionalFieldsSets = new ArrayList(); Connection db_connection = null; Statement db_statement = null; @@ -350,7 +350,7 @@ public class ReadExtraDataAndReportingServiceImpl implements ResultSet rs = db_statement.executeQuery(sql); while (rs.next()) { - additionalFieldsSets.add(new AdditionalFieldsSet(rs + additionalFieldsSets.add(new AdditionalFieldsSetData(rs .getInt("id"), rs.getString("set"), rs .getString("type"))); } @@ -366,19 +366,19 @@ public class ReadExtraDataAndReportingServiceImpl implements } @Override - public GenericResultset retrieveExtraData(String type, String set, Long id) { + public GenericResultsetData retrieveExtraData(String type, String set, Long id) { long startTime = System.currentTimeMillis(); - GenericResultset result = fillExtraDataGenericResultSet(type, set, id); + GenericResultsetData result = fillExtraDataGenericResultSet(type, set, id); long elapsed = System.currentTimeMillis() - startTime; logger.info("FINISHING SET: " + set + " Elapsed Time: " + elapsed); return result; } - private GenericResultset fillExtraDataGenericResultSet(String type, + private GenericResultsetData fillExtraDataGenericResultSet(String type, String set, Long id) { - GenericResultset result = new GenericResultset(); + GenericResultsetData result = new GenericResultsetData(); Connection db_connection = null; Statement db_statement1 = null; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java index ba9404b04..f80eea3fa 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java @@ -24,11 +24,12 @@ import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import org.mifosng.platform.InvalidSqlException; import org.mifosng.platform.ReadExtraDataAndReportingService; -import org.mifosng.platform.api.data.AdditionalFieldsSet; +import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.ApiParameterError; import org.mifosng.platform.api.data.EntityIdentifier; -import org.mifosng.platform.api.data.GenericResultset; -import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; +import org.mifosng.platform.api.data.GenericResultsetData; +import org.mifosng.platform.api.infrastructure.ApiDataConversionService; +import org.mifosng.platform.api.infrastructure.ApiParameterHelper; import org.mifosng.platform.exceptions.PlatformApiDataValidationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,30 +42,23 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class AdditionalFieldsApiResource { - private final static Logger logger = LoggerFactory - .getLogger(AdditionalFieldsApiResource.class); - - private String allowedFieldList = ""; - private String filterName = "myFilter"; + private final static Logger logger = LoggerFactory.getLogger(AdditionalFieldsApiResource.class); @Autowired private ReadExtraDataAndReportingService readExtraDataAndReportingService; - + @Autowired - private ApiJSONFormattingService jsonFormattingService; + private ApiDataConversionService apiDataConversionService; @GET @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) - public String datasets(@QueryParam("type") String type, - @Context UriInfo uriInfo) { + public String datasets(@QueryParam("type") final String type, @Context final UriInfo uriInfo) { - List result = this.readExtraDataAndReportingService - .retrieveExtraDatasetNames(type); + List result = this.readExtraDataAndReportingService.retrieveExtraDatasetNames(type); - String selectedFields = ""; - return this.jsonFormattingService.convertRequest(result, filterName, - allowedFieldList, selectedFields, uriInfo.getQueryParameters()); + boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); + return this.apiDataConversionService.convertAdditionalFieldsSetDataToJson(prettyPrint, result.toArray(new AdditionalFieldsSetData[result.size()])); } @GET @@ -73,17 +67,13 @@ public class AdditionalFieldsApiResource { @Produces({MediaType.APPLICATION_JSON}) public String extraData(@PathParam("type") final String type, @PathParam("set") final String set, @PathParam("id") final Long id, - @Context UriInfo uriInfo) { + @Context final UriInfo uriInfo) { try { - GenericResultset result = this.readExtraDataAndReportingService - .retrieveExtraData(type, set, id); + GenericResultsetData result = this.readExtraDataAndReportingService.retrieveExtraData(type, set, id); - String selectedFields = ""; - //Note that GenericResultSet doesn't have a filter so all fields are returned (this is correct) - return this.jsonFormattingService.convertRequest(result, filterName, - allowedFieldList, selectedFields, - uriInfo.getQueryParameters()); + boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); + return this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); } catch (InvalidSqlException e) { List dataValidationErrors = new ArrayList(); ApiParameterError error = ApiParameterError.parameterError( @@ -102,7 +92,7 @@ public class AdditionalFieldsApiResource { @Produces({MediaType.APPLICATION_JSON}) public Response saveExtraData(@PathParam("type") final String type, @PathParam("set") final String set, @PathParam("id") final Long id, - String reqbody) { + final String jsonRequestBody) { try { @@ -110,7 +100,7 @@ public class AdditionalFieldsApiResource { String pValue = ""; String pName; try { - JSONObject jsonObj = new JSONObject(reqbody); + JSONObject jsonObj = new JSONObject(jsonRequestBody); JSONArray jsonArr = jsonObj.names(); if (jsonArr != null) { for (int i = 0; i < jsonArr.length(); i++) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java index ed83b5aff..b958c57e5 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java @@ -17,8 +17,9 @@ import javax.ws.rs.core.StreamingOutput; import javax.ws.rs.core.UriInfo; import org.mifosng.platform.ReadExtraDataAndReportingService; -import org.mifosng.platform.api.data.GenericResultset; -import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; +import org.mifosng.platform.api.data.GenericResultsetData; +import org.mifosng.platform.api.infrastructure.ApiDataConversionService; +import org.mifosng.platform.api.infrastructure.ApiParameterHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -28,38 +29,31 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class ReportsApiResource { - private String allowedFieldList = ""; - private String filterName = "myFilter"; - @Autowired private ReadExtraDataAndReportingService readExtraDataAndReportingService; @Autowired - private ApiJSONFormattingService jsonFormattingService; - + private ApiDataConversionService apiDataConversionService; + @GET @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON, "application/x-msdownload" }) public Response retrieveReportList(@Context final UriInfo uriInfo) { - MultivaluedMap queryParams = uriInfo - .getQueryParameters(); Map extractedQueryParams = new HashMap(); + + boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); + boolean exportCsv = ApiParameterHelper.exportCsv(uriInfo.getQueryParameters()); - String exportCSV = queryParams.getFirst("exportCSV"); - - if ((exportCSV == null) || (!(exportCSV.equalsIgnoreCase("true")))) { - GenericResultset result = this.readExtraDataAndReportingService - .retrieveGenericResultset(".", ".", extractedQueryParams); - String selectedFields = ""; - String json = this.jsonFormattingService.convertRequest(result, - filterName, allowedFieldList, selectedFields, - uriInfo.getQueryParameters()); + if (!exportCsv) { + GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(".", ".", extractedQueryParams); + + final String json = this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); + return Response.ok().entity(json).build(); } - StreamingOutput result = this.readExtraDataAndReportingService - .retrieveReportCSV(".", ".", extractedQueryParams); + StreamingOutput result = this.readExtraDataAndReportingService.retrieveReportCSV(".", ".", extractedQueryParams); return Response .ok() @@ -71,52 +65,43 @@ public class ReportsApiResource { @GET @Path("{reportName}") @Consumes({MediaType.APPLICATION_JSON}) - @Produces({MediaType.APPLICATION_JSON, "application/x-msdownload", - "application/vnd.ms-excel", "application/pdf", "text/html" }) + @Produces({MediaType.APPLICATION_JSON, "application/x-msdownload","application/vnd.ms-excel", "application/pdf", "text/html" }) public Response retrieveReport( @PathParam("reportName") final String reportName, @Context final UriInfo uriInfo) { - MultivaluedMap queryParams = uriInfo - .getQueryParameters(); + MultivaluedMap queryParams = uriInfo.getQueryParameters(); + + boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); + boolean exportCsv = ApiParameterHelper.exportCsv(uriInfo.getQueryParameters()); + boolean parameterType = ApiParameterHelper.parameterType(uriInfo.getQueryParameters()); - String parameterType = queryParams.getFirst("parameterType"); - if ((parameterType == null) - || (!(parameterType.equalsIgnoreCase("true")))) { - parameterType = "report"; - } else { - parameterType = "parameter"; - } - - if (parameterType.equals("report")) { - if (this.readExtraDataAndReportingService.getReportType(reportName) - .equalsIgnoreCase("Pentaho")) { - - return this.readExtraDataAndReportingService - .processPentahoRequest(reportName, - queryParams.getFirst("output-type"), - getReportParams(queryParams, true)); + String parameterTypeValue = null; + if (!parameterType) { + parameterTypeValue = "report"; + if (this.readExtraDataAndReportingService.getReportType(reportName).equalsIgnoreCase("Pentaho")) { + Map reportParams = getReportParams(queryParams, true); + return this.readExtraDataAndReportingService.processPentahoRequest(reportName, queryParams.getFirst("output-type"), reportParams); } + } else { + parameterTypeValue = "parameter"; } - String exportCSV = queryParams.getFirst("exportCSV"); - if ((exportCSV == null) || (!(exportCSV.equalsIgnoreCase("true")))) { - // JSON - GenericResultset result = this.readExtraDataAndReportingService - .retrieveGenericResultset(reportName, parameterType, - getReportParams(queryParams, false)); + if (!exportCsv) { + + Map reportParams = getReportParams(queryParams, false); + + GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(reportName, parameterTypeValue, reportParams); - String selectedFields = ""; - String json = this.jsonFormattingService.convertRequest(result, - filterName, allowedFieldList, selectedFields, - uriInfo.getQueryParameters()); - return Response.ok().entity(json).type(MediaType.APPLICATION_JSON) - .build(); + final String json = this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); + + return Response.ok().entity(json).type(MediaType.APPLICATION_JSON).build(); } // CSV Export - StreamingOutput result = this.readExtraDataAndReportingService - .retrieveReportCSV(reportName, parameterType, getReportParams(queryParams, false)); + Map reportParams = getReportParams(queryParams, false); + StreamingOutput result = this.readExtraDataAndReportingService.retrieveReportCSV(reportName, parameterTypeValue, reportParams); + return Response .ok() .entity(result) @@ -126,8 +111,7 @@ public class ReportsApiResource { + ".csv").build(); } - private Map getReportParams( - MultivaluedMap queryParams, Boolean isPentaho) { + private Map getReportParams(final MultivaluedMap queryParams, final Boolean isPentaho) { Map reportParams = new HashMap(); Set keys = queryParams.keySet(); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSet.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSet.java deleted file mode 100644 index 09a203e8f..000000000 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSet.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.mifosng.platform.api.data; - -import org.codehaus.jackson.map.annotate.JsonFilter; - -@JsonFilter("myFilter") -public class AdditionalFieldsSet { - - private Integer id; - private String name; - private String type; - protected AdditionalFieldsSet() { - // - } - - public AdditionalFieldsSet(final Integer id, final String name, final String type) { - this.id = id; - this.name = name; - this.type = type; - } - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - -} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java new file mode 100644 index 000000000..d44c22c0a --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java @@ -0,0 +1,26 @@ +package org.mifosng.platform.api.data; + +public class AdditionalFieldsSetData { + + private final Integer id; + private final String name; + private final String type; + + public AdditionalFieldsSetData(final Integer id, final String name, final String type) { + this.id = id; + this.name = name; + this.type = type; + } + + public Integer getId() { + return id; + } + + public String getName() { + return name; + } + + public String getType() { + return type; + } +} \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultset.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java similarity index 89% rename from mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultset.java rename to mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java index e1826d97c..e207836ff 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultset.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java @@ -3,12 +3,12 @@ package org.mifosng.platform.api.data; import java.util.ArrayList; import java.util.List; -public class GenericResultset { +public class GenericResultsetData { private List columnHeaders = new ArrayList(); private List data = new ArrayList(); - public GenericResultset() { + public GenericResultsetData() { } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java index f275c8049..4a127a29b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java @@ -15,11 +15,13 @@ import org.mifosng.platform.api.commands.OrganisationCurrencyCommand; import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.UserCommand; +import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.AppUserData; import org.mifosng.platform.api.data.ClientData; import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.ConfigurationData; import org.mifosng.platform.api.data.FundData; +import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.LoanAccountData; import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.LoanTransactionData; @@ -57,6 +59,10 @@ public interface ApiDataConversionService { String convertLoanAccountDataToJson(boolean prettyPrint, Set responseParameters, LoanAccountData loanAccount); String convertLoanTransactionDataToJson(boolean prettyPrint, Set responseParameters, LoanTransactionData... transactions); + + String convertAdditionalFieldsSetDataToJson(boolean prettyPrint, AdditionalFieldsSetData... additionalFields); + + String convertGenericResultsetDataToJson(boolean prettyPrint, GenericResultsetData result); // FundCommand convertJsonToFundCommand(Long resourceIdentifier, String json); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java index 484682339..6a4ff8c05 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java @@ -31,12 +31,14 @@ import org.mifosng.platform.api.commands.OrganisationCurrencyCommand; import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.UserCommand; +import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.ApiParameterError; import org.mifosng.platform.api.data.AppUserData; import org.mifosng.platform.api.data.ClientData; import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.ConfigurationData; import org.mifosng.platform.api.data.FundData; +import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.LoanAccountData; import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.LoanTransactionData; @@ -71,6 +73,40 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { gsonConverter = new Gson(); } + @Override + public String convertGenericResultsetDataToJson(final boolean prettyPrint, final GenericResultsetData result) { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()); + builder.registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter()); + + if (prettyPrint) { + builder.setPrettyPrinting(); + } + Gson gsonDeserializer = builder.create(); + + return gsonDeserializer.toJson(result); + } + + @Override + public String convertAdditionalFieldsSetDataToJson(final boolean prettyPrint, final AdditionalFieldsSetData... additionalFields) { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()); + builder.registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter()); + if (prettyPrint) { + builder.setPrettyPrinting(); + } + Gson gsonDeserializer = builder.create(); + + String json = ""; + if (additionalFields != null && additionalFields.length == 1) { + json = gsonDeserializer.toJson(additionalFields[0]); + } else { + json = gsonDeserializer.toJson(additionalFields); + } + + return json; + } + @Override public String convertLoanTransactionDataToJson(final boolean prettyPrint, final Set responseParameters, final LoanTransactionData... transactions) { Set supportedParameters = new HashSet( diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java index b1a604a3b..0a9ed122e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java @@ -2,6 +2,10 @@ package org.mifosng.platform.api.infrastructure; import javax.ws.rs.core.MultivaluedMap; +/** + * Removed in favour of using google gson within {@link ApiDataConversionService}. + */ +@Deprecated public interface ApiJSONFormattingService { String convertRequest(Object dataObject, String filterName, diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java index 7cf0d499a..5d504f998 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java @@ -15,9 +15,11 @@ import org.codehaus.jackson.map.ser.FilterProvider; import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter; import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider; import org.mifosng.platform.exceptions.PlatformInternalServerException; -import org.springframework.stereotype.Service; -@Service +/** + * + */ +@Deprecated public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService { @Override diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiParameterHelper.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiParameterHelper.java index 783f1659e..cfe1d4bde 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiParameterHelper.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiParameterHelper.java @@ -43,6 +43,24 @@ public class ApiParameterHelper { return prettyPrint; } + public static boolean exportCsv(final MultivaluedMap queryParams) { + boolean exportCsv = false; + if (queryParams.getFirst("exportCSV") != null) { + String exportCsvValue = queryParams.getFirst("exportCSV"); + exportCsv = "true".equalsIgnoreCase(exportCsvValue); + } + return exportCsv; + } + + public static boolean parameterType(final MultivaluedMap queryParams) { + boolean parameterType = false; + if (queryParams.getFirst("parameterType") != null) { + String parameterTypeValue = queryParams.getFirst("parameterType"); + parameterType = "true".equalsIgnoreCase(parameterTypeValue); + } + return parameterType; + } + public static boolean template(final MultivaluedMap queryParams) { boolean template = false; if (queryParams.getFirst("template") != null) {