package rocks.inspectit.shared.cs.tracing.comparator;
import rocks.inspectit.shared.all.cmr.service.ICachedDataService;
import rocks.inspectit.shared.all.tracing.data.AbstractSpan;
import rocks.inspectit.shared.all.util.ObjectUtils;
import rocks.inspectit.shared.cs.communication.comparator.IDataComparator;
/**
* Comparator for the span.
*
* @author Ivan Senic
*
*/
public enum SpanComparator implements IDataComparator<AbstractSpan> {
/**
* Sort by propagation type.
*/
PROPAGATION_TYPE,
/**
* Sort by span duration.
*/
DURATION;
/**
* {@inheritDoc}
*/
@Override
public int compare(AbstractSpan o1, AbstractSpan o2, ICachedDataService cachedDataService) {
switch (this) {
case PROPAGATION_TYPE:
return ObjectUtils.compare(o1.getPropagationType(), o2.getPropagationType());
case DURATION:
return Double.compare(o1.getDuration(), o2.getDuration());
default:
return 0;
}
}
}