package org.sakaiproject.delegatedaccess.util; import java.util.Comparator; import org.sakaiproject.delegatedaccess.model.AccessSearchResult; public class AccessSearchResultComparator implements Comparator<AccessSearchResult> { private int compareField = -1; public AccessSearchResultComparator(int compareField){ this.compareField = compareField; } @Override public int compare(AccessSearchResult o1, AccessSearchResult o2) { switch (compareField) { case DelegatedAccessConstants.SEARCH_COMPARE_SORT_NAME: if(o1.getSortName() == null && o2.getSortName() == null){ return 0; }else if(o1.getSortName() == null){ return 1; }else if(o2.getSortName() == null){ return -1; } return o1.getSortName().compareToIgnoreCase(o2.getSortName()); case DelegatedAccessConstants.SEARCH_COMPARE_TYPE: return o2.getType() - o1.getType(); case DelegatedAccessConstants.SEARCH_COMPARE_LEVEL: return o2.getLevel() - o1.getLevel(); case DelegatedAccessConstants.SEARCH_COMPARE_ACCESS: if(o1.getAccess() == null && o2.getAccess() == null){ return 0; }else if(o1.getAccess() == null){ return 1; }else if(o2.getAccess() == null){ return -1; }else{ String o1Access = o1.getAccess()[0] + ":" + o1.getAccess()[1]; String o2Access = o2.getAccess()[0] + ":" + o2.getAccess()[1]; return o1Access.compareTo(o2Access); } case DelegatedAccessConstants.SEARCH_COMPARE_EID: default: if(o1.getEid() == null && o2.getEid() == null){ return 0; }else if(o1.getEid() == null){ return 1; }else if(o2.getEid() == null){ return -1; } return o1.getEid().compareToIgnoreCase(o2.getEid()); } } }