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,
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,
Map<String, String> queryParams);
@@ -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<ResultsetColumnHeader> 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();
*/
}
@@ -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);