Package org.projectforge.web.calendar

Source Code of org.projectforge.web.calendar.HolidayEventsProvider

/////////////////////////////////////////////////////////////////////////////
//
// 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.web.calendar;

import net.ftlines.wicket.fullcalendar.Event;

import org.joda.time.DateMidnight;
import org.joda.time.DateTime;
import org.projectforge.calendar.DayHolder;
import org.projectforge.user.PFUserContext;

/**
* Creates holiday events for FullCalendar.
* @author Kai Reinhard (k.reinhard@micromata.de)
*
*/
public class HolidayEventsProvider extends MyFullCalendarEventsProvider
{
  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(HolidayEventsProvider.class);

  private static final long serialVersionUID = 6514836533889643685L;

  /**
   */
  public HolidayEventsProvider()
  {
    super();
  }

  /**
   * @see org.projectforge.web.calendar.MyFullCalendarEventsProvider#buildEvents(org.joda.time.DateTime, org.joda.time.DateTime)
   */
  @Override
  protected void buildEvents(final DateTime start, final DateTime end)
  {
    DateMidnight day = new DateMidnight(start);
    int idCounter = 0;
    int paranoiaCounter = 0;
    do {
      if (++paranoiaCounter > 4000) {
        log.error("Paranoia counter exceeded! Dear developer, please have a look at the implementation of buildEvents.");
        break;
      }
      final DayHolder dh = new DayHolder(day.toDate());
      String backgroundColor, color, textColor;
      if (dh.isHoliday() == true) {
        if (dh.isWorkingDay() == true) {
          backgroundColor = "#FFF0F0";
          color = "#EEEEEE";
          textColor = "#222222";
        } else {
          backgroundColor = "#f9dfde";
          color = "#EEEEEE";
          textColor = "#FF2222";
        }
      } else {
        day = day.plusDays(1);
        continue;
      }

      final Event event = new Event().setAllDay(true);
      final String id = "h-" + (++idCounter);
      event.setId(id);
      event.setStart(day.toDateTime());
      String title;
      final String holidayInfo = dh.getHolidayInfo();
      if (holidayInfo != null && holidayInfo.startsWith("calendar.holiday.") == true) {
        title = PFUserContext.getLocalizedString(holidayInfo);
      } else {
        title = holidayInfo;
      }
      event.setTitle(title);
      event.setBackgroundColor(backgroundColor);
      event.setColor(color);
      event.setTextColor(textColor);
      events.put(id, event);
      day = day.plusDays(1);
    } while (day.isAfter(end) == false);
  }
}
TOP

Related Classes of org.projectforge.web.calendar.HolidayEventsProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.