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