From 9fe9a091c9df81ebb2d1db8d7dbcad02ef25ea99 Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Thu, 16 Aug 2012 20:21:11 +1000 Subject: [PATCH] allow field list for datatables (WIP) --- .../ReadExtraDataAndReportingService.java | 2 +- .../ReadExtraDataAndReportingServiceImpl.java | 44 +++++++++++-------- .../platform/api/DataTableApiResource.java | 3 +- 3 files changed, 28 insertions(+), 21 deletions(-) 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 98b916a24..eed41e465 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingService.java @@ -25,7 +25,7 @@ public interface ReadExtraDataAndReportingService { void updateExtraData(String type, String set, Long id, Map queryParams); - String retrieveDataTable(String datatable, String sqlSearch, String sqlOrder); + String retrieveDataTable(String datatable, String sqlFields, String sqlSearch, String sqlOrder); Response processPentahoRequest(String reportName, String outputType, Map queryParams); 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 da3c6fb10..4540a16cb 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java @@ -368,15 +368,23 @@ public class ReadExtraDataAndReportingServiceImpl implements } @Override - public String retrieveDataTable(String datatable, String sqlSearch, String sqlOrder) { + public String retrieveDataTable(String datatable, String sqlFields, + String sqlSearch, String sqlOrder) { long startTime = System.currentTimeMillis(); - String sql = "select * from " + datatable; + String sql = "select "; + if (sqlFields != null) + sql = sql + sqlFields; + else + sql = sql + " * "; + + sql = sql + " from " + datatable; + if (sqlSearch != null) sql = sql + " where " + sqlSearch; if (sqlOrder != null) sql = sql + " order by " + sqlOrder; - + GenericResultsetData result = fillReportingGenericResultSet(sql); String jsonString = generateJsonFromGenericResultsetData(result); @@ -392,7 +400,7 @@ public class ReadExtraDataAndReportingServiceImpl implements GenericResultsetData result) { StringBuffer writer = new StringBuffer(); - + writer.append("["); List columnHeaders = result.getColumnHeaders(); @@ -411,8 +419,8 @@ public class ReadExtraDataAndReportingServiceImpl implements rSize = row.size(); for (int j = 0; j < rSize; j++) { - writer.append('\"' + columnHeaders.get(j).getColumnName() + '\"' - + ": "); + writer.append('\"' + columnHeaders.get(j).getColumnName() + + '\"' + ": "); currColType = columnHeaders.get(j).getColumnType(); currVal = row.get(j); if (currVal != null) { @@ -431,24 +439,22 @@ public class ReadExtraDataAndReportingServiceImpl implements writer.append(",\n"); } - if (i < (data.size() - 1)) writer.append("},"); - else writer.append("}"); + if (i < (data.size() - 1)) + writer.append("},"); + else + writer.append("}"); } writer.append("\n]"); return writer.toString(); - - /* - JSONObject js = null; - try { - js = new JSONObject(writer.toString()); - } catch (JSONException e) { - throw new WebApplicationException(Response - .status(Status.BAD_REQUEST).entity("JSON body is wrong") - .build()); - } - return js.toString();*/ + /* + * JSONObject js = null; try { js = new JSONObject(writer.toString()); } + * catch (JSONException e) { throw new WebApplicationException(Response + * .status(Status.BAD_REQUEST).entity("JSON body is wrong") .build()); } + * + * return js.toString(); + */ } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java index 1baeaa834..62f62d479 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java @@ -43,13 +43,14 @@ public class DataTableApiResource { @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) public String extraData(@PathParam("datatable") final String datatable, + @QueryParam("sqlFields") final String sqlFields, @QueryParam("sqlSearch") final String sqlSearch, @QueryParam("sqlOrder") final String sqlOrder, @Context final UriInfo uriInfo) { try { //GenericResultsetData result = this.readExtraDataAndReportingService.retrieveDataTable(datatable); - return this.readExtraDataAndReportingService.retrieveDataTable(datatable, sqlSearch, sqlOrder); + return this.readExtraDataAndReportingService.retrieveDataTable(datatable, sqlFields, sqlSearch, sqlOrder); //boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); //return this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result);