/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sections/trunk/sections-app/src/java/org/sakaiproject/tool/section/jsf/backingbean/LocalMeetingModel.java $ * $Id: LocalMeetingModel.java 105080 2012-02-24 23:10:31Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2005, 2006, 2007, 2008 The Sakai Foundation * * Licensed under the Educational Community 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.opensource.org/licenses/ECL-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 org.sakaiproject.tool.section.jsf.backingbean; import java.io.Serializable; import java.sql.Time; import java.util.Calendar; import java.util.GregorianCalendar; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.section.api.coursemanagement.Meeting; import org.sakaiproject.tool.section.jsf.JsfUtil; public class LocalMeetingModel implements Meeting, Serializable { private static final Log log = LogFactory.getLog(LocalMeetingModel.class); private static final long serialVersionUID = 1L; public LocalMeetingModel() { startTimeAm = true; endTimeAm = true; startTimeString = JsfUtil.getLocalizedMessage("section_start_time_default"); endTimeString = JsfUtil.getLocalizedMessage("section_end_time_default"); } public LocalMeetingModel(Meeting meeting) { this.location = meeting.getLocation(); this.monday = meeting.isMonday(); this.tuesday = meeting.isTuesday(); this.wednesday = meeting.isWednesday(); this.thursday = meeting.isThursday(); this.friday = meeting.isFriday(); this.saturday = meeting.isSaturday(); this.sunday = meeting.isSunday(); this.startTimeString = JsfUtil.convertTimeToString(meeting.getStartTime()); if(startTimeString == null) { startTimeString = JsfUtil.getLocalizedMessage("section_start_time_default"); } this.endTimeString = JsfUtil.convertTimeToString(meeting.getEndTime()); if(endTimeString == null) { endTimeString = JsfUtil.getLocalizedMessage("section_end_time_default"); } Calendar cal = new GregorianCalendar(); if(meeting.getStartTime() == null) { this.startTimeAm = true; } else { cal.setTime(meeting.getStartTime()); if(log.isDebugEnabled()) log.debug("cal.get(Calendar.AM_PM) = " + cal.get(Calendar.AM_PM)); this.startTimeAm = (cal.get(Calendar.AM_PM) == Calendar.AM); } if(meeting.getEndTime() == null) { this.endTimeAm = true; } else { cal.setTime(meeting.getEndTime()); if(log.isDebugEnabled()) log.debug("cal.get(Calendar.AM_PM) = " + cal.get(Calendar.AM_PM)); this.endTimeAm = (cal.get(Calendar.AM_PM) == Calendar.AM); } } private String location, startTimeString, endTimeString; private boolean monday, tuesday, wednesday, thursday, friday, saturday, sunday; private boolean startTimeAm, endTimeAm; public boolean isEmpty() { return !monday && !tuesday && !wednesday && !thursday && !friday && !saturday && !sunday && (StringUtils.trimToNull(startTimeString) == null || isStartTimeDefault()) && (StringUtils.trimToNull(endTimeString) == null || isEndTimeDefault()) && StringUtils.trimToNull(location) == null; } public Time getStartTime() { if(isStartTimeDefault()) { return null; } return JsfUtil.convertStringToTime(startTimeString, startTimeAm); } public Time getEndTime() { if(isEndTimeDefault()) { return null; } return JsfUtil.convertStringToTime(endTimeString, endTimeAm); } public String getEndTimeString() { return endTimeString; } public void setEndTimeString(String endTimeString) { this.endTimeString = endTimeString; } // Must use a string due to http://issues.apache.org/jira/browse/MYFACES-570 public String getEndTimeAmString() { return Boolean.toString(endTimeAm); } // Must use a string due to http://issues.apache.org/jira/browse/MYFACES-570 public void setEndTimeAmString(String endTimeAm) { this.endTimeAm = Boolean.parseBoolean(endTimeAm); } public boolean isFriday() { return friday; } public void setFriday(boolean friday) { this.friday = friday; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public boolean isMonday() { return monday; } public void setMonday(boolean monday) { this.monday = monday; } public boolean isSaturday() { return saturday; } public void setSaturday(boolean saturday) { this.saturday = saturday; } public String getStartTimeString() { return startTimeString; } public void setStartTimeString(String startTimeString) { this.startTimeString = startTimeString; } // Must use a string due to http://issues.apache.org/jira/browse/MYFACES-570 public String getStartTimeAmString() { return Boolean.toString(startTimeAm); } // Must use a string due to http://issues.apache.org/jira/browse/MYFACES-570 public void setStartTimeAmString(String startTimeAm) { this.startTimeAm = Boolean.parseBoolean(startTimeAm); if(log.isDebugEnabled()) log.debug("String " + startTimeAm + " caused startTimeAm to be set to " + this.startTimeAm); } public boolean isStartTimeAm() { return startTimeAm; } public boolean isEndTimeAm() { return endTimeAm; } public boolean isSunday() { return sunday; } public void setSunday(boolean sunday) { this.sunday = sunday; } public boolean isThursday() { return thursday; } public void setThursday(boolean thursday) { this.thursday = thursday; } public boolean isTuesday() { return tuesday; } public void setTuesday(boolean tuesday) { this.tuesday = tuesday; } public boolean isWednesday() { return wednesday; } public void setWednesday(boolean wednesday) { this.wednesday = wednesday; } public String toString() { return new ToStringBuilder(this).append(location).append(startTimeString).append(startTimeAm) .append(endTimeString).append(endTimeAm).append(monday).append(tuesday).append(wednesday) .append(thursday).append(friday).append(saturday).append(sunday).toString(); } public boolean isStartTimeDefault() { return JsfUtil.getLocalizedMessage("section_start_time_default").equals(startTimeString); } public boolean isEndTimeDefault() { return JsfUtil.getLocalizedMessage("section_end_time_default").equals(endTimeString); } public boolean isLocationDefault() { return JsfUtil.getLocalizedMessage("section_location_default").equals(location); } }