/* * Copyright (C) 2011 - 2013 Michi Gysel <michael.gysel@gmail.com> * * This file is part of the HSR Timetable. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package ch.scythe.hsr.api.ui; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import ch.scythe.hsr.enumeration.Weekday; public class UiDay implements Serializable { private static final long serialVersionUID = 1L; private final Weekday weekday; private List<UiLesson> lessons = new ArrayList<UiLesson>(); public UiDay(Weekday weekday) { this.weekday = weekday; } public List<UiLesson> getLessons() { return lessons; } public void setLessons(List<UiLesson> lessons) { this.lessons = lessons; Collections.sort(lessons, new Comparator<UiLesson>() { @Override public int compare(UiLesson l, UiLesson r) { int result = 0; if ("spezial".equals(l.getTimeSlot())) { result = -1; if (l.getTimeSlot().equals(r.getTimeSlot())) { result = 0; } } else if ("spezial".equals(r.getTimeSlot())) { result = 1; } else if (hasTimeFormat(l) && hasTimeFormat(r)) { result = extractHour(l).compareTo(extractHour(r)); if (result == 0) { result = l.getName().compareTo(r.getName()); } } else { result = l.getTimeSlot().compareTo(r.getTimeSlot()); } return result; } }); } public Weekday getWeekday() { return weekday; } private Integer extractHour(UiLesson l) { return Integer.valueOf(l.getTimeSlot().split(":")[0]); } private boolean hasTimeFormat(UiLesson uiLesson) { return uiLesson.getTimeSlot().contains(":"); } }