tidy up json serialization around additional data and reports.

This commit is contained in:
Keith Woodlock
2012-07-23 00:44:53 +01:00
parent d856b78302
commit 31433c2e72
12 changed files with 176 additions and 156 deletions
@@ -6,8 +6,8 @@ import java.util.Map;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput; import javax.ws.rs.core.StreamingOutput;
import org.mifosng.platform.api.data.AdditionalFieldsSet; import org.mifosng.platform.api.data.AdditionalFieldsSetData;
import org.mifosng.platform.api.data.GenericResultset; import org.mifosng.platform.api.data.GenericResultsetData;
public interface ReadExtraDataAndReportingService { public interface ReadExtraDataAndReportingService {
@@ -15,18 +15,18 @@ public interface ReadExtraDataAndReportingService {
Map<String, String> extractedQueryParams); Map<String, String> extractedQueryParams);
// @PreAuthorize(value = "hasAnyRole('REPORTING_SUPER_USER_ROLE')") // @PreAuthorize(value = "hasAnyRole('REPORTING_SUPER_USER_ROLE')")
GenericResultset retrieveGenericResultset(String name, String type, GenericResultsetData retrieveGenericResultset(String name, String type,
Map<String, String> extractedQueryParams); Map<String, String> extractedQueryParams);
List<AdditionalFieldsSet> retrieveExtraDatasetNames(String type); List<AdditionalFieldsSetData> 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, void updateExtraData(String type, String set, Long id,
Map<String, String> queryParams); Map<String, String> queryParams);
public Response processPentahoRequest(String reportName, Response processPentahoRequest(String reportName, String outputType,
String outputType, Map<String, String> queryParams); Map<String, String> queryParams);
String getReportType(String reportName); String getReportType(String reportName);
} }
@@ -20,8 +20,8 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput; import javax.ws.rs.core.StreamingOutput;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.mifosng.platform.api.data.AdditionalFieldsSet; import org.mifosng.platform.api.data.AdditionalFieldsSetData;
import org.mifosng.platform.api.data.GenericResultset; import org.mifosng.platform.api.data.GenericResultsetData;
import org.mifosng.platform.api.data.ResultsetColumnHeader; import org.mifosng.platform.api.data.ResultsetColumnHeader;
import org.mifosng.platform.api.data.ResultsetDataRow; import org.mifosng.platform.api.data.ResultsetDataRow;
import org.mifosng.platform.exceptions.AdditionalFieldsNotFoundException; import org.mifosng.platform.exceptions.AdditionalFieldsNotFoundException;
@@ -76,7 +76,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
public void write(OutputStream out) { public void write(OutputStream out) {
try { try {
GenericResultset result = retrieveGenericResultset(name, GenericResultsetData result = retrieveGenericResultset(name,
type, queryParams); type, queryParams);
StringBuffer sb = generateCsvFileBuffer(result); 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(); StringBuffer writer = new StringBuffer();
List<ResultsetColumnHeader> columnHeaders = result.getColumnHeaders(); List<ResultsetColumnHeader> columnHeaders = result.getColumnHeaders();
@@ -149,7 +149,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
} }
@Override @Override
public GenericResultset retrieveGenericResultset(final String name, public GenericResultsetData retrieveGenericResultset(final String name,
final String type, final Map<String, String> queryParams) { final String type, final Map<String, String> queryParams) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@@ -180,7 +180,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
sql = getSQLtoRun(name, type, queryParams); sql = getSQLtoRun(name, type, queryParams);
} }
GenericResultset result = fillReportingGenericResultSet(sql); GenericResultsetData result = fillReportingGenericResultSet(sql);
long elapsed = System.currentTimeMillis() - startTime; long elapsed = System.currentTimeMillis() - startTime;
logger.info("FINISHING Report/Request Name: " + name + " - " + type logger.info("FINISHING Report/Request Name: " + name + " - " + type
@@ -188,9 +188,9 @@ public class ReadExtraDataAndReportingServiceImpl implements
return result; 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; Connection db_connection = null;
Statement db_statement = null; Statement db_statement = null;
@@ -328,9 +328,9 @@ public class ReadExtraDataAndReportingServiceImpl implements
} }
@Override @Override
public List<AdditionalFieldsSet> retrieveExtraDatasetNames(String type) { public List<AdditionalFieldsSetData> retrieveExtraDatasetNames(String type) {
List<AdditionalFieldsSet> additionalFieldsSets = new ArrayList<AdditionalFieldsSet>(); List<AdditionalFieldsSetData> additionalFieldsSets = new ArrayList<AdditionalFieldsSetData>();
Connection db_connection = null; Connection db_connection = null;
Statement db_statement = null; Statement db_statement = null;
@@ -350,7 +350,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
ResultSet rs = db_statement.executeQuery(sql); ResultSet rs = db_statement.executeQuery(sql);
while (rs.next()) { while (rs.next()) {
additionalFieldsSets.add(new AdditionalFieldsSet(rs additionalFieldsSets.add(new AdditionalFieldsSetData(rs
.getInt("id"), rs.getString("set"), rs .getInt("id"), rs.getString("set"), rs
.getString("type"))); .getString("type")));
} }
@@ -366,19 +366,19 @@ public class ReadExtraDataAndReportingServiceImpl implements
} }
@Override @Override
public GenericResultset retrieveExtraData(String type, String set, Long id) { public GenericResultsetData retrieveExtraData(String type, String set, Long id) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
GenericResultset result = fillExtraDataGenericResultSet(type, set, id); GenericResultsetData result = fillExtraDataGenericResultSet(type, set, id);
long elapsed = System.currentTimeMillis() - startTime; long elapsed = System.currentTimeMillis() - startTime;
logger.info("FINISHING SET: " + set + " Elapsed Time: " + elapsed); logger.info("FINISHING SET: " + set + " Elapsed Time: " + elapsed);
return result; return result;
} }
private GenericResultset fillExtraDataGenericResultSet(String type, private GenericResultsetData fillExtraDataGenericResultSet(String type,
String set, Long id) { String set, Long id) {
GenericResultset result = new GenericResultset(); GenericResultsetData result = new GenericResultsetData();
Connection db_connection = null; Connection db_connection = null;
Statement db_statement1 = null; Statement db_statement1 = null;
@@ -24,11 +24,12 @@ import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject; import org.codehaus.jettison.json.JSONObject;
import org.mifosng.platform.InvalidSqlException; import org.mifosng.platform.InvalidSqlException;
import org.mifosng.platform.ReadExtraDataAndReportingService; 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.ApiParameterError;
import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.data.EntityIdentifier;
import org.mifosng.platform.api.data.GenericResultset; import org.mifosng.platform.api.data.GenericResultsetData;
import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; import org.mifosng.platform.api.infrastructure.ApiDataConversionService;
import org.mifosng.platform.api.infrastructure.ApiParameterHelper;
import org.mifosng.platform.exceptions.PlatformApiDataValidationException; import org.mifosng.platform.exceptions.PlatformApiDataValidationException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -41,30 +42,23 @@ import org.springframework.stereotype.Component;
@Scope("singleton") @Scope("singleton")
public class AdditionalFieldsApiResource { public class AdditionalFieldsApiResource {
private final static Logger logger = LoggerFactory private final static Logger logger = LoggerFactory.getLogger(AdditionalFieldsApiResource.class);
.getLogger(AdditionalFieldsApiResource.class);
private String allowedFieldList = "";
private String filterName = "myFilter";
@Autowired @Autowired
private ReadExtraDataAndReportingService readExtraDataAndReportingService; private ReadExtraDataAndReportingService readExtraDataAndReportingService;
@Autowired @Autowired
private ApiJSONFormattingService jsonFormattingService; private ApiDataConversionService apiDataConversionService;
@GET @GET
@Consumes({MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON})
public String datasets(@QueryParam("type") String type, public String datasets(@QueryParam("type") final String type, @Context final UriInfo uriInfo) {
@Context UriInfo uriInfo) {
List<AdditionalFieldsSet> result = this.readExtraDataAndReportingService List<AdditionalFieldsSetData> result = this.readExtraDataAndReportingService.retrieveExtraDatasetNames(type);
.retrieveExtraDatasetNames(type);
String selectedFields = ""; boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
return this.jsonFormattingService.convertRequest(result, filterName, return this.apiDataConversionService.convertAdditionalFieldsSetDataToJson(prettyPrint, result.toArray(new AdditionalFieldsSetData[result.size()]));
allowedFieldList, selectedFields, uriInfo.getQueryParameters());
} }
@GET @GET
@@ -73,17 +67,13 @@ public class AdditionalFieldsApiResource {
@Produces({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON})
public String extraData(@PathParam("type") final String type, public String extraData(@PathParam("type") final String type,
@PathParam("set") final String set, @PathParam("id") final Long id, @PathParam("set") final String set, @PathParam("id") final Long id,
@Context UriInfo uriInfo) { @Context final UriInfo uriInfo) {
try { try {
GenericResultset result = this.readExtraDataAndReportingService GenericResultsetData result = this.readExtraDataAndReportingService.retrieveExtraData(type, set, id);
.retrieveExtraData(type, set, id);
String selectedFields = ""; boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
//Note that GenericResultSet doesn't have a filter so all fields are returned (this is correct) return this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result);
return this.jsonFormattingService.convertRequest(result, filterName,
allowedFieldList, selectedFields,
uriInfo.getQueryParameters());
} catch (InvalidSqlException e) { } catch (InvalidSqlException e) {
List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>(); List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
ApiParameterError error = ApiParameterError.parameterError( ApiParameterError error = ApiParameterError.parameterError(
@@ -102,7 +92,7 @@ public class AdditionalFieldsApiResource {
@Produces({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON})
public Response saveExtraData(@PathParam("type") final String type, public Response saveExtraData(@PathParam("type") final String type,
@PathParam("set") final String set, @PathParam("id") final Long id, @PathParam("set") final String set, @PathParam("id") final Long id,
String reqbody) { final String jsonRequestBody) {
try { try {
@@ -110,7 +100,7 @@ public class AdditionalFieldsApiResource {
String pValue = ""; String pValue = "";
String pName; String pName;
try { try {
JSONObject jsonObj = new JSONObject(reqbody); JSONObject jsonObj = new JSONObject(jsonRequestBody);
JSONArray jsonArr = jsonObj.names(); JSONArray jsonArr = jsonObj.names();
if (jsonArr != null) { if (jsonArr != null) {
for (int i = 0; i < jsonArr.length(); i++) { for (int i = 0; i < jsonArr.length(); i++) {
@@ -17,8 +17,9 @@ import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.UriInfo;
import org.mifosng.platform.ReadExtraDataAndReportingService; import org.mifosng.platform.ReadExtraDataAndReportingService;
import org.mifosng.platform.api.data.GenericResultset; import org.mifosng.platform.api.data.GenericResultsetData;
import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; import org.mifosng.platform.api.infrastructure.ApiDataConversionService;
import org.mifosng.platform.api.infrastructure.ApiParameterHelper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -28,38 +29,31 @@ import org.springframework.stereotype.Component;
@Scope("singleton") @Scope("singleton")
public class ReportsApiResource { public class ReportsApiResource {
private String allowedFieldList = "";
private String filterName = "myFilter";
@Autowired @Autowired
private ReadExtraDataAndReportingService readExtraDataAndReportingService; private ReadExtraDataAndReportingService readExtraDataAndReportingService;
@Autowired @Autowired
private ApiJSONFormattingService jsonFormattingService; private ApiDataConversionService apiDataConversionService;
@GET @GET
@Consumes({MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON, "application/x-msdownload" }) @Produces({MediaType.APPLICATION_JSON, "application/x-msdownload" })
public Response retrieveReportList(@Context final UriInfo uriInfo) { public Response retrieveReportList(@Context final UriInfo uriInfo) {
MultivaluedMap<String, String> queryParams = uriInfo
.getQueryParameters();
Map<String, String> extractedQueryParams = new HashMap<String, String>(); Map<String, String> extractedQueryParams = new HashMap<String, String>();
String exportCSV = queryParams.getFirst("exportCSV"); boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
boolean exportCsv = ApiParameterHelper.exportCsv(uriInfo.getQueryParameters());
if (!exportCsv) {
GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(".", ".", extractedQueryParams);
final String json = this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result);
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());
return Response.ok().entity(json).build(); return Response.ok().entity(json).build();
} }
StreamingOutput result = this.readExtraDataAndReportingService StreamingOutput result = this.readExtraDataAndReportingService.retrieveReportCSV(".", ".", extractedQueryParams);
.retrieveReportCSV(".", ".", extractedQueryParams);
return Response return Response
.ok() .ok()
@@ -71,52 +65,43 @@ public class ReportsApiResource {
@GET @GET
@Path("{reportName}") @Path("{reportName}")
@Consumes({MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON, "application/x-msdownload", @Produces({MediaType.APPLICATION_JSON, "application/x-msdownload","application/vnd.ms-excel", "application/pdf", "text/html" })
"application/vnd.ms-excel", "application/pdf", "text/html" })
public Response retrieveReport( public Response retrieveReport(
@PathParam("reportName") final String reportName, @PathParam("reportName") final String reportName,
@Context final UriInfo uriInfo) { @Context final UriInfo uriInfo) {
MultivaluedMap<String, String> queryParams = uriInfo MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
.getQueryParameters();
String parameterType = queryParams.getFirst("parameterType"); boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
if ((parameterType == null) boolean exportCsv = ApiParameterHelper.exportCsv(uriInfo.getQueryParameters());
|| (!(parameterType.equalsIgnoreCase("true")))) { boolean parameterType = ApiParameterHelper.parameterType(uriInfo.getQueryParameters());
parameterType = "report";
} else {
parameterType = "parameter";
}
if (parameterType.equals("report")) { String parameterTypeValue = null;
if (this.readExtraDataAndReportingService.getReportType(reportName) if (!parameterType) {
.equalsIgnoreCase("Pentaho")) { parameterTypeValue = "report";
if (this.readExtraDataAndReportingService.getReportType(reportName).equalsIgnoreCase("Pentaho")) {
return this.readExtraDataAndReportingService Map<String, String> reportParams = getReportParams(queryParams, true);
.processPentahoRequest(reportName, return this.readExtraDataAndReportingService.processPentahoRequest(reportName, queryParams.getFirst("output-type"), reportParams);
queryParams.getFirst("output-type"),
getReportParams(queryParams, true));
} }
} else {
parameterTypeValue = "parameter";
} }
String exportCSV = queryParams.getFirst("exportCSV"); if (!exportCsv) {
if ((exportCSV == null) || (!(exportCSV.equalsIgnoreCase("true")))) {
// JSON
GenericResultset result = this.readExtraDataAndReportingService
.retrieveGenericResultset(reportName, parameterType,
getReportParams(queryParams, false));
String selectedFields = ""; Map<String, String> reportParams = getReportParams(queryParams, false);
String json = this.jsonFormattingService.convertRequest(result,
filterName, allowedFieldList, selectedFields, GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(reportName, parameterTypeValue, reportParams);
uriInfo.getQueryParameters());
return Response.ok().entity(json).type(MediaType.APPLICATION_JSON) final String json = this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result);
.build();
return Response.ok().entity(json).type(MediaType.APPLICATION_JSON).build();
} }
// CSV Export // CSV Export
StreamingOutput result = this.readExtraDataAndReportingService Map<String, String> reportParams = getReportParams(queryParams, false);
.retrieveReportCSV(reportName, parameterType, getReportParams(queryParams, false)); StreamingOutput result = this.readExtraDataAndReportingService.retrieveReportCSV(reportName, parameterTypeValue, reportParams);
return Response return Response
.ok() .ok()
.entity(result) .entity(result)
@@ -126,8 +111,7 @@ public class ReportsApiResource {
+ ".csv").build(); + ".csv").build();
} }
private Map<String, String> getReportParams( private Map<String, String> getReportParams(final MultivaluedMap<String, String> queryParams, final Boolean isPentaho) {
MultivaluedMap<String, String> queryParams, Boolean isPentaho) {
Map<String, String> reportParams = new HashMap<String, String>(); Map<String, String> reportParams = new HashMap<String, String>();
Set<String> keys = queryParams.keySet(); Set<String> keys = queryParams.keySet();
@@ -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;
}
}
@@ -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;
}
}
@@ -3,12 +3,12 @@ package org.mifosng.platform.api.data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class GenericResultset { public class GenericResultsetData {
private List<ResultsetColumnHeader> columnHeaders = new ArrayList<ResultsetColumnHeader>(); private List<ResultsetColumnHeader> columnHeaders = new ArrayList<ResultsetColumnHeader>();
private List<ResultsetDataRow> data = new ArrayList<ResultsetDataRow>(); private List<ResultsetDataRow> data = new ArrayList<ResultsetDataRow>();
public GenericResultset() { public GenericResultsetData() {
} }
@@ -15,11 +15,13 @@ import org.mifosng.platform.api.commands.OrganisationCurrencyCommand;
import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.api.commands.RoleCommand;
import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand;
import org.mifosng.platform.api.commands.UserCommand; 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.AppUserData;
import org.mifosng.platform.api.data.ClientData; import org.mifosng.platform.api.data.ClientData;
import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData;
import org.mifosng.platform.api.data.ConfigurationData; import org.mifosng.platform.api.data.ConfigurationData;
import org.mifosng.platform.api.data.FundData; 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.LoanAccountData;
import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.LoanProductData;
import org.mifosng.platform.api.data.LoanTransactionData; import org.mifosng.platform.api.data.LoanTransactionData;
@@ -57,6 +59,10 @@ public interface ApiDataConversionService {
String convertLoanAccountDataToJson(boolean prettyPrint, Set<String> responseParameters, LoanAccountData loanAccount); String convertLoanAccountDataToJson(boolean prettyPrint, Set<String> responseParameters, LoanAccountData loanAccount);
String convertLoanTransactionDataToJson(boolean prettyPrint, Set<String> responseParameters, LoanTransactionData... transactions); String convertLoanTransactionDataToJson(boolean prettyPrint, Set<String> responseParameters, LoanTransactionData... transactions);
String convertAdditionalFieldsSetDataToJson(boolean prettyPrint, AdditionalFieldsSetData... additionalFields);
String convertGenericResultsetDataToJson(boolean prettyPrint, GenericResultsetData result);
// //
FundCommand convertJsonToFundCommand(Long resourceIdentifier, String json); FundCommand convertJsonToFundCommand(Long resourceIdentifier, String json);
@@ -31,12 +31,14 @@ import org.mifosng.platform.api.commands.OrganisationCurrencyCommand;
import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.api.commands.RoleCommand;
import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand;
import org.mifosng.platform.api.commands.UserCommand; 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.ApiParameterError;
import org.mifosng.platform.api.data.AppUserData; import org.mifosng.platform.api.data.AppUserData;
import org.mifosng.platform.api.data.ClientData; import org.mifosng.platform.api.data.ClientData;
import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData;
import org.mifosng.platform.api.data.ConfigurationData; import org.mifosng.platform.api.data.ConfigurationData;
import org.mifosng.platform.api.data.FundData; 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.LoanAccountData;
import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.LoanProductData;
import org.mifosng.platform.api.data.LoanTransactionData; import org.mifosng.platform.api.data.LoanTransactionData;
@@ -71,6 +73,40 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
gsonConverter = new Gson(); 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 @Override
public String convertLoanTransactionDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final LoanTransactionData... transactions) { public String convertLoanTransactionDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final LoanTransactionData... transactions) {
Set<String> supportedParameters = new HashSet<String>( Set<String> supportedParameters = new HashSet<String>(
@@ -2,6 +2,10 @@ package org.mifosng.platform.api.infrastructure;
import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.MultivaluedMap;
/**
* Removed in favour of using google gson within {@link ApiDataConversionService}.
*/
@Deprecated
public interface ApiJSONFormattingService { public interface ApiJSONFormattingService {
String convertRequest(Object dataObject, String filterName, String convertRequest(Object dataObject, String filterName,
@@ -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.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider; import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
import org.mifosng.platform.exceptions.PlatformInternalServerException; import org.mifosng.platform.exceptions.PlatformInternalServerException;
import org.springframework.stereotype.Service;
@Service /**
*
*/
@Deprecated
public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService { public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
@Override @Override
@@ -43,6 +43,24 @@ public class ApiParameterHelper {
return prettyPrint; return prettyPrint;
} }
public static boolean exportCsv(final MultivaluedMap<String, String> 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<String, String> 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<String, String> queryParams) { public static boolean template(final MultivaluedMap<String, String> queryParams) {
boolean template = false; boolean template = false;
if (queryParams.getFirst("template") != null) { if (queryParams.getFirst("template") != null) {