allow field list for datatables (WIP)

This commit is contained in:
John Woodlock
2012-08-16 20:21:11 +10:00
parent 99fbab83b7
commit 9fe9a091c9
3 changed files with 28 additions and 21 deletions
@@ -25,7 +25,7 @@ public interface ReadExtraDataAndReportingService {
void updateExtraData(String type, String set, Long id, void updateExtraData(String type, String set, Long id,
Map<String, String> queryParams); Map<String, String> 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, Response processPentahoRequest(String reportName, String outputType,
Map<String, String> queryParams); Map<String, String> queryParams);
@@ -368,10 +368,18 @@ public class ReadExtraDataAndReportingServiceImpl implements
} }
@Override @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(); 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) if (sqlSearch != null)
sql = sql + " where " + sqlSearch; sql = sql + " where " + sqlSearch;
if (sqlOrder != null) if (sqlOrder != null)
@@ -411,8 +419,8 @@ public class ReadExtraDataAndReportingServiceImpl implements
rSize = row.size(); rSize = row.size();
for (int j = 0; j < rSize; j++) { for (int j = 0; j < rSize; j++) {
writer.append('\"' + columnHeaders.get(j).getColumnName() + '\"' writer.append('\"' + columnHeaders.get(j).getColumnName()
+ ": "); + '\"' + ": ");
currColType = columnHeaders.get(j).getColumnType(); currColType = columnHeaders.get(j).getColumnType();
currVal = row.get(j); currVal = row.get(j);
if (currVal != null) { if (currVal != null) {
@@ -431,24 +439,22 @@ public class ReadExtraDataAndReportingServiceImpl implements
writer.append(",\n"); writer.append(",\n");
} }
if (i < (data.size() - 1)) writer.append("},"); if (i < (data.size() - 1))
else writer.append("}"); writer.append("},");
else
writer.append("}");
} }
writer.append("\n]"); writer.append("\n]");
return writer.toString(); return writer.toString();
/* /*
JSONObject js = null; * JSONObject js = null; try { js = new JSONObject(writer.toString()); }
try { * catch (JSONException e) { throw new WebApplicationException(Response
js = new JSONObject(writer.toString()); * .status(Status.BAD_REQUEST).entity("JSON body is wrong") .build()); }
} catch (JSONException e) { *
throw new WebApplicationException(Response * return js.toString();
.status(Status.BAD_REQUEST).entity("JSON body is wrong") */
.build());
}
return js.toString();*/
} }
@@ -43,13 +43,14 @@ public class DataTableApiResource {
@Consumes({MediaType.APPLICATION_JSON}) @Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON})
public String extraData(@PathParam("datatable") final String datatable, public String extraData(@PathParam("datatable") final String datatable,
@QueryParam("sqlFields") final String sqlFields,
@QueryParam("sqlSearch") final String sqlSearch, @QueryParam("sqlSearch") final String sqlSearch,
@QueryParam("sqlOrder") final String sqlOrder, @QueryParam("sqlOrder") final String sqlOrder,
@Context final UriInfo uriInfo) { @Context final UriInfo uriInfo) {
try { try {
//GenericResultsetData result = this.readExtraDataAndReportingService.retrieveDataTable(datatable); //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()); //boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
//return this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); //return this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result);