package com.github.mongobee.utils; import com.github.mongobee.changeset.ChangeLog; import java.io.Serializable; import java.util.Comparator; import static org.springframework.util.StringUtils.hasText; /** * Sort ChangeLogs by 'order' value or class name (if no 'order' is set) * * @author lstolowski * @since 2014-09-17 */ public class ChangeLogComparator implements Comparator<Class<?>>, Serializable { @Override public int compare(Class<?> o1, Class<?> o2) { ChangeLog c1 = o1.getAnnotation(ChangeLog.class); ChangeLog c2 = o2.getAnnotation(ChangeLog.class); String val1 = !(hasText(c1.order())) ? o1.getCanonicalName() : c1.order(); String val2 = !(hasText(c2.order())) ? o2.getCanonicalName() : c2.order(); if (val1 == null && val2 == null){ return 0; } else if (val1 == null) { return -1; } else if (val2 == null) { return 1; } return val1.compareTo(val2); } }