package com.thebluealliance.androidclient.comparators; import com.thebluealliance.androidclient.helpers.EventHelper; import com.thebluealliance.androidclient.helpers.TeamHelper; import com.thebluealliance.androidclient.models.Favorite; import com.thebluealliance.androidclient.types.ModelType; import java.util.Comparator; public class FavoriteSortByModelComparator implements Comparator<Favorite> { @Override public int compare(Favorite lhs, Favorite rhs) { if (lhs.getModelEnum() == rhs.getModelEnum()) { if (lhs.getModelType() == ModelType.TEAM) { return Integer.compare(TeamHelper.getTeamNumber(lhs.getModelKey()), TeamHelper.getTeamNumber(rhs.getModelKey())); } else if (lhs.getModelType() == ModelType.EVENT || lhs.getModelType() == ModelType.EVENTTEAM) { // Sort year newest first int yearCmp = compareEventYears(rhs.getModelKey(), lhs.getModelKey()); if (yearCmp == 0) { return EventHelper.getEventCode(lhs.getModelKey()) .compareTo(EventHelper.getEventCode(rhs.getModelKey())); } return yearCmp; } else { return lhs.getModelKey().compareTo(rhs.getModelKey()); } } else { return ((Integer) lhs.getModelEnum()).compareTo(rhs.getModelEnum()); } } private int compareEventYears(String key1, String key2) { return Integer.compare(EventHelper.getYear(key1), EventHelper.getYear(key2)); } }