List of usage examples for org.apache.commons.lang.time StopWatch start
public void start()
Start the stopwatch.
This method starts a new timing session, clearing any previous values.
From source file:eu.europeana.enrichment.tagger.vocabularies.AbstractVocabulary.java
boolean loadFromCache(List<String> locations, String locationDescriptionForExceptionLogging, VocabularySerializer handler, File cacheFileTerms, File cacheFileParents) throws Exception { long lastModified = 0; for (String location : locations) { File file = new File(location); if (file.lastModified() > lastModified) { lastModified = file.lastModified(); }//www . j av a 2 s . c om } if (cacheFileTerms.exists() && cacheFileTerms.lastModified() > lastModified && cacheFileParents.exists()) { logMessage("Recovered cached query result from file " + cacheFileTerms); StopWatch timeElapsed = new StopWatch(); timeElapsed.start(); VocabularySerializer.SerializedProperties props = new VocabularySerializer.SerializedProperties(); props.getTerms().load(new BufferedInputStream(new FileInputStream(cacheFileTerms), 1024 * 10)); props.getParents().load(new BufferedInputStream(new FileInputStream(cacheFileParents), 1024 * 10)); handler.deserializeFromProperties(props); timeElapsed.stop(); logMessage("Loaded " + props.getTerms().size() + " term codes in " + timeElapsed + " ms"); return true; } if (!cacheFileTerms.exists() || !cacheFileParents.exists()) { logMessage("No cache file " + cacheFileTerms.getCanonicalPath() + " found, loading RDF from the following files"); logMessage(locationDescriptionForExceptionLogging); } if (cacheFileTerms.exists() && !(cacheFileTerms.lastModified() > lastModified)) { logMessage("Cache file " + cacheFileTerms.getCanonicalPath() + " is older than RDF files, loading RDF from the following files"); } return false; }
From source file:net.nan21.dnet.core.web.controller.data.AbstractDsReadController.java
/** * Returns information about the given resource ( data-source ) * //from ww w . ja v a 2s .c o m * @param resourceName * @param dataFormat * @param request * @param response * @return * @throws Exception */ @RequestMapping(params = Constants.REQUEST_PARAM_ACTION + "=" + Constants.DS_ACTION_INFO) public String info(@PathVariable String resourceName, @PathVariable String dataFormat, HttpServletRequest request, HttpServletResponse response) throws Exception { try { StopWatch stopWatch = new StopWatch(); stopWatch.start(); if (logger.isInfoEnabled()) { logger.info("Processing request: {}.{} -> action = {} ", new String[] { resourceName, dataFormat, Constants.DS_ACTION_INFO }); } this.prepareRequest(request, response); @SuppressWarnings("unchecked") List<IDsDefinitions> defsList = (List<IDsDefinitions>) this.getApplicationContext() .getBean("osgiDsDefinitions"); String out = null; for (IDsDefinitions defs : defsList) { if (defs.containsDs(resourceName)) { IDsDefinition def = defs.getDsDefinition(resourceName); ((DsDefinition) def).getModelFields(); ((DsDefinition) def).getFilterFields(); ((DsDefinition) def).getParamFields(); IDsService<M, F, P> service = this.findDsService(resourceName); if (dataFormat.equals(IDsMarshaller.JSON)) { IDsMarshaller<M, F, P> marshaller = service.createMarshaller(dataFormat); response.setContentType("text/plain; charset=UTF-8"); out = ((ObjectMapper) marshaller.getDelegate()).writeValueAsString(def); PrintWriter w = response.getWriter(); w.write(out); w.flush(); return null; } else if (dataFormat.equals(IDsMarshaller.XML)) { IDsMarshaller<M, F, P> marshaller = service.createMarshaller(dataFormat); StringWriter writer = new StringWriter(); ((XmlMarshaller<M, F, P>) marshaller).createMarshaller(def.getClass()).marshal(def, writer); response.setContentType("text/xml; charset=UTF-8"); out = writer.toString(); PrintWriter w = response.getWriter(); w.write(out); w.flush(); return null; } else if (dataFormat.equals("html")) { IDsMarshaller<M, F, P> marshaller = service.createMarshaller(IDsMarshaller.XML); StringWriter writer = new StringWriter(); ((XmlMarshaller<M, F, P>) marshaller).createMarshaller(def.getClass()).marshal(def, writer); out = writer.toString(); String t1 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"; String t2 = "<?xml-stylesheet type=\"text/xsl\" href=\"/nan21.dnet.core.web/webapp/resources/xsl/ds-info.xsl\"?>"; out = out.replace(t1, t1 + '\n' + t2); response.setContentType("text/xml; charset=UTF-8"); PrintWriter w = response.getWriter(); w.write(out); w.flush(); return null; } } } throw new Exception("Data-source " + resourceName + " cannot be found."); } catch (Exception e) { return this.handleException(e, response); } finally { this.finishRequest(); } }
From source file:net.nan21.dnet.core.web.controller.data.AbstractDsReadController.java
/** * Default handler for find action./*w w w. j a v a2s . c om*/ * * @param resourceName * @param dataformat * @param dataString * @param paramString * @param resultStart * @param resultSize * @param orderByCol * @param orderBySense * @param orderBy * @return * @throws Exception */ @RequestMapping(params = Constants.REQUEST_PARAM_ACTION + "=" + Constants.DS_ACTION_QUERY) @ResponseBody public String find(@PathVariable String resourceName, @PathVariable String dataFormat, @RequestParam(value = Constants.REQUEST_PARAM_FILTER, required = false, defaultValue = "{}") String filterString, @RequestParam(value = Constants.REQUEST_PARAM_ADVANCED_FILTER, required = false, defaultValue = "") String filterRulesString, @RequestParam(value = Constants.REQUEST_PARAM_PARAMS, required = false, defaultValue = "{}") String paramString, @RequestParam(value = Constants.REQUEST_PARAM_START, required = false, defaultValue = DEFAULT_RESULT_START) int resultStart, @RequestParam(value = Constants.REQUEST_PARAM_SIZE, required = false, defaultValue = DEFAULT_RESULT_SIZE) int resultSize, @RequestParam(value = Constants.REQUEST_PARAM_SORT, required = false, defaultValue = "") String orderByCol, @RequestParam(value = Constants.REQUEST_PARAM_SENSE, required = false, defaultValue = "") String orderBySense, @RequestParam(value = Constants.REQUEST_PARAM_ORDERBY, required = false, defaultValue = "") String orderBy, HttpServletRequest request, HttpServletResponse response) throws Exception { try { StopWatch stopWatch = new StopWatch(); stopWatch.start(); if (logger.isInfoEnabled()) { logger.info("Processing request: {}.{} -> action = {} ", new String[] { resourceName, dataFormat, Constants.DS_ACTION_QUERY }); } if (logger.isDebugEnabled()) { logger.debug(" --> request-filter: {} ", new String[] { filterString }); logger.debug(" --> request-params: {} ", new String[] { paramString }); logger.debug(" --> request-orderBy: sort={}, sense={}, orderBy={}", new String[] { orderByCol, orderBySense, orderBy }); logger.debug(" --> request-result-range: {} ", new String[] { resultStart + "", (resultStart + resultSize) + "" }); } this.prepareRequest(request, response); this.authorizeDsAction(resourceName, Constants.DS_ACTION_QUERY, null); IDsService<M, F, P> service = this.findDsService(resourceName); IDsMarshaller<M, F, P> marshaller = service.createMarshaller(IDsMarshaller.JSON); F filter = marshaller.readFilterFromString(filterString); P params = marshaller.readParamsFromString(paramString); IQueryBuilder<M, F, P> builder = service.createQueryBuilder().addFetchLimit(resultStart, resultSize) .addFilter(filter).addParams(params); if (orderBy != null && !orderBy.equals("")) { List<SortToken> sortTokens = marshaller.readListFromString(orderBy, SortToken.class); builder.addSortInfo(sortTokens); } else { builder.addSortInfo(orderByCol, orderBySense); } if (filterRulesString != null && !filterRulesString.equals("")) { List<FilterRule> filterRules = marshaller.readListFromString(filterRulesString, FilterRule.class); builder.addFilterRules(filterRules); } List<M> list = service.find(builder); long totalCount = service.count(builder); IActionResultFind result = this.packfindResult(list, params, totalCount); stopWatch.stop(); result.setExecutionTime(stopWatch.getTime()); String out = null; if (dataFormat.equals(IDsMarshaller.XML)) { IDsMarshaller<M, F, P> resultMarshaller = service.createMarshaller(dataFormat); out = resultMarshaller.writeResultToString(result); response.setContentType("text/xml; charset=UTF-8"); } else { out = marshaller.writeResultToString(result); response.setContentType("text/plain; charset=UTF-8"); } return out; } catch (Exception e) { return this.handleException(e, response); } finally { this.finishRequest(); } }
From source file:com.microsoft.exchange.integration.AbstractIntegrationTest.java
/** * Create a single {@link CalendarItemType} and submit with {@link ExchangeWebServicesClient#createItem(CreateItem)}. * Then attempt to update the item with {@link ExchangeWebServices#updateItem(com.microsoft.exchange.messages.UpdateItem)}. * /*ww w .j a v a 2s . c om*/ * @throws JAXBException */ @Test public void testUpdateCalendarItemChangeLocation() throws JAXBException { NonEmptyArrayOfBaseItemIdsType createdIds = new NonEmptyArrayOfBaseItemIdsType(); try { initializeCredentials(); CalendarItemType calendarItem = new CalendarItemType(); final Date start = DateHelp.parseDateTimePhrase("20121217-1200"); final Date end = DateHelp.parseDateTimePhrase("20121217-1300"); calendarItem.setStart(DateHelp.convertDateToXMLGregorianCalendar(start)); calendarItem.setEnd(DateHelp.convertDateToXMLGregorianCalendar(end)); calendarItem.setSubject("integration test: testCreateCalendarItem"); calendarItem.setLocation("test location"); BodyType body = new BodyType(); body.setBodyType(BodyTypeType.TEXT); body.setValue("test ran at " + new Date()); calendarItem.setBody(body); CreateItem request = new CreateItem(); request.setSendMeetingInvitations(CalendarItemCreateOrDeleteOperationType.SEND_TO_ALL_AND_SAVE_COPY); NonEmptyArrayOfAllItemsType arrayOfItems = new NonEmptyArrayOfAllItemsType(); arrayOfItems.getItemsAndMessagesAndCalendarItems().add(calendarItem); request.setItems(arrayOfItems); DistinguishedFolderIdType folder = new DistinguishedFolderIdType(); folder.setId(DistinguishedFolderIdNameType.CALENDAR); TargetFolderIdType target = new TargetFolderIdType(); target.setDistinguishedFolderId(folder); request.setSavedItemFolderId(target); StopWatch stopWatch = new StopWatch(); stopWatch.start(); CreateItemResponse response = ewsClient.createItem(request); stopWatch.stop(); Assert.assertNotNull(response); String captured = capture(response); log.debug("CreateItem request (1 CalendarItem) completed in " + stopWatch + ", response: " + captured); ArrayOfResponseMessagesType responseMessages = response.getResponseMessages(); Assert.assertNotNull(responseMessages); Assert.assertEquals(1, responseMessages .getCreateItemResponseMessagesAndDeleteItemResponseMessagesAndGetItemResponseMessages().size()); JAXBElement<? extends ResponseMessageType> m = responseMessages .getCreateItemResponseMessagesAndDeleteItemResponseMessagesAndGetItemResponseMessages().get(0); Assert.assertEquals(ResponseCodeType.NO_ERROR, m.getValue().getResponseCode()); ItemInfoResponseMessageType itemType = (ItemInfoResponseMessageType) m.getValue(); ArrayOfRealItemsType itemArray = itemType.getItems(); ItemType item = itemArray.getItemsAndMessagesAndCalendarItems().get(0); createdIds.getItemIdsAndOccurrenceItemIdsAndRecurringMasterItemIds().add(item.getItemId()); // leaf CalendarItemType updatedItem = new CalendarItemType(); updatedItem.setLocation("new location from testUpdateCalendarItem"); // 1: parent of leaf SetItemFieldType changeDescription = new SetItemFieldType(); PathToUnindexedFieldType path = new PathToUnindexedFieldType(); path.setFieldURI(UnindexedFieldURIType.CALENDAR_LOCATION); changeDescription.setPath(objectFactoryCreatePath(path)); changeDescription.setCalendarItem(updatedItem); // 2: parent of 1 NonEmptyArrayOfItemChangeDescriptionsType updates = new NonEmptyArrayOfItemChangeDescriptionsType(); updates.getAppendToItemFieldsAndSetItemFieldsAndDeleteItemFields().add(changeDescription); // 3: parent of 2 ItemChangeType change = new ItemChangeType(); change.setItemId(item.getItemId()); change.setUpdates(updates); // 4: parent of 3 NonEmptyArrayOfItemChangesType changes = new NonEmptyArrayOfItemChangesType(); changes.getItemChanges().add(change); UpdateItem updateRequest = new UpdateItem(); updateRequest .setSendMeetingInvitationsOrCancellations(CalendarItemUpdateOperationType.SEND_ONLY_TO_CHANGED); // conflict resolution is required updateRequest.setConflictResolution(ConflictResolutionType.AUTO_RESOLVE); updateRequest.setItemChanges(changes); log.debug("sending UpdateItem request: " + capture(updateRequest)); UpdateItemResponse updateResponse = this.ewsClient.updateItem(updateRequest); captured = capture(updateResponse); log.debug("UpdateItem request (1 CalendarItem) completed, response: " + captured); ArrayOfResponseMessagesType updateMessages = updateResponse.getResponseMessages(); Assert.assertNotNull(updateMessages); Assert.assertEquals(1, updateMessages .getCreateItemResponseMessagesAndDeleteItemResponseMessagesAndGetItemResponseMessages().size()); JAXBElement<? extends ResponseMessageType> u = updateMessages .getCreateItemResponseMessagesAndDeleteItemResponseMessagesAndGetItemResponseMessages().get(0); Assert.assertEquals(ResponseCodeType.NO_ERROR, u.getValue().getResponseCode()); } finally { deleteItems(createdIds); } }
From source file:eagle.service.generic.GenericEntityServiceResource.java
@POST @Consumes(MediaType.APPLICATION_JSON)//from w w w .jav a 2 s . co m @Produces(MediaType.APPLICATION_JSON) public GenericServiceAPIResponseEntity create(InputStream inputStream, @QueryParam("serviceName") String serviceName) { GenericServiceAPIResponseEntity<String> response = new GenericServiceAPIResponseEntity<String>(); Map<String, Object> meta = new HashMap<>(); StopWatch stopWatch = new StopWatch(); try { stopWatch.start(); EntityDefinition entityDefinition = EntityDefinitionManager.getEntityByServiceName(serviceName); if (entityDefinition == null) { throw new IllegalArgumentException("entity definition of service " + serviceName + " not found"); } List<? extends TaggedLogAPIEntity> entities = unmarshalEntitiesByServie(inputStream, entityDefinition); DataStorage dataStorage = DataStorageManager.getDataStorageByEagleConfig(); CreateStatement createStatement = new CreateStatement(entities, entityDefinition); ModifyResult<String> result = createStatement.execute(dataStorage); if (result.isSuccess()) { List<String> keys = result.getIdentifiers(); if (keys != null) { response.setObj(keys, String.class); response.setObj(keys, String.class); meta.put(TOTAL_RESULTS, keys.size()); } else { meta.put(TOTAL_RESULTS, 0); } meta.put(ELAPSEDMS, stopWatch.getTime()); response.setMeta(meta); response.setSuccess(true); } } catch (Exception e) { LOG.error(e.getMessage(), e); response.setException(e); } finally { stopWatch.stop(); } return response; }
From source file:eagle.service.generic.GenericEntityServiceResource.java
@POST @Consumes({ MediaType.MULTIPART_FORM_DATA }) @Produces(MediaType.APPLICATION_JSON)//w ww . ja v a 2s . c o m public GenericServiceAPIResponseEntity create(@FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition cdh, @QueryParam("serviceName") String serviceName) { GenericServiceAPIResponseEntity<String> response = new GenericServiceAPIResponseEntity<String>(); Map<String, Object> meta = new HashMap<>(); StopWatch stopWatch = new StopWatch(); try { stopWatch.start(); EntityDefinition entityDefinition = EntityDefinitionManager.getEntityByServiceName(serviceName); if (entityDefinition == null) { throw new IllegalArgumentException("entity definition of service " + serviceName + " not found"); } List<? extends TaggedLogAPIEntity> entities = unmarshalEntitiesByServie(fileInputStream, entityDefinition); DataStorage dataStorage = DataStorageManager.getDataStorageByEagleConfig(); CreateStatement createStatement = new CreateStatement(entities, entityDefinition); ModifyResult<String> result = createStatement.execute(dataStorage); if (result.isSuccess()) { List<String> keys = result.getIdentifiers(); if (keys != null) { response.setObj(keys, String.class); response.setObj(keys, String.class); meta.put(TOTAL_RESULTS, keys.size()); } else { meta.put(TOTAL_RESULTS, 0); } meta.put(ELAPSEDMS, stopWatch.getTime()); response.setMeta(meta); response.setSuccess(true); } } catch (Exception e) { LOG.error(e.getMessage(), e); response.setException(e); } finally { stopWatch.stop(); } return response; }
From source file:eagle.service.generic.GenericEntityServiceResource.java
@PUT @Consumes(MediaType.APPLICATION_JSON)/*from w ww . ja v a2 s. c o m*/ @Produces(MediaType.APPLICATION_JSON) public GenericServiceAPIResponseEntity update(InputStream inputStream, @QueryParam("serviceName") String serviceName) { GenericServiceAPIResponseEntity<String> response = new GenericServiceAPIResponseEntity<String>(); DataStorage dataStorage; Map<String, Object> meta = new HashMap<>(); StopWatch stopWatch = new StopWatch(); try { stopWatch.start(); EntityDefinition entityDefinition = EntityDefinitionManager.getEntityByServiceName(serviceName); if (entityDefinition == null) { throw new IllegalArgumentException("entity definition of service " + serviceName + " not found"); } List<? extends TaggedLogAPIEntity> entities = unmarshalEntitiesByServie(inputStream, entityDefinition); dataStorage = DataStorageManager.getDataStorageByEagleConfig(); UpdateStatement updateStatement = new UpdateStatement(entities, entityDefinition); ModifyResult<String> result = updateStatement.execute(dataStorage); if (result.isSuccess()) { List<String> keys = result.getIdentifiers(); if (keys != null) { response.setObj(keys, String.class); meta.put(TOTAL_RESULTS, keys.size()); } else { meta.put(TOTAL_RESULTS, 0); } meta.put(ELAPSEDMS, stopWatch.getTime()); response.setMeta(meta); response.setSuccess(true); } } catch (Exception e) { LOG.error(e.getMessage(), e); response.setException(e); } finally { stopWatch.stop(); } return response; }
From source file:eagle.service.generic.GenericEntityServiceResource.java
@PUT @Consumes({ MediaType.MULTIPART_FORM_DATA }) @Produces(MediaType.APPLICATION_JSON)//from w w w. j av a 2 s . c o m public GenericServiceAPIResponseEntity update(@FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition cdh, @QueryParam("serviceName") String serviceName) { GenericServiceAPIResponseEntity<String> response = new GenericServiceAPIResponseEntity<String>(); DataStorage dataStorage; Map<String, Object> meta = new HashMap<>(); StopWatch stopWatch = new StopWatch(); try { stopWatch.start(); EntityDefinition entityDefinition = EntityDefinitionManager.getEntityByServiceName(serviceName); if (entityDefinition == null) { throw new IllegalArgumentException("entity definition of service " + serviceName + " not found"); } List<? extends TaggedLogAPIEntity> entities = unmarshalEntitiesByServie(fileInputStream, entityDefinition); dataStorage = DataStorageManager.getDataStorageByEagleConfig(); UpdateStatement updateStatement = new UpdateStatement(entities, entityDefinition); ModifyResult<String> result = updateStatement.execute(dataStorage); if (result.isSuccess()) { List<String> keys = result.getIdentifiers(); if (keys != null) { response.setObj(keys, String.class); meta.put(TOTAL_RESULTS, keys.size()); } else { meta.put(TOTAL_RESULTS, 0); } meta.put(ELAPSEDMS, stopWatch.getTime()); response.setMeta(meta); response.setSuccess(true); } } catch (Exception e) { LOG.error(e.getMessage(), e); response.setException(e); } finally { stopWatch.stop(); } return response; }
From source file:eagle.service.generic.GenericEntityServiceResource.java
/** * TODO/*from w ww. j a v a2 s . c o m*/ * * Delete by query * * @return */ @DELETE @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public GenericServiceAPIResponseEntity deleteByQuery(@QueryParam("query") String query, @QueryParam("startTime") String startTime, @QueryParam("endTime") String endTime, @QueryParam("pageSize") int pageSize, @QueryParam("startRowkey") String startRowkey, @QueryParam("treeAgg") boolean treeAgg, @QueryParam("timeSeries") boolean timeSeries, @QueryParam("intervalmin") long intervalmin, @QueryParam("top") int top, @QueryParam("filterIfMissing") boolean filterIfMissing, @QueryParam("parallel") int parallel, @QueryParam("metricName") String metricName, @QueryParam("verbose") Boolean verbose) { RawQuery rawQuery = RawQuery.build().query(query).startTime(startTime).endTime(endTime).pageSize(pageSize) .startRowkey(startRowkey).treeAgg(treeAgg).timeSeries(timeSeries).intervalMin(intervalmin).top(top) .filerIfMissing(filterIfMissing).parallel(parallel).metricName(metricName).verbose(verbose).done(); GenericServiceAPIResponseEntity response = new GenericServiceAPIResponseEntity(); Map<String, Object> meta = new HashMap<String, Object>(); DataStorage dataStorage = null; StopWatch stopWatch = new StopWatch(); try { stopWatch.start(); dataStorage = DataStorageManager.getDataStorageByEagleConfig(); if (dataStorage == null) { LOG.error("Data storage is null"); throw new IllegalDataStorageException("Data storage is null"); } DeleteStatement deleteStatement = new DeleteStatement(rawQuery); ModifyResult<String> deleteResult = deleteStatement.execute(dataStorage); if (deleteResult.isSuccess()) { meta.put(ELAPSEDMS, stopWatch.getTime()); response.setObj(deleteResult.getIdentifiers(), String.class); response.setSuccess(true); response.setMeta(meta); } return response; } catch (Exception e) { response.setException(e); LOG.error(e.getMessage(), e); } finally { stopWatch.stop(); } return response; }
From source file:eagle.service.generic.ListQueryResource.java
/** * TODO refactor the code structure, now it's messy * @param query//w ww .ja v a 2s . com * @param startTime * @param endTime * @param pageSize * @param startRowkey * @param treeAgg * @param timeSeries * @param intervalmin * @return */ @GET @Produces({ MediaType.APPLICATION_JSON }) public ListQueryAPIResponseEntity listQuery(@QueryParam("query") String query, @QueryParam("startTime") String startTime, @QueryParam("endTime") String endTime, @QueryParam("pageSize") int pageSize, @QueryParam("startRowkey") String startRowkey, @QueryParam("treeAgg") boolean treeAgg, @QueryParam("timeSeries") boolean timeSeries, @QueryParam("intervalmin") long intervalmin, @QueryParam("top") int top, @QueryParam("filterIfMissing") boolean filterIfMissing, @QueryParam("parallel") int parallel, @QueryParam("metricName") String metricName, @QueryParam("verbose") Boolean verbose) { if (!EagleConfigFactory.load().isCoprocessorEnabled()) return listQueryWithoutCoprocessor(query, startTime, endTime, pageSize, startRowkey, treeAgg, timeSeries, intervalmin, top, filterIfMissing, parallel, metricName, verbose); StopWatch watch = new StopWatch(); watch.start(); ListQueryAPIResponseEntity result = new ListQueryAPIResponseEntity(); try { validateQueryParameters(startRowkey, pageSize); // 1. Compile query to parse parameters and HBase Filter ListQueryCompiler comp = new ListQueryCompiler(query, filterIfMissing); String serviceName = comp.serviceName(); SearchCondition condition = new SearchCondition(); condition.setOutputVerbose(verbose == null || verbose); condition.setOutputAlias(comp.getOutputAlias()); condition.setFilter(comp.filter()); condition.setQueryExpression(comp.getQueryExpression()); if (comp.sortOptions() == null && top > 0) { LOG.warn( "Parameter \"top\" is only used for sort query! Ignore top parameter this time since it's not a sort query"); } // 2. Initialize partition values if set // TODO: For now we don't support one query to query multiple partitions. In future // if partition is defined for the entity, internally We need to spawn multiple // queries and send one query for each search condition for each partition final List<String[]> partitionValues = comp.getQueryPartitionValues(); if (partitionValues != null) { condition.setPartitionValues(Arrays.asList(partitionValues.get(0))); } // 3. Set time range if it's timeseries service EntityDefinition ed = EntityDefinitionManager.getEntityByServiceName(serviceName); if (ed.isTimeSeries()) { // TODO check timestamp exists for timeseries or topology data condition.setStartTime(startTime); condition.setEndTime(endTime); } // 4. Set HBase start scanning rowkey if given condition.setStartRowkey(startRowkey); // 5. Set page size condition.setPageSize(pageSize); // 6. Generate output,group-by,aggregated fields List<String> outputFields = comp.outputFields(); List<String> groupbyFields = comp.groupbyFields(); List<String> aggregateFields = comp.aggregateFields(); Set<String> filterFields = comp.getFilterFields(); // Start to generate output fields list { condition.setOutputAll(comp.isOutputAll()); if (outputFields == null) outputFields = new ArrayList<String>(); if (comp.hasAgg()) { if (groupbyFields != null) outputFields.addAll(groupbyFields); if (aggregateFields != null) outputFields.addAll(aggregateFields); if (GenericMetricEntity.GENERIC_METRIC_SERVICE.equals(serviceName) && !outputFields.contains(GenericMetricEntity.VALUE_FIELD)) { outputFields.add(GenericMetricEntity.VALUE_FIELD); } } if (filterFields != null) outputFields.addAll(filterFields); condition.setOutputFields(outputFields); if (comp.isOutputAll()) { LOG.info("Output fields: ALL"); } else { LOG.info("Output fields: " + StringUtils.join(outputFields, ",")); } // } END // 7. Build GenericQuery GenericQuery reader = GenericQueryBuilder.select(outputFields).from(serviceName, metricName) .where(condition) .groupBy(comp.hasAgg(), groupbyFields, comp.aggregateFunctionTypes(), aggregateFields) .timeSeries(timeSeries, intervalmin).treeAgg(treeAgg) .orderBy(comp.sortOptions(), comp.sortFunctions(), comp.sortFields()).top(top) .parallel(parallel).build(); // 8. Fill response object List entities = reader.result(); result.setObj(entities); result.setTotalResults(entities.size()); result.setSuccess(true); result.setLastTimestamp(reader.getLastTimestamp()); result.setFirstTimestamp(reader.getFirstTimeStamp()); } catch (Exception ex) { LOG.error("Fail executing list query", ex); result.setException(EagleExceptionWrapper.wrap(ex)); result.setSuccess(false); return result; } finally { watch.stop(); result.setElapsedms(watch.getTime()); } LOG.info("Query done " + watch.getTime() + " ms"); return result; }