/** * Removes a series from the collection. * * @param index the series index (zero-based). */ public void removeSeries(int index) { TimeSeries series = getSeries(index); if (series != null) { removeSeries(series); } }
public static void normaliseDateRange(TimeSeriesCollection collection, RegularTimePeriod[] range) { if (collection.getSeriesCount() == 0) return; // find earliest date, then move it forwards until we hit now RegularTimePeriod earliest = range[0]; RegularTimePeriod latest = range[1]; RegularTimePeriod cursor = earliest; for (int i = 0; i < collection.getSeriesCount(); i++) { TimeSeries series = collection.getSeries(i); while (cursor.compareTo(latest) != 1) { if (series.getValue(cursor) == null) series.add(cursor, Integer.valueOf(0)); cursor = cursor.next(); } cursor = earliest; } } }
List<AverageStatusDataRow> generateDataSet(XYDataset dataset, XYURLGenerator urlGenerator) { TimeSeriesCollection timeSeries = (TimeSeriesCollection) dataset; Map<Number, AverageStatusDataRow> dataRowMap = new LinkedHashMap<Number, AverageStatusDataRow>(); TimePeriodUtils timePeriodUtils = new TimePeriodUtils(timeZoneManager); for (int seriesIndex = 0, seriesCount = timeSeries.getSeriesCount(); seriesIndex < seriesCount; ++seriesIndex) { Comparable status = timeSeries.getSeriesKey(seriesIndex); for (int xyItemIndex = 0, itemCount = timeSeries.getItemCount(seriesIndex); xyItemIndex < itemCount; ++xyItemIndex) { TimeSeriesDataItem dataItem = timeSeries.getSeries(seriesIndex).getDataItem(xyItemIndex); Number periodInMillis = timeSeries.getX(seriesIndex, xyItemIndex); AverageStatusDataRow averageStatusDataRow = dataRowMap.containsKey(periodInMillis) ? dataRowMap.get(periodInMillis) : new AverageStatusDataRow(timePeriodUtils.prettyPrint(dataItem.getPeriod())); dataRowMap.put(periodInMillis, averageStatusDataRow); Number value = dataset.getY(seriesIndex, xyItemIndex); String url = urlGenerator.generateURL(dataset, seriesIndex, xyItemIndex); averageStatusDataRow.setStatusValue(status.toString(), value.doubleValue(), url); } } return new ArrayList<AverageStatusDataRow>(dataRowMap.values()); }
/** * Returns the number of items in the specified series. This method is * provided for convenience. * * @param series the series index (zero-based). * * @return The item count. */ @Override public int getItemCount(int series) { return getSeries(series).getItemCount(); }
/** * Creates a TimeSeriesCollection which represents the cumulative values of a given TimeSeriesCollection. * * @param collection collection * @return TimeSeriesCollection */ public static TimeSeriesCollection makeCumulative(TimeSeriesCollection collection) { TimeSeriesCollection result = new TimeSeriesCollection(); for (int i = 0; i < collection.getSeriesCount(); i++) { TimeSeries oldSeries = collection.getSeries(i); TimeSeries cumulativeSeries = new TimeSeries(oldSeries.getKey(), oldSeries.getTimePeriodClass()); int cumulativeValue = 0; for (int j = 0; j < oldSeries.getItemCount(); j++) { cumulativeValue += oldSeries.getValue(j).intValue(); cumulativeSeries.add(oldSeries.getTimePeriod(j), Integer.valueOf(cumulativeValue)); } result.addSeries(cumulativeSeries); } return result; }
/** * Removes a series from the collection. * * @param index the series index (zero-based). */ public void removeSeries(int index) { TimeSeries series = getSeries(index); if (series != null) { removeSeries(series); } }
/** * Returns the key for a series. * * @param series the index of the series (zero-based). * * @return The key for a series. */ public Comparable getSeriesKey(int series) { // check arguments...delegated // fetch the series name... return getSeries(series).getKey(); }
/** * Returns the number of items in the specified series. This method is * provided for convenience. * * @param series the series index (zero-based). * * @return The item count. */ public int getItemCount(int series) { return getSeries(series).getItemCount(); }
private void update(int i, Millisecond t, double value) { this.datasets[i].getSeries(0).add(t, value); } }
/** * Returns the key for a series. * * @param series the index of the series (zero-based). * * @return The key for a series. */ @Override public Comparable getSeriesKey(int series) { // check arguments...delegated // fetch the series name... return getSeries(series).getKey(); }
private void update(int i, Millisecond t, double value) { this.datasets[i].getSeries(0).add(t, value); } }
public String generateLabel(XYDataset dataset, int series, int item) { Comparable seriesName = dataset.getSeriesKey(series); Map labels = (Map)labelsMap.get(seriesName); if(labels != null) { return (String)labels.get(((TimeSeriesCollection)dataset).getSeries(series).getTimePeriod(item)); } return super.generateLabel( dataset, series, item ); } }
public String generateToolTip(XYDataset xyDataset, int row, int col) { final TimeSeriesCollection timeSeriesCollection = (TimeSeriesCollection) xyDataset; final TimeSeries timeSeries = timeSeriesCollection.getSeries(row); final TimeSeriesDataItem item = timeSeries.getDataItem(col); final RegularTimePeriod period = item.getPeriod(); int total = matchingIssues.get(period).intValue(); return period.toString() + ": " + total + " " + StringEscapeUtils.escapeHtml(dateField.getName()) + " " + i18nBean.getText("datacollector.tooltip.issues") + "."; } });
/** * Returns the indices of the two data items surrounding a particular * millisecond value. * * @param series the series index. * @param milliseconds the time. * * @return An array containing the (two) indices of the items surrounding * the time. */ public int[] getSurroundingItems(int series, long milliseconds) { int[] result = new int[] {-1, -1}; TimeSeries timeSeries = getSeries(series); for (int i = 0; i < timeSeries.getItemCount(); i++) { Number x = getX(series, i); long m = x.longValue(); if (m <= milliseconds) { result[0] = i; } if (m >= milliseconds) { result[1] = i; break; } } return result; }
TimeChart.TimeDataRow[] generateDataSet(final TimeSeriesCollection dataSet, XYURLGenerator urlGenerator, TimeZoneManager timeZoneManager) { final TimePeriodUtils timePeriodUtils = new TimePeriodUtils(timeZoneManager); final TimeSeries issuesSeries = dataSet.getSeries(0); TimeSeries totalSeries = dataSet.getSeries(1); TimeSeries averageSeries = dataSet.getSeries(2); int count = issuesSeries.getItems().size(); ArrayList<TimeDataRow> data = new ArrayList<TimeChart.TimeDataRow>(count); for (int i = 0; i < count; i++) { final int issues = issuesSeries.getValue(i).intValue(); final int total = totalSeries.getValue(i).intValue(); final int avg = averageSeries.getValue(i).intValue(); final String issuesLink = urlGenerator != null ? urlGenerator.generateURL(dataSet, 0, i) : null; final RegularTimePeriod timePeriod = issuesSeries.getTimePeriod(i); data.add(new TimeChart.TimeDataRow(timePeriodUtils.prettyPrint(timePeriod), issues, issuesLink, total, avg)); } return data.toArray(new TimeChart.TimeDataRow[data.size()]); } }
/** * Reduce a given dataset to only contain a specified number of columns * * @param dataset The dataset to reduce * @param rowKeysToKeep The rows to keep * @return A reduced dataset copy. */ public static TimeSeriesCollection reduceDataset(TimeSeriesCollection dataset, List rowKeysToKeep) { final TimeSeriesCollection newDataSet = new TimeSeriesCollection(); @SuppressWarnings("unchecked") final List<TimeSeries> timeSerieses = new ArrayList<TimeSeries>(dataset.getSeries()); for (TimeSeries timeSeries : timeSerieses) { if (rowKeysToKeep.contains(timeSeries.getKey())) { newDataSet.addSeries(timeSeries); } } return newDataSet; }
public JRPrintHyperlink getEntityHyperlink(ChartEntity entity) { JRPrintHyperlink printHyperlink = null; if (hasHyperlinks() && entity instanceof XYItemEntity) { XYItemEntity itemEntity = (XYItemEntity) entity; TimeSeriesCollection dataset = (TimeSeriesCollection) itemEntity.getDataset(); TimeSeries series = dataset.getSeries(itemEntity.getSeriesIndex()); Map serieHyperlinks = (Map) itemHyperlinks.get(series.getKey()); if (serieHyperlinks != null) { RegularTimePeriod timePeriod = series.getTimePeriod(itemEntity.getItem()); printHyperlink = (JRPrintHyperlink) serieHyperlinks.get(timePeriod); } } return printHyperlink; }
public String generateURL(XYDataset xyDataset, int row, int col) { final TimeSeriesCollection timeSeriesCollection = (TimeSeriesCollection) xyDataset; final TimeSeries timeSeries = timeSeriesCollection.getSeries(row); final TimeSeriesDataItem item = timeSeries.getDataItem(col); final RegularTimePeriod period = item.getPeriod(); final JqlQueryBuilder jqlQueryBuilder = JqlQueryBuilder.newBuilder(searchRequest.getQuery()); final Date startDate = period.getStart(); final Date endDate = new Date(period.getEnd().getTime()); jqlQueryBuilder.where().defaultAnd().addDateRangeCondition(getJqlFieldIdFor(dateField), startDate, endDate); jqlQueryBuilder.orderBy().addSortForFieldName(dateFieldId, SortOrder.DESC, true); final QueryOptimizer optimizer = new RedundantClausesQueryOptimizer(); final Query query = optimizer.optimizeQuery(jqlQueryBuilder.buildQuery()); return velocityRequestContext.getCanonicalBaseUrl() + "/issues/?" + searchService.getQueryString(remoteUser, query); } };
public String generateURL(XYDataset xyDataset, int series, int item) { TimeSeriesCollection timeSeriesCollection = (TimeSeriesCollection) xyDataset; TimeSeries timeSeries = timeSeriesCollection.getSeries(series); RegularTimePeriod period = timeSeries.getTimePeriod(item); SearchRequest searchUrlSuffix; StatisticsMapper createdMapper = new DatePeriodStatisticsMapper( ChartUtil.getTimePeriodClass(periodName), DocumentConstants.ISSUE_UPDATED, timeZoneManager.getLoggedInUserTimeZone()); searchUrlSuffix = createdMapper.getSearchUrlSuffix(period, searchRequestCopy); return velocityRequestContext.getCanonicalBaseUrl() + "/secure/IssueNavigator.jspa?reset=true" + searchService.getQueryString(jiraAuthenticationContext.getLoggedInUser(), searchUrlSuffix.getQuery()); } };
public String generateURL(final XYDataset xyDataset, final int row, final int col) { TimeSeriesCollection timeSeriesCollection = (TimeSeriesCollection) xyDataset; TimeSeries timeSeries = timeSeriesCollection.getSeries(row); if (row == 0) // only generate urls for the first row in the dataset { final TimeSeriesDataItem item = timeSeries.getDataItem(col); final RegularTimePeriod period = item.getPeriod(); final StatisticsMapper createdMapper = new DatePeriodStatisticsMapper(ChartUtil.getTimePeriodClass(periodName), dateFieldId, timeZoneManager.getLoggedInUserTimeZone()); final SearchRequest searchUrlSuffix = createdMapper.getSearchUrlSuffix(period, searchRequest); Query query; if (searchUrlSuffix == null) { query = new QueryImpl(); } else { QueryOptimizer optimizer = new RedundantClausesQueryOptimizer(); query = optimizer.optimizeQuery(searchUrlSuffix.getQuery()); } return velocityRequestContext.getCanonicalBaseUrl() + "/issues/?" + searchService.getQueryString(remoteUser, query); } else { return null; } } };