/*
Copyright 2013 BarD Software s.r.o
This file is part of GanttProject, an opensource project management tool.
GanttProject 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.
GanttProject 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 GanttProject. If not, see <http://www.gnu.org/licenses/>.
*/
package biz.ganttproject.core.calendar;
import java.awt.Color;
import java.util.Date;
import com.google.common.base.Objects;
/**
* This class represents a calendar event, which roughly corresponds to VEVENT data type from iCal
* specification. Event has a date, a summary, a type and recurrence flag. CalendarEvent objects are immutable.
*
* @author dbarashev
*/
public class CalendarEvent {
/**
* Event type. WORKING_DAY means a regular working day and assumes that tasks can be scheduled on this date.
* HOLIDAY means non-working day and assumes that tasks can't be scheduled on that day.
* NEUTRAL means that this event will have a type inherited from the base calendar, if any, or from
* weekend configuration.
*/
public static enum Type {
HOLIDAY, WORKING_DAY, NEUTRAL
}
public final Date myDate;
public final boolean isRecurring;
private final Type myType;
private final String myTitle;
private final Color myColor;
public static CalendarEvent newEvent(Date date, boolean isRecurring, Type type, String title, Color color) {
return new CalendarEvent(date, isRecurring, type, title, color);
}
CalendarEvent(Date date, boolean recurring, Type type, String title, Color color) {
myDate = date;
isRecurring = recurring;
myType = type;
myTitle = title;
myColor = color;
}
public String getTitle() {
return myTitle;
}
public Type getType() {
return myType;
}
public Color getColor() {
return myColor;
}
@Override
public int hashCode() {
return this.myDate.hashCode();
}
@Override
public boolean equals(Object obj) {
if (false == obj instanceof CalendarEvent) {
return false;
}
CalendarEvent that = (CalendarEvent) obj;
return Objects.equal(this.myDate, that.myDate) && Objects.equal(this.isRecurring, that.isRecurring)
&& Objects.equal(this.myType, that.myType);
}
@Override
public String toString() {
return "Date=" + myDate + " repeating=" + isRecurring;
}
}