tidy up json serialization around additional data and reports.
This commit is contained in:
+7
-7
@@ -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);
|
||||||
}
|
}
|
||||||
+15
-15
@@ -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;
|
||||||
|
|||||||
+16
-26
@@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
+26
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
-2
@@ -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() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+6
@@ -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);
|
||||||
|
|||||||
+36
@@ -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>(
|
||||||
|
|||||||
+4
@@ -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,
|
||||||
|
|||||||
+4
-2
@@ -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
|
||||||
|
|||||||
+18
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user