package in.partake.model; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import in.partake.model.dto.UserTicket; /** * enrollment with related data. * @author shinyak * */ public class UserTicketEx extends UserTicket { private UserEx user; private List<String> relatedEventIds; // priority, modifiedAt 順に並べる comparator public static Comparator<UserTicketEx> getPriorityBasedComparator() { return new Comparator<UserTicketEx>() { @Override public int compare(UserTicketEx lhs, UserTicketEx rhs) { if (lhs == rhs) { return 0; } if (lhs == null) { return -1; } if (rhs == null) { return 1; } int x = lhs.getAppliedAt().compareTo(rhs.getAppliedAt()); if (x != 0) return x; // If application time is the same, we use userId to compare it. return lhs.getUserId().compareTo(rhs.getUserId()); } }; } public UserTicketEx(UserTicket enrollment, UserEx user) { super(enrollment); this.user = user; this.relatedEventIds = new ArrayList<String>(); } public UserEx getUser() { return this.user; } public List<String> getRelatedEventIds() { return relatedEventIds; } public void addRelatedEventId(String eventId) { checkFrozen(); relatedEventIds.add(eventId); } }