package rocks.inspectit.shared.cs.communication.comparator;
import java.util.Comparator;
import rocks.inspectit.shared.all.cmr.service.ICachedDataService;
import rocks.inspectit.shared.all.communication.data.HttpTimerData;
import rocks.inspectit.shared.all.util.ObjectUtils;
/**
* Comparators for {@link HttpTimerData}.
*
* @author Ivan Senic
*
*/
public enum HttpTimerDataComparatorEnum implements IDataComparator<HttpTimerData>, Comparator<HttpTimerData> {
/**
* Sort by URI.
*/
URI,
/**
* Sort by request method.
*/
HTTP_METHOD,
/**
* Sort by inspectit tag value (if available).
*/
TAG_VALUE;
/**
* {@inheritDoc}
*/
@Override
public int compare(HttpTimerData o1, HttpTimerData o2, ICachedDataService cachedDataService) {
return compare(o1, o2);
}
/**
* {@inheritDoc}
*/
@Override
public int compare(HttpTimerData o1, HttpTimerData o2) {
switch (this) {
case URI:
return ObjectUtils.compare(o1.getHttpInfo().getUri(), o2.getHttpInfo().getUri());
case HTTP_METHOD:
return ObjectUtils.compare(o1.getHttpInfo().getRequestMethod(), o2.getHttpInfo().getRequestMethod());
case TAG_VALUE:
return ObjectUtils.compare(o1.getHttpInfo().getInspectItTaggingHeaderValue(), o2.getHttpInfo().getInspectItTaggingHeaderValue());
default:
return 0;
}
}
}