/* * Copyright 2014 Google Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.samples.apps.iosched.model; import com.google.samples.apps.iosched.provider.ScheduleContract; public class ScheduleItem implements Cloneable, Comparable<ScheduleItem> { // types: public static final int FREE = 0; // a free chunk of time public static final int SESSION = 1; // a session public static final int BREAK = 2; // a break (lunch, breaks, after-hours party) // item type public int type = FREE; // start and end time for this item public long startTime = 0; public long endTime = 0; // number of sessions available in this block (usually for free blocks) public int numOfSessions = 0; // session id public String sessionId = ""; // title and subtitle public String title = ""; public String subtitle = ""; // has feedback been given on this session? public boolean hasGivenFeedback; // background image URL public String backgroundImageUrl = ""; public int backgroundColor = 0; // flags public int flags = 0; public static final int FLAG_HAS_LIVESTREAM = 0x01; public static final int FLAG_NOT_REMOVABLE = 0x02; public static final int FLAG_CONFLICTS_WITH_PREVIOUS = 0x04; public void setTypeFromBlockType(String blockType) { if (!ScheduleContract.Blocks.isValidBlockType(blockType) || ScheduleContract.Blocks.BLOCK_TYPE_FREE.equals(blockType)) { type = FREE; } else { type = BREAK; } } @Override public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException unused) { // does not happen (since we implement Cloneable) return new ScheduleItem(); } } @Override public int compareTo(ScheduleItem another) { return this.startTime < another.startTime ? -1 : ( this.startTime > another.startTime ? 1 : 0 ); } @Override public boolean equals(Object o) { if (o == null || !(o instanceof ScheduleItem)) { return false; } ScheduleItem i = (ScheduleItem) o; return type == i.type && sessionId.equals(i.sessionId) && startTime == i.startTime && endTime == i.endTime; } @Override public String toString() { return String.format("[item type=%d, startTime=%d, endTime=%d, title=%s, subtitle=%s, flags=%d]", type, startTime, endTime, title, subtitle, flags); } }