Example usage for org.apache.commons.lang.time StopWatch start

List of usage examples for org.apache.commons.lang.time StopWatch start

Introduction

In this page you can find the example usage for org.apache.commons.lang.time StopWatch start.

Prototype

public void start() 

Source Link

Document

Start the stopwatch.

This method starts a new timing session, clearing any previous values.

Usage

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;
}