/** * Converts the solr document given in the constructor into a time series of type <T> * * @return a time series of type <T> * @throws Exception if bad things happen. */ @Override @SuppressWarnings("PMD.SignatureDeclareThrowsException") public T call() throws Exception { BinaryTimeSeries.Builder timeSeriesBuilder = new BinaryTimeSeries.Builder(); Map<String, List<Object>> multivalued = new HashMap<>(); document.forEach(attributeField -> { String key = attributeField.name(); if (key.contains(ChronixLuceneStorageConstants.MULTI_VALUE_FIELD_DELIMITER)) { key = key.substring(0, key.indexOf(ChronixLuceneStorageConstants.MULTI_VALUE_FIELD_DELIMITER)); //Handle multivalued fields if (!multivalued.containsKey(key)) { multivalued.put(key, new ArrayList<>()); } multivalued.get(key).add(convert(attributeField)); } else { timeSeriesBuilder.field(key, convert(attributeField)); } }); multivalued.forEach(timeSeriesBuilder::field); LOGGER.debug("Calling document converter with {}", document); T timeSeries = documentConverter.from(timeSeriesBuilder.build(), queryStart, queryEnd); LOGGER.debug("Returning time series {} to callee", timeSeries); return timeSeries; }
/** * Converts the solr document given in the constructor into a time series of type <T> * * @return a time series of type <T> * @throws Exception if bad things happen. */ @Override @SuppressWarnings("PMD.SignatureDeclareThrowsException") public T call() throws Exception { BinaryTimeSeries.Builder timeSeriesBuilder = new BinaryTimeSeries.Builder(); document.forEach(attributeField -> timeSeriesBuilder.field(attributeField.getKey(), attributeField.getValue())); LOGGER.debug("Calling document converter with {}", document); T timeSeries = documentConverter.from(timeSeriesBuilder.build(), queryStart, queryEnd); LOGGER.debug("Returning time series {} to callee", timeSeries); return timeSeries; } }
/** * Converts the solr document given in the constructor into a time series of type <T> * * @return a time series of type <T> * @throws Exception if bad things happen. */ @Override @SuppressWarnings("PMD.SignatureDeclareThrowsException") public T call() throws Exception { BinaryTimeSeries.Builder timeSeriesBuilder = new BinaryTimeSeries.Builder(); document.forEach(attributeField -> timeSeriesBuilder.field(attributeField.getKey(), attributeField.getValue())); LOGGER.debug("Calling document converter with {}", document); T timeSeries = documentConverter.from(timeSeriesBuilder.build(), queryStart, queryEnd); LOGGER.debug("Returning time series {} to callee", timeSeries); return timeSeries; } }
@Override public BinaryTimeSeries to(MetricTimeSeries timeSeries) { LOGGER.debug("Converting {} to BinaryTimeSeries", timeSeries); BinaryTimeSeries.Builder builder = new BinaryTimeSeries.Builder(); //serialize byte[] serializedPoints = ProtoBufKassiopeiaSimpleSerializer.to(timeSeries.points().iterator()); byte[] compressedPoints = Compression.compress(serializedPoints); //Add the minimum required fields builder.start(timeSeries.getStart()) .end(timeSeries.getEnd()) .data(compressedPoints); //Currently we only have a metric builder.field(MetricTSSchema.METRIC, timeSeries.getMetric()); //Add a list of user defined attributes timeSeries.attributes().forEach(builder::field); return builder.build(); } }
@Override public BinaryTimeSeries to(MetricTimeSeries timeSeries) { LOGGER.debug("Converting {} to BinaryTimeSeries", timeSeries); BinaryTimeSeries.Builder builder = new BinaryTimeSeries.Builder(); //serialize byte[] serializedPoints = ProtoBufMetricTimeSeriesSerializer.to(timeSeries.points().iterator()); byte[] compressedPoints = Compression.compress(serializedPoints); //Add the minimum required fields builder.start(timeSeries.getStart()) .end(timeSeries.getEnd()) .data(compressedPoints); //Currently we only have a metric builder.field(MetricTSSchema.METRIC, timeSeries.getMetric()); //Add a list of user defined attributes timeSeries.attributes().forEach(builder::field); return builder.build(); } }
/** * Converts a solr document to a time series. * <p> * The resulting time series does not contain user defined attributes present in the solr document * (see {@link de.qaware.chronix.Schema#isUserDefined(String)} ). * * @param solrDoc the solr document * @return time series representing the given solr document */ public MetricTimeSeries toTimeSeries(SolrDocument solrDoc) { BinaryTimeSeries.Builder btsBuilder = new BinaryTimeSeries.Builder(); solrDoc.forEach(field -> btsBuilder.field(field.getKey(), field.getValue())); BinaryTimeSeries bts = btsBuilder.build(); long start = (long) solrDoc.get(START); long end = (long) solrDoc.get(END); return converter.from(bts, start, end); }