public List<Interval> buildIntervals(List<DistinctValue> distinctValues) { // Get all the intervals List<Interval> results = buildAllIntervals(distinctValues); // Don't show the label intervals to hide List<Interval> intervalsVisible = new ArrayList<Interval>(); for (int i = 0; i < results.size(); i++) { LabelInterval labelInterval = (LabelInterval) results.get(i); if (!isIntervalHidden(labelInterval)) intervalsVisible.add(labelInterval); } // Make sure the maximum number of intervals is not exceeded . results = cutIntervals(intervalsVisible); return results; }
public List<Interval> cutIntervals(List<Interval> intervals) { List<Interval> results = new ArrayList<Interval>(); if (maxNumberOfIntervals < 1 || intervals.size() <= maxNumberOfIntervals) { return intervals; } // Leave out the intervals that exceed the maximum. for (int i = 0; i < maxNumberOfIntervals; i++) { results.add(intervals.get(i)); } // ... and group the rest in a new aggregated interval. CompositeInterval compositeInterval = new CompositeInterval(); ResourceBundle i18n = localeManager.getBundle("org.jboss.dashboard.displayer.messages", LocaleManager.currentLocale()); compositeInterval.setDescription(i18n.getString(AbstractDomain.I18N_PREFFIX + "finalInterval"), LocaleManager.currentLocale()); compositeInterval.setDomain(this); // Include the aggregated interval only if visible. if (!isIntervalHidden(compositeInterval)) { Set<Interval> otherIntervals = new HashSet<Interval>(); for (int i = maxNumberOfIntervals; i < intervals.size(); i++) otherIntervals.add(intervals.get(i)); compositeInterval.setIntervals(otherIntervals); results.add(compositeInterval); } return results; }