import org.influxdb.InfluxDB; //导入方法依赖的package包/类
@GET
@Path("/{database}")
@Produces(MediaType.APPLICATION_JSON)
@AllowedProjectRoles({AllowedProjectRoles.DATA_OWNER, AllowedProjectRoles.DATA_SCIENTIST})
public Response getMetrics(
@PathParam("database") String database,
@QueryParam("columns") String columns,
@QueryParam("measurement") String measurement,
@QueryParam("tags") String tags,
@QueryParam("groupBy") String groupBy,
@Context SecurityContext sc, @Context HttpServletRequest req) throws
AppException, AccessControlException {
// TODO: FIX authentication, check if user has access to project
// https://github.com/influxdata/influxdb-java/blob/master/src/main/java/org/influxdb/dto/QueryResult.java
InfluxDB influxdb = InfluxDBFactory.connect(settings.getInfluxDBAddress(),
settings.getInfluxDBUser(), settings.getInfluxDBPW());
Response response = null;
StringBuffer query = new StringBuffer();
query.append("select " + columns + " from " + measurement);
query.append(" where " + tags);
if (groupBy != null) query.append(" group by " + groupBy);
LOGGER.log(Level.FINE, "Influxdb - Running query: " + query.toString());
Query q = new Query(query.toString(), database);
QueryResult reply = influxdb.query(q, TimeUnit.MILLISECONDS);
if (reply.hasError()) {
response = noCacheResponse.getNoCacheResponseBuilder(Response.Status.NOT_FOUND).
entity(reply.getError()).build();
} else if (reply.getResults().get(0).getSeries() != null) {
InfluxDBResultDTO influxResults = new InfluxDBResultDTO();
influxResults.setQuery(query.toString());
influxResults.setResult(reply);
response = noCacheResponse.getNoCacheResponseBuilder(Response.Status.OK).
entity(influxResults).build();
} else {
response = noCacheResponse.getNoCacheResponseBuilder(Response.Status.NO_CONTENT).
entity("").build();
}
influxdb.close();
return response;
}