/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.sensitivities;
import java.util.Comparator;
import org.threeten.bp.Duration;
/**
* Comparator for FactorExposureData.
*/
public class FactorExposureDataComparator implements Comparator<FactorExposureData> {
@Override
public int compare(FactorExposureData arg0, FactorExposureData arg1) {
final int id = Long.valueOf(arg0.getFactorSetId()).compareTo(arg1.getFactorSetId());
if (id != 0) {
return id;
}
final int factorType = arg0.getFactorType().getFactorType().compareTo(arg1.getFactorType().getFactorType());
if (factorType != 0) {
return factorType;
}
if (arg0.getNode() != null && arg0.getNode().length() > 0) {
Duration p0 = Duration.parse("P" + arg0.getNode());
if (arg1.getNode() != null && arg1.getNode().length() > 0) {
Duration p1 = Duration.parse("P" + arg1.getNode());
final long node = p0.toNanos() - p1.toNanos();
if (node != 0) {
return (int) node;
}
} else {
return 1;
}
} else {
if (arg1.getNode() != null && arg0.getNode().length() > 0) {
return -1;
}
}
return arg0.getFactorName().compareTo(arg1.getFactorName());
}
}