package com.griddynamics.jagger.util;
import java.util.Arrays;
import java.util.List;
public class MetricNamesRankingProvider {
private static List<String> patterns = Arrays.asList(
"^" + StandardMetricsNamesUtil.ITERATIONS_SAMPLES + ".*",
"^" + StandardMetricsNamesUtil.DURATION_SEC + ".*",
"^" + StandardMetricsNamesUtil.THROUGHPUT + ".*",
"^" + StandardMetricsNamesUtil.LATENCY_SEC + ".*",
"^" + StandardMetricsNamesUtil.LATENCY_STD_DEV_SEC + ".*",
"^" + StandardMetricsNamesUtil.TIME_LATENCY_PERCENTILE + ".*",
"^" + StandardMetricsNamesUtil.SUCCESS_RATE + ".*"
);
protected static int compare(String o1, String o2){
Comparable o1Rank = getRank(o1);
Comparable o2Rank = getRank(o2);
if (o1Rank.compareTo(0)==0 && o2Rank.compareTo(0)==0){
// display names, not matched to pattern above
int res = String.CASE_INSENSITIVE_ORDER.compare(o1,o2);
return (res != 0) ? res : o1.compareTo(o2);
}
if (o1Rank.compareTo(o2Rank)==0){
return o1.compareTo(o2);
}
return o1Rank.compareTo(o2Rank);
}
protected static Comparable getRank(String o){
int rank = 0;
for (String pattern : patterns){
if (o.matches(pattern)){
return new Integer(-patterns.size()+rank);
}
rank++;
}
return 0;
}
}