package org.sakaiproject.delegatedaccess.util; import java.util.Comparator; import org.sakaiproject.delegatedaccess.model.SiteSearchResult; /** * * Compares search results for sorting * * @author Bryan Holladay (holladay@longsight.com) * */ public class SiteSearchResultComparator implements Comparator<SiteSearchResult> { private int compareField = -1; public SiteSearchResultComparator(int compareField){ this.compareField = compareField; } public int compare(SiteSearchResult arg0, SiteSearchResult arg1) { switch (compareField) { case DelegatedAccessConstants.SEARCH_COMPARE_SITE_ID: return arg0.getSiteTitle().compareTo(arg1.getSiteTitle()); case DelegatedAccessConstants.SEARCH_COMPARE_TERM: return arg0.getSiteTerm().compareToIgnoreCase(arg1.getSiteTerm()); case DelegatedAccessConstants.SEARCH_COMPARE_INSTRUCTOR: return arg0.getInstructorsString().compareToIgnoreCase(arg1.getInstructorsString()); case DelegatedAccessConstants.SEARCH_COMPARE_ACCESS: return arg0.getAccessString().compareToIgnoreCase(arg1.getAccessString()); case DelegatedAccessConstants.SEARCH_COMPARE_START_DATE: if(arg0.getShoppingPeriodStartDate() == null && arg1.getShoppingPeriodStartDate() == null){ return 0; }else if(arg0.getShoppingPeriodStartDate() == null){ return 1; }else if(arg1.getShoppingPeriodStartDate() == null){ return -1; }else{ return arg0.getShoppingPeriodStartDate().compareTo(arg1.getShoppingPeriodStartDate()); } case DelegatedAccessConstants.SEARCH_COMPARE_END_DATE: if(arg0.getShoppingPeriodEndDate() == null && arg1.getShoppingPeriodEndDate() == null){ return 0; }else if(arg0.getShoppingPeriodEndDate() == null){ return 1; }else if(arg1.getShoppingPeriodEndDate() == null){ return -1; }else{ return arg0.getShoppingPeriodEndDate().compareTo(arg1.getShoppingPeriodEndDate()); } case DelegatedAccessConstants.SEARCH_COMPARE_ACCESS_MODIFIED: if(arg0.getModified() == null && arg1.getModified() == null){ return 0; }else if(arg0.getModified() == null){ return 1; }else if(arg1.getModified() == null){ return -1; }else{ return arg0.getModified().compareTo(arg1.getModified()); } case DelegatedAccessConstants.SEARCH_COMPARE_ACCESS_MODIFIED_BY: return arg0.getModifiedBySortName().compareToIgnoreCase(arg1.getModifiedBySortName()); case DelegatedAccessConstants.SEARCH_COMPARE_SITE_TITLE: default: return arg0.getSiteTitle().compareToIgnoreCase(arg1.getSiteTitle()); } } }