/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition 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; version 3 of the License.
//
// This community edition 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 org.projectforge.plugins.teamcal.rest;
import java.util.Calendar;
import org.projectforge.common.DateHolder;
import org.projectforge.plugins.teamcal.event.ReminderDurationUnit;
import org.projectforge.plugins.teamcal.event.TeamEvent;
import org.projectforge.plugins.teamcal.event.TeamEventDO;
import org.projectforge.plugins.teamcal.event.TeamRecurrenceEvent;
import org.projectforge.rest.objects.CalendarEventObject;
import org.projectforge.web.rest.converter.DOConverter;
/**
* For conversion of TeamEvent to CalendarEventObject.
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class TeamEventDOConverter
{
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(TeamEventDOConverter.class);
public static CalendarEventObject getEventObject(final TeamEvent src)
{
if (src == null) {
return null;
}
final CalendarEventObject event = new CalendarEventObject();
event.setUid(src.getUid());
event.setStartDate(src.getStartDate());
event.setEndDate(src.getEndDate());
event.setLocation(src.getLocation());
event.setNote(src.getNote());
event.setSubject(src.getSubject());
if (src instanceof TeamEventDO) {
copyFields(event, (TeamEventDO) src);
} else if (src instanceof TeamRecurrenceEvent) {
final TeamEventDO master = ((TeamRecurrenceEvent) src).getMaster();
if (master != null) {
copyFields(event, master);
}
}
return event;
}
public static CalendarEventObject getEventObject(final TeamEventDO src)
{
if (src == null) {
return null;
}
final CalendarEventObject event = new CalendarEventObject();
event.setUid(src.getUid());
event.setStartDate(src.getStartDate());
event.setEndDate(src.getEndDate());
event.setLocation(src.getLocation());
event.setNote(src.getNote());
event.setSubject(src.getSubject());
copyFields(event, src);
return event;
}
private static void copyFields(final CalendarEventObject event, final TeamEventDO src)
{
event.setCalendarId(src.getCalendarId());
event.setRecurrenceRule(src.getRecurrenceRule());
event.setRecurrenceExDate(src.getRecurrenceExDate());
event.setRecurrenceUntil(src.getRecurrenceUntil());
DOConverter.copyFields(event, src);
if (src.getReminderActionType() != null && src.getReminderDuration() != null && src.getReminderDurationUnit() != null) {
event.setReminderType(src.getReminderActionType().toString());
event.setReminderDuration(src.getReminderDuration());
final ReminderDurationUnit unit = src.getReminderDurationUnit();
event.setReminderUnit(unit.toString());
final DateHolder date = new DateHolder(src.getStartDate());
if (unit == ReminderDurationUnit.MINUTES) {
date.add(Calendar.MINUTE, -src.getReminderDuration());
event.setReminder(date.getDate());
} else if (unit == ReminderDurationUnit.HOURS) {
date.add(Calendar.HOUR, -src.getReminderDuration());
event.setReminder(date.getDate());
} else if (unit == ReminderDurationUnit.DAYS) {
date.add(Calendar.DAY_OF_YEAR, -src.getReminderDuration());
event.setReminder(date.getDate());
} else {
log.warn("ReminderDurationUnit '" + src.getReminderDurationUnit() + "' not yet implemented.");
}
}
}
}