1 package com.stateofflow.eclipse.metrics.collator;
2
3 import java.util.Comparator;
4
5 import com.stateofflow.eclipse.metrics.configuration.MetricPresentations;
6 import com.stateofflow.eclipse.metrics.metric.MetricId;
7
8 public final class CollatedMetricIdComparator implements Comparator<MetricId> {
9 private final MetricsCollator collator;
10 private final MetricPresentations presentations;
11
12 public CollatedMetricIdComparator(final MetricsCollator collator, final MetricPresentations presentations) {
13 this.collator = collator;
14 this.presentations = presentations;
15 }
16
17 public int compare(final MetricId metricId1, final MetricId metricId2) {
18 return compareIds(metricId1, metricId2);
19 }
20
21 private int compareIds(final MetricId id, final MetricId id2) {
22 final int compare = collator.getAggregationSteps(id2) - collator.getAggregationSteps(id);
23 return compare != 0 ? compare : presentations.getShortPresentationName(id).compareTo(presentations.getShortPresentationName(id2));
24 }
25 }
26