allow field list for datatables (WIP)
This commit is contained in:
+1
-1
@@ -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);
|
||||
|
||||
+25
-19
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user