@POST @Path("/queryMin") @Produces(MediaType.APPLICATION_JSON) @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN}) public String getMinimumField(String field) { String result = null; final ParameterQuerySender parameterQuerySenderService = (ParameterQuerySender) getServiceTracker().getService(); if (parameterQuerySenderService != null) { DBObject mongoQuery = new BasicDBObject(); Object qRes = parameterQuerySenderService.queryMin(mongoQuery, field); if (qRes instanceof List<?>) { List<?> dbResult = (List<?>) qRes; if (dbResult.size() == 1) { result = JSON.serialize(dbResult.get(0)); } else { LOG.error( "Expected only one result from database when querying for minimum value of a field! Received " + dbResult.size()); } } else { LOG.error("Object returned from the parameter archiver was not a List<?>"); } } else { LOG.warn("No " + SERVICE_INTERFACE + " service found."); } return result; }
@POST @Path("/datatablesquery") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String queryParameterDatabaseForDataTables(List<Map<String, String>> dataTablesAoData) throws JsonGenerationException, JsonMappingException, IOException { String result = null; final ParameterQuerySender parameterQuerySenderService = (ParameterQuerySender) getServiceTracker().getService(); if (parameterQuerySenderService != null) { Map<String, String> aoData = refineAoDataList(dataTablesAoData); if (aoData != null) { if (LOG.isTraceEnabled()) { LOG.trace("Querying with aoData:" + aoData); } DBObject query = buildMongoQuery(aoData); String skip = aoData.get("iDisplayStart"); String count = aoData.get("iDisplayLength"); String sortCol = calculateSortColumn(aoData); boolean ascending = StringUtils.equals(aoData.get("sSortDir_0"), "asc") ? true : false; Object results = parameterQuerySenderService.query( query, Integer.parseInt(count), Integer.parseInt(skip), sortCol, ascending); // FIXME Put results into aaData and return aoData back to server. if (results instanceof MongoResult) { MongoResult mongoResults = (MongoResult) results; ServerSideProcReturnData aaDataStructure = new ServerSideProcReturnData(); aaDataStructure.sEcho = aoData.get("sEcho"); aaDataStructure.aaData = mongoResults.results; aaDataStructure.iTotalRecords = mongoResults.totalResults; aaDataStructure.iTotalDisplayRecords = aaDataStructure.iTotalRecords; ObjectMapper mapper = new ObjectMapper(); Writer out = new StringWriter(); mapper.writeValue(out, aaDataStructure); result = out.toString(); } else { LOG.error("Object returned from the parameter archiver was not a MongoResult object"); } } else { LOG.error("Invalid aoData received - data was null"); } } else { LOG.warn( "Cannot query parameter archive because there is no " + SERVICE_INTERFACE + " service found."); } return result; }
/** * TODO testing new QueryRequest design. Convert all resources if successful. * * @param request * @return */ @POST @Path("/hbirdquery") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public String queryParameterDatabase(QueryRequest request) { String result = null; final ParameterQuerySender parameterQuerySenderService = (ParameterQuerySender) getServiceTracker().getService(); if (parameterQuerySenderService != null) { Object qRes = parameterQuerySenderService.query(request); if (qRes instanceof List<?>) { result = JSON.serialize(qRes); } else { LOG.error("Object returned from the parameter archiver was not a List of Mongo Db objects"); } } else { LOG.warn("No " + SERVICE_INTERFACE + " service found."); } return result; }