/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.domain.utils; import java.util.Comparator; import au.org.intersect.exsite9.domain.MetadataAttributeValue; import au.org.intersect.exsite9.domain.MetadataCategory; import au.org.intersect.exsite9.domain.MetadataValue; import au.org.intersect.exsite9.util.Triplet; /** * Comparator that can be used to sort MetadataAssociation Triplets */ public final class MetadataAssociationTripletComparator implements Comparator<Triplet<MetadataCategory, MetadataValue, MetadataAttributeValue>> { @Override public int compare(final Triplet<MetadataCategory, MetadataValue, MetadataAttributeValue> t1, final Triplet<MetadataCategory, MetadataValue, MetadataAttributeValue> t2) { final long mcId1 = t1.getFirst().getId(); final long mcId2 = t2.getFirst().getId(); if (mcId1 < mcId2) { return -1; } if (mcId1 > mcId2) { return 1; } final long mvId1 = t1.getSecond().getId(); final long mvId2 = t2.getSecond().getId(); if (mvId1 < mvId2) { return -1; } if (mvId1 > mvId2) { return 1; } // MetadataAttributeValues can be null. if (t1.getThird() == null && t2.getThird() == null) { return 0; } if (t1.getThird() == null) { return 1; } if (t2.getThird() == null) { return -1; } final long mavId1 = t1.getThird().getId(); final long mavId2 = t2.getThird().getId(); if (mavId1 < mavId2) { return -1; } if (mavId1 > mavId2) { return 1; } return 0; } }