package de.is24.util.monitoring.visitors;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
import de.is24.util.monitoring.HistorizableList;
import de.is24.util.monitoring.MultiValueProvider;
import de.is24.util.monitoring.StateValueProvider;
import de.is24.util.monitoring.Version;
public class ValueOrderedReportVisitor extends AbstractSortedReportVisitor {
protected Set<CounterEntry> counterSet;
protected Set<TimerEntry> timerSet;
public ValueOrderedReportVisitor() {
counterSet = new TreeSet<CounterEntry>(new CounterComparator());
timerSet = new TreeSet<TimerEntry>(new TimerComparator());
}
@Override
public void reportHistorizableList(HistorizableList aHistorizableList) {
// we do not report historizables
}
@Override
public void reportVersion(Version aVersion) {
// we do not report Versions
}
@Override
public void reportStateValue(StateValueProvider stateValueProvider) {
// we do not report stateValues
}
@Override
public void reportMultiValue(MultiValueProvider multiValueProvider) {
// we do not report multiValues
}
@Override
protected void addEntry(Entry entry) {
if (entry instanceof TimerEntry) {
timerSet.add((TimerEntry) entry);
} else if (entry instanceof CounterEntry) {
counterSet.add((CounterEntry) entry);
}
}
@Override
public String toString() {
StringBuilder buffy = new StringBuilder();
buffy.append(getClass().getName());
buffy.append("\n");
for (CounterEntry entry : counterSet) {
buffy.append(entry.getValue());
buffy.append("\n");
}
for (TimerEntry entry : timerSet) {
buffy.append(entry.getValue());
buffy.append("\n");
}
return buffy.toString();
}
private static class CounterComparator implements Comparator<CounterEntry> {
public int compare(CounterEntry o1, CounterEntry o2) {
if (o1.getCount() == o2.getCount()) {
return 0;
}
return (o1.getCount() > o2.getCount()) ? -1 : 1;
}
}
private static class TimerComparator implements Comparator<TimerEntry> {
public int compare(TimerEntry o1, TimerEntry o2) {
if (o1.getAverage() == o2.getAverage()) {
return 0;
}
return (o1.getAverage() > o2.getAverage()) ? -1 : 1;
}
}
}