public static String getSamplesAsCSV(final SampleCoder sampleCoder, final TimelineChunk chunk) throws IOException { return getSamplesAsCSV(sampleCoder, chunk, null, null); }
public static String getSamplesAsCSV(final SampleCoder sampleCoder, final TimelineChunk chunk, @Nullable final DateTime startTime, @Nullable final DateTime endTime) throws IOException { final CSVSampleProcessor processor = new CSVSampleProcessor(startTime, endTime); return getSamplesAsCSV(sampleCoder, chunk, processor); }
@Override protected void writeJsonForChunks(final JsonGenerator generator, final Collection<? extends TimelineChunk> chunksForSourceAndMetric) throws IOException { for (final TimelineChunk chunk : chunksForSourceAndMetric) { final String source = timelineDao.getSource(chunk.getSourceId(), context); final CategoryRecordIdAndMetric categoryIdAndMetric = timelineDao.getCategoryIdAndMetric(chunk.getMetricId(), context); final String eventCategory = timelineDao.getEventCategory(categoryIdAndMetric.getEventCategoryId(), context); final String metric = categoryIdAndMetric.getMetric(); final TimeRangeSampleProcessor filter = filters.get(chunk.getSourceId()).get(chunk.getMetricId()); final String samples = filter == null ? CSVConsumer.getSamplesAsCSV(sampleCoder, chunk) : CSVConsumer.getSamplesAsCSV(sampleCoder, chunk, filter); // Don't write out empty samples if (!Strings.isNullOrEmpty(samples)) { generator.writeObject(new SamplesForMetricAndSource(source, eventCategory, metric, samples)); } } }
@Override protected void writeJsonForChunks(final JsonGenerator generator, final Collection<? extends TimelineChunk> chunksForSourceAndMetric) throws IOException { for (final TimelineChunk chunk : chunksForSourceAndMetric) { final String source = timelineDao.getSource(chunk.getSourceId(), context); final CategoryRecordIdAndMetric categoryIdAndMetric = timelineDao.getCategoryIdAndMetric(chunk.getMetricId(), context); final String eventCategory = timelineDao.getEventCategory(categoryIdAndMetric.getEventCategoryId(), context); final String metric = categoryIdAndMetric.getMetric(); final String samples = CSVConsumer.getSamplesAsCSV(sampleCoder, chunk); // Don't write out empty samples if (!Strings.isNullOrEmpty(samples)) { generator.writeObject(new SamplesForMetricAndSource(source, eventCategory, metric, samples)); } } } }
@Override protected void writeJsonForChunks(final JsonGenerator generator, final Collection<? extends TimelineChunk> chunksForSourceAndMetric) throws IOException { for (final TimelineChunk chunk : chunksForSourceAndMetric) { final String source = timelineDao.getSource(chunk.getSourceId(), context); final CategoryRecordIdAndMetric categoryIdAndMetric = timelineDao.getCategoryIdAndMetric(chunk.getMetricId(), context); final String eventCategory = timelineDao.getEventCategory(categoryIdAndMetric.getEventCategoryId(), context); final String metric = categoryIdAndMetric.getMetric(); final String samples = CSVConsumer.getSamplesAsCSV(sampleCoder, chunk, accumulatorSampleConsumer); // Don't write out empty samples if (!Strings.isNullOrEmpty(samples)) { generator.writeObject(new SamplesForMetricAndSource(source, eventCategory, metric, samples)); } lastSource = source; lastEventCategory = eventCategory; lastMetric = metric; } }
@Override protected void writeJsonForChunks(final JsonGenerator generator, final Collection<? extends TimelineChunk> chunksForSourceAndMetric) throws IOException { for (final TimelineChunk chunk : chunksForSourceAndMetric) { if (withBinaryData) { writer.writeValue(generator, new TimelineChunkDecoded(chunk, sampleCoder)); } else { final String source = timelineDao.getSource(chunk.getSourceId(), context); final CategoryRecordIdAndMetric categoryIdAndMetric = timelineDao.getCategoryIdAndMetric(chunk.getMetricId(), context); final String category = timelineDao.getEventCategory(categoryIdAndMetric.getEventCategoryId(), context); final String metric = categoryIdAndMetric.getMetric(); final String samples = CSVConsumer.getSamplesAsCSV(sampleCoder, chunk); // Don't write out empty samples if (!Strings.isNullOrEmpty(samples)) { generator.writeObject(new SamplesForMetricAndSource(source, category, metric, samples)); } } } } }
Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk), "1326749039,12345,1326749040,12346,1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, null, null), "1326749039,12345,1326749040,12346,1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime, null), "1326749039,12345,1326749040,12346,1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, null, startTime.plusSeconds(sampleCount)), "1326749039,12345,1326749040,12346,1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime.plusSeconds(1), startTime.plusSeconds(sampleCount)), "1326749039,12345,1326749040,12346,1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime.plusSeconds(2), startTime.plusSeconds(sampleCount)), "1326749040,12346,1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime.plusSeconds(3), startTime.plusSeconds(sampleCount)), "1326749041,12347"); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime.plusSeconds(4), startTime.plusSeconds(sampleCount)), ""); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime.plusSeconds(10), startTime.plusSeconds(sampleCount)), ""); Assert.assertEquals(CSVConsumer.getSamplesAsCSV(sampleCoder, timelineChunk, startTime, startTime.minusSeconds(1)), "");