package org.openstack.atlas.usagerefactor.helpers;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import org.openstack.atlas.usagerefactor.SnmpUsage;
public class SnmpUsageComparator implements Comparator<SnmpUsage> {
private List<SnmpUsageComparatorType> comparatorTypes = new ArrayList<SnmpUsageComparatorType>();
@Override
public int compare(SnmpUsage u1, SnmpUsage u2) {
int comp = 0;
for (SnmpUsageComparatorType comparatorType : comparatorTypes) {
switch (comparatorType) {
case BYTES_IN:
comp = longComp(u1.getBytesIn(), u2.getBytesIn());
break;
case BYTES_OUT:
comp = longComp(u1.getBytesOut(), u2.getBytesOut());
break;
case BYTES_SSL_IN:
comp = longComp(u1.getBytesInSsl(), u2.getBytesOutSsl());
break;
case BYTES_SSL_OUT:
comp = longComp(u1.getBytesOutSsl(), u2.getBytesOutSsl());
break;
case CONCURRENT_CONNECTIONS:
comp = intComp(u1.getConcurrentConnections(), u2.getConcurrentConnections());
break;
case CONCURRENT_SSL_CONNECTIONS:
comp = intComp(u1.getConcurrentConnectionsSsl(), u2.getConcurrentConnectionsSsl());
break;
case HOST_ID:
comp = intComp(u1.getHostId(), u2.getHostId());
break;
case LOADBALANCER_ID:
comp = intComp(u1.getLoadbalancerId(), u2.getLoadbalancerId());
break;
}
if (comp != 0) {
return comp;
}
}
return 0;
}
private static int intComp(int i1, int i2) {
if (i1 < i2) {
return -1;
}
if (i1 > i2) {
return 1;
}
return 0;
}
private static int longComp(long l1, long l2) {
if (l1 < l2) {
return -1;
}
if (l1 > l2) {
return 1;
}
return 0;
}
public void clear() {
comparatorTypes = new ArrayList<SnmpUsageComparatorType>();
}
public List<SnmpUsageComparatorType> getComparatorTypes() {
if (comparatorTypes == null) {
comparatorTypes = new ArrayList<SnmpUsageComparatorType>();
}
return comparatorTypes;
}
public void setComparatorTypes(List<SnmpUsageComparatorType> comparatorTypes) {
this.comparatorTypes = comparatorTypes;
}
}