svnno****@sourc*****
svnno****@sourc*****
2008年 11月 21日 (金) 17:04:12 JST
Revision: 1391 http://svn.sourceforge.jp/view?root=pal&view=rev&rev=1391 Author: shinsuke Date: 2008-11-21 17:04:12 +0900 (Fri, 21 Nov 2008) Log Message: ----------- added group view on week. Modified Paths: -------------- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/CalendarAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/OnetimeScheduleAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/RepeatScheduleAction.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/schedule/CalendarForm.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java scheduler/trunk/src/main/java/jp/sf/pal/scheduler/util/SchedulerUtil.java scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/facilitylist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/userlist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/facilitylist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/userlist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalday.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalmonth.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalweek.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/confirm.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/facilitylist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/userlist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/confirm.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/facilitylist.jsp scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/userlist.jsp -------------- next part -------------- Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/CalendarAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/CalendarAction.java 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/CalendarAction.java 2008-11-21 08:04:12 UTC (rev 1391) @@ -1,13 +1,10 @@ package jp.sf.pal.scheduler.action.user.schedule; import java.io.Serializable; -import java.sql.Time; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; -import java.util.Date; import java.util.HashMap; -import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -16,13 +13,17 @@ import jp.sf.pal.scheduler.SchedulerConstants; import jp.sf.pal.scheduler.common.util.CalendarUtil; import jp.sf.pal.scheduler.common.util.ConfigUtil; -import jp.sf.pal.scheduler.common.util.DateUtil; -import jp.sf.pal.scheduler.db.exentity.EventSchedule; import jp.sf.pal.scheduler.db.exentity.EventScheduleMapping; +import jp.sf.pal.scheduler.db.exentity.GroupMapping; +import jp.sf.pal.scheduler.db.exentity.RoleMapping; +import jp.sf.pal.scheduler.db.exentity.UserInfo; import jp.sf.pal.scheduler.form.user.schedule.CalendarForm; import jp.sf.pal.scheduler.service.OnetimeScheduleService; import jp.sf.pal.scheduler.service.RepeatScheduleService; +import jp.sf.pal.scheduler.service.UserInfoService; +import jp.sf.pal.scheduler.util.SchedulerUtil; +import org.apache.commons.lang.StringUtils; import org.seasar.struts.annotation.ActionForm; import org.seasar.struts.annotation.Execute; @@ -42,6 +43,8 @@ public List<Map<String, Object>> allDayEventInDayItems; + public List<Map<String, Object>> groupMemberInWeekItems; + public int maxCols; @ActionForm @@ -51,135 +54,14 @@ private RepeatScheduleService repeatScheduleService; + private UserInfoService userInfoService; + private transient HttpServletRequest request; - private void createSideCalendar() { - calendarDayItems = new LinkedList<Map<String, Object>>(); - Calendar targetCalendar = calendarForm.getTargetCalendar(); - int targetYear = CalendarUtil.getYear(targetCalendar); - int targetMonth = CalendarUtil.getMonth(targetCalendar) + 1; - int targetDate = CalendarUtil.getDate(targetCalendar); - - // create a previous month - Calendar cal = CalendarUtil.getFirstCalendarInMonth(targetCalendar); - int count = CalendarUtil.getDay(cal) - 1; - while (count > 0) { - cal = CalendarUtil.getPrev(cal); - calendarDayItems.add(0, createCalendarDayItem(cal, false)); - count--; - } - - // create this month - cal = CalendarUtil.getFirstCalendarInMonth(targetCalendar); - int lastDayOfMonth = CalendarUtil.getDate(CalendarUtil - .getLastCalendarInMonth(targetCalendar)); - for (int i = 0; i < lastDayOfMonth; i++) { - calendarDayItems.add(createCalendarDayItem(cal, targetYear, - targetMonth, targetDate, true)); - cal = CalendarUtil.getNext(cal); - } - - // create a next month - count = CalendarUtil.getDay(cal); - while (count != 1) { - calendarDayItems.add(createCalendarDayItem(cal, false)); - cal = CalendarUtil.getNext(cal); - count = CalendarUtil.getDay(cal); - } - - } - - private boolean compare(int year1, int month1, int date1, int year2, - int month2, int date2) { - if (year1 == year2 && month1 == month2 && date1 == date2) { - return true; - } - return false; - } - - private Map<String, Object> createEmptyEvent() { - Map<String, Object> emptyEvent = new HashMap<String, Object>(); - emptyEvent.put("startEvent", "true"); - emptyEvent.put("cols", "1"); - emptyEvent.put("rows", "1"); - emptyEvent.put("time", "none"); - return emptyEvent; - } - - private void putEventSchedule(EventSchedule eventSchedule, Time startTime, - Time endTime) { - if (startTime != null && endTime != null) { - int sIdx = DateUtil.getHours(startTime); - int eIdx = DateUtil.getHours(endTime) - 1; - if (DateUtil.getMinutes(endTime) != 0) { - eIdx++; - } - if (eIdx > 23) { - eIdx = 23; - } - for (int i = sIdx; i <= eIdx; i++) { - Map<String, Object> eventMap = createEvent(eventSchedule, true, - true); - if (i == sIdx) { - eventMap.put("startEvent", "true"); - int size = eIdx - sIdx + 1; - eventMap.put("rows", String.valueOf(size)); - eventMap.put("lastEvent", "true"); - } else { - eventMap.put("startEvent", "false"); - } - eventMap.put("cols", "1"); - eventInDayItems.get(i).add(eventMap); - } - } else if (startTime != null && endTime == null) { - int sIdx = DateUtil.getHours(startTime); - for (int i = sIdx; i <= 23; i++) { - Map<String, Object> eventMap = createEvent(eventSchedule, true, - false); - if (i == sIdx) { - eventMap.put("startEvent", "true"); - int size = 23 - sIdx + 1; - eventMap.put("rows", String.valueOf(size)); - eventMap.put("lastEvent", "true"); - } else { - eventMap.put("startEvent", "false"); - } - eventMap.put("cols", "1"); - eventInDayItems.get(i).add(eventMap); - } - } else if (startTime == null && endTime != null) { - int eIdx = DateUtil.getHours(endTime) - 1; - if (DateUtil.getMinutes(endTime) != 0) { - eIdx++; - } - if (eIdx > 23) { - eIdx = 23; - } - for (int i = 0; i <= eIdx; i++) { - Map<String, Object> eventMap = createEvent(eventSchedule, - false, true); - if (i == 0) { - eventMap.put("startEvent", "true"); - int size = eIdx + 1; - eventMap.put("rows", String.valueOf(size)); - eventMap.put("lastEvent", "true"); - } else { - eventMap.put("startEvent", "false"); - } - eventMap.put("cols", "1"); - eventInDayItems.get(i).add(eventMap); - } - } else { - // all day - allDayEventInDayItems.add(createEvent(eventSchedule, false, false)); - } - - } - private String displayPersonalDay() { - createSideCalendar(); - Calendar cal = calendarForm.getTargetCalendar(); + calendarDayItems = SchedulerUtil.createSideCalendar(cal); + Calendar nextCal = cal; int tYear = CalendarUtil.getYear(cal); int tMonth = CalendarUtil.getMonth(cal) + 1; @@ -195,36 +77,9 @@ List<EventScheduleMapping> ssmList = onetimeScheduleService .getPersonalScheduleMappingList(userId, cal.getTime(), nextCal .getTime()); - for (EventScheduleMapping ssm : ssmList) { - EventSchedule eventSchedule = ssm.getEventSchedule(); - Date startDate = eventSchedule.getStartDate(); - int sYear = DateUtil.getYear(startDate) + 1900; - int sMonth = DateUtil.getMonth(startDate) + 1; - int sDate = DateUtil.getDate(startDate); + SchedulerUtil.createPersonalDayForOnetime(tYear, tMonth, tDate, + ssmList, eventInDayItems, allDayEventInDayItems); - Date endDate = eventSchedule.getEndDate(); - int eYear = DateUtil.getYear(endDate) + 1900; - int eMonth = DateUtil.getMonth(endDate) + 1; - int eDate = DateUtil.getDate(endDate); - - Time startTime = eventSchedule.getStartTime(); - Time endTime = eventSchedule.getEndTime(); - if (compare(tYear, tMonth, tDate, sYear, sMonth, sDate) - && compare(tYear, tMonth, tDate, eYear, eMonth, eDate)) { - putEventSchedule(eventSchedule, startTime, endTime); - } else if (compare(tYear, tMonth, tDate, sYear, sMonth, sDate) - && !compare(tYear, tMonth, tDate, eYear, eMonth, eDate)) { - putEventSchedule(eventSchedule, startTime, null); - } else if (!compare(tYear, tMonth, tDate, sYear, sMonth, sDate) - && compare(tYear, tMonth, tDate, eYear, eMonth, eDate)) { - putEventSchedule(eventSchedule, null, endTime); - } else { - // all day - allDayEventInDayItems.add(createEvent(eventSchedule, false, - false)); - } - } - maxCols = 0; for (List<Map<String, Object>> events : eventInDayItems) { if (!events.isEmpty() && events.size() > maxCols) { @@ -236,7 +91,7 @@ if (!events.isEmpty()) { int idx = events.size() - 1; for (int i = idx; i < maxCols - 1; i++) { - events.add(createEmptyEvent()); + events.add(SchedulerUtil.createEmptyEvent()); } } } @@ -244,46 +99,9 @@ List<EventScheduleMapping> rsmList = repeatScheduleService .getPersonalScheduleMappingList(userId, cal.getTime(), nextCal .getTime()); - for (EventScheduleMapping rsm : rsmList) { - EventSchedule eventSchedule = rsm.getEventSchedule(); - Date startDate = eventSchedule.getStartDate(); - // int sYear = DateUtil.getYear(startDate) + 1900; - int sMonth = DateUtil.getMonth(startDate) + 1; - int sDate = DateUtil.getDate(startDate); + SchedulerUtil.createPersonalDayForRepeat(tYear, tMonth, tDate, tDay, + rsmList, eventInDayItems, allDayEventInDayItems); - Time startTime = eventSchedule.getStartTime(); - Time endTime = eventSchedule.getEndTime(); - String type = eventSchedule.getType(); - if ("MTWTFSS".equals(type)) { - putEventSchedule(eventSchedule, startTime, endTime); - } else if ("MTWTF".equals(type)) { - if (tDay > 1 && tDay < 7) { - putEventSchedule(eventSchedule, startTime, endTime); - } - } else if ("MWF".equals(type)) { - if (tDay == 2 || tDay == 4 || tDay == 6) { - putEventSchedule(eventSchedule, startTime, endTime); - } - } else if ("TT".equals(type)) { - if (tDay == 3 || tDay == 5) { - putEventSchedule(eventSchedule, startTime, endTime); - } - } else if ("WEEKLY".equals(type)) { - if (tDay == DateUtil.getDay(startDate) + 1) { - putEventSchedule(eventSchedule, startTime, endTime); - } - } else if ("MONTHLY".equals(type)) { - if (tDate == sDate) { - putEventSchedule(eventSchedule, startTime, endTime); - } - } else if ("YEARLY".equals(type)) { - if (tDate == sDate && tMonth == sMonth) { - putEventSchedule(eventSchedule, startTime, endTime); - } - } - - } - for (List<Map<String, Object>> events : eventInDayItems) { if (!events.isEmpty() && events.size() > maxCols) { maxCols = events.size(); @@ -294,7 +112,7 @@ if (!events.isEmpty()) { int idx = events.size() - 1; for (int i = idx; i < maxCols - 1; i++) { - events.add(createEmptyEvent()); + events.add(SchedulerUtil.createEmptyEvent()); } } else { Map<String, Object> emptyEvent = new HashMap<String, Object>(); @@ -307,13 +125,14 @@ } private String displayPersonalWeek() { - createSideCalendar(); + calendarDayItems = SchedulerUtil.createSideCalendar(calendarForm + .getTargetCalendar()); List<Calendar> calendarList = new ArrayList<Calendar>(7); eventInWeekItems = new ArrayList<List<List<Map<String, Object>>>>(7); allDayEventInWeekItems = new ArrayList<List<Map<String, Object>>>(7); Calendar cal = calendarForm.getTargetCalendar(); - calendarList.add(cal); + // calendarList.add(cal); weekDayItems = new ArrayList<Map<String, Object>>(); Map<String, Integer> indexMap = new HashMap<String, Integer>(7); SimpleDateFormat sdf = new SimpleDateFormat("MM/dd(E)");// TODO i18n @@ -349,239 +168,21 @@ List<EventScheduleMapping> ssmList = onetimeScheduleService .getPersonalScheduleMappingList(userId, calendarList.get(0) .getTime(), calendarList.get(6).getTime()); - for (EventScheduleMapping ssm : ssmList) { - EventSchedule eventSchedule = ssm.getEventSchedule(); - Date startDate = eventSchedule.getStartDate(); - int sYear = DateUtil.getYear(startDate) + 1900; - int sMonth = DateUtil.getMonth(startDate) + 1; - int sDate = DateUtil.getDate(startDate); - Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); - if (sIndex == null) { - sIndex = Integer.valueOf(-1); - } + SchedulerUtil.createPersonalWeekForOnetime(indexMap, ssmList, + eventInWeekItems, allDayEventInWeekItems); - Date endDate = eventSchedule.getEndDate(); - int eYear = DateUtil.getYear(endDate) + 1900; - int eMonth = DateUtil.getMonth(endDate) + 1; - int eDate = DateUtil.getDate(endDate); - Integer eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); - if (eIndex == null) { - eIndex = Integer.valueOf(7); - } - - int startIdx = sIndex.intValue(); - if (startIdx < 0) { - startIdx = 0; - } - int endIdx = eIndex.intValue(); - if (endIdx > 6) { - endIdx = 6; - } - - Time time = eventSchedule.getStartTime(); - for (int i = startIdx; i < endIdx + 1; i++) { - if (i == sIndex.intValue() && i == eIndex.intValue()) { - if (time == null) { - // all day - allDayEventInWeekItems.get(i).add( - createEvent(eventSchedule, false, false)); - } else { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } - } else if (i == sIndex.intValue() && i != eIndex.intValue()) { - if (time == null) { - allDayEventInWeekItems.get(i).add( - createEvent(eventSchedule, false, false)); - } else { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, false)); - } - } else if (i != sIndex.intValue() && i == eIndex.intValue()) { - if (eventSchedule.getEndTime() == null) { - allDayEventInWeekItems.get(i).add( - createEvent(eventSchedule, false, false)); - } else { - int timeIndex = DateUtil.getHours(eventSchedule - .getEndTime()) - 1; - if (timeIndex < 0) { - timeIndex = 0; - } - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, false, true)); - } - } else if (i != sIndex.intValue() && i != eIndex.intValue()) { - // all day - allDayEventInWeekItems.get(i).add( - createEvent(eventSchedule, false, false)); - } - } - } - List<EventScheduleMapping> rsmList = repeatScheduleService .getPersonalScheduleMappingList(userId, calendarList.get(0) .getTime(), calendarList.get(6).getTime()); - for (EventScheduleMapping rsm : rsmList) { - EventSchedule eventSchedule = rsm.getEventSchedule(); - Date startDate = eventSchedule.getStartDate(); - int sYear = DateUtil.getYear(startDate) + 1900; - int sMonth = DateUtil.getMonth(startDate) + 1; - int sDate = DateUtil.getDate(startDate); - Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); - if (sIndex == null) { - sIndex = Integer.valueOf(0); - } + SchedulerUtil.createPersonalWeekForRepeat(indexMap, rsmList, + eventInWeekItems, allDayEventInWeekItems, weekDayItems); - Date endDate = eventSchedule.getEndDate(); - Integer eIndex; - if (endDate != null) { - int eYear = DateUtil.getYear(endDate) + 1900; - int eMonth = DateUtil.getMonth(endDate) + 1; - int eDate = DateUtil.getDate(endDate); - eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); - if (eIndex == null) { - eIndex = Integer.valueOf(6); - } - } else { - eIndex = Integer.valueOf(6); - } - - Time time = eventSchedule.getStartTime(); - for (int i = sIndex.intValue(); i < eIndex.intValue() + 1; i++) { - String type = eventSchedule.getType(); - if ("MTWTFSS".equals(type)) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - - // all day - allDayEventInWeekItems.get(i).add( - createEvent(eventSchedule, false, false)); - } - } else if ("MTWTF".equals(type)) { - String d = (String) weekDayItems.get(i).get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek > 1 && dayOfWeek < 7) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - allDayEventInWeekItems.get(i) - .add( - createEvent(eventSchedule, - false, false)); - } - } - } - } else if ("MWF".equals(type)) { - String d = (String) weekDayItems.get(i).get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek == 2 || dayOfWeek == 4 || dayOfWeek == 6) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - allDayEventInWeekItems.get(i) - .add( - createEvent(eventSchedule, - false, false)); - } - } - } - } else if ("TT".equals(type)) { - String d = (String) weekDayItems.get(i).get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek == 3 || dayOfWeek == 5) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - allDayEventInWeekItems.get(i) - .add( - createEvent(eventSchedule, - false, false)); - } - } - } - } else if ("WEEKLY".equals(type)) { - String d = (String) weekDayItems.get(i).get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek == DateUtil.getDay(startDate) + 1) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - allDayEventInWeekItems.get(i) - .add( - createEvent(eventSchedule, - false, false)); - } - } - } - } else if ("MONTHLY".equals(type)) { - String d = (String) weekDayItems.get(i).get("date"); - if (d != null) { - int date = Integer.parseInt(d); - if (date == sDate) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - allDayEventInWeekItems.get(i) - .add( - createEvent(eventSchedule, - false, false)); - } - } - } - } else if ("YEARLY".equals(type)) { - String d = (String) weekDayItems.get(i).get("date"); - String m = (String) weekDayItems.get(i).get("month"); - if (d != null && m != null) { - int date = Integer.parseInt(d); - int month = Integer.parseInt(m); - if (date == sDate && month == sMonth) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - eventInWeekItems.get(i).get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - allDayEventInWeekItems.get(i) - .add( - createEvent(eventSchedule, - false, false)); - } - } - } - } - } - - } - return "personalweek.jsp"; } private String displayPersonalMonth() { - createSideCalendar(); + Calendar cal = calendarForm.getTargetCalendar(); + calendarDayItems = SchedulerUtil.createSideCalendar(cal); Map<String, Integer> indexMap = new HashMap<String, Integer>(50); int count = 0; @@ -600,7 +201,6 @@ count++; } - Calendar cal = calendarForm.getTargetCalendar(); Calendar startCal = CalendarUtil.getFirstCalendarInMonth(cal); int firstYear = CalendarUtil.getYear(startCal); int firstMonth = CalendarUtil.getMonth(startCal) + 1; @@ -618,270 +218,137 @@ List<EventScheduleMapping> ssmList = onetimeScheduleService .getPersonalScheduleMappingList(userId, startCal.getTime(), endCal.getTime()); - for (EventScheduleMapping ssm : ssmList) { - EventSchedule eventSchedule = ssm.getEventSchedule(); - Date startDate = eventSchedule.getStartDate(); - int sYear = DateUtil.getYear(startDate) + 1900; - int sMonth = DateUtil.getMonth(startDate) + 1; - int sDate = DateUtil.getDate(startDate); - Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); - if (sIndex == null) { - sIndex = Integer.valueOf(firstDateIndex - 1); - } + SchedulerUtil.createPersonalMonthForOnetime(firstDateIndex, + endDateIndex, indexMap, ssmList, calendarDayItems); - Date endDate = eventSchedule.getEndDate(); - int eYear = DateUtil.getYear(endDate) + 1900; - int eMonth = DateUtil.getMonth(endDate) + 1; - int eDate = DateUtil.getDate(endDate); - Integer eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); - if (eIndex == null) { - eIndex = Integer.valueOf(endDateIndex); - } + List<EventScheduleMapping> rsmList = repeatScheduleService + .getPersonalScheduleMappingList(userId, startCal.getTime(), + endCal.getTime()); + SchedulerUtil.createPersonalMonthForRepeat(firstDateIndex, + endDateIndex, indexMap, rsmList, calendarDayItems); - int startIdx = sIndex.intValue(); - if (startIdx < firstDateIndex) { - startIdx = firstDateIndex; + return "personalmonth.jsp"; + } + + private String displayGroupWeek() { + Calendar cal = calendarForm.getTargetCalendar(); + calendarDayItems = SchedulerUtil.createSideCalendar(cal); + + String userId = request.getRemoteUser(); + UserInfo userInfo = userInfoService.getUserInfo(userId); + if (StringUtils.isEmpty(calendarForm.userGroup)) { + if (userInfo.getRoleId() != null) { + calendarForm.userGroup = SchedulerConstants.ROLE_PREFIX + + userInfo.getRoleId(); + } else if (userInfo.getGroupId() != null) { + calendarForm.userGroup = SchedulerConstants.GROUP_PREFIX + + userInfo.getGroupId(); } - int endIdx = eIndex.intValue(); - if (endIdx > endDateIndex) { - endIdx = endDateIndex; - } + } - Time time = eventSchedule.getStartTime(); - for (int i = startIdx; i < endIdx + 1; i++) { - if (i == sIndex.intValue() && i == eIndex.intValue()) { - if (time == null) { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent(eventSchedule, - false, false)); - } else { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); + Calendar startCal = cal; + weekDayItems = new ArrayList<Map<String, Object>>(); + Map<String, Integer> indexMap = new HashMap<String, Integer>(7); + SimpleDateFormat sdf = new SimpleDateFormat("MM/dd(E)");// TODO i18n + for (int i = 0; i < 7; i++) { + int year = CalendarUtil.getYear(cal); + int month = CalendarUtil.getMonth(cal) + 1; + int date = CalendarUtil.getDate(cal); + + Map<String, Object> map = new HashMap<String, Object>(); + map.put("displayedDate", sdf.format(cal.getTime())); + map.put("dayOfWeek", String.valueOf(CalendarUtil.getDay(cal))); + map.put("date", String.valueOf(date)); + map.put("month", String.valueOf(month)); + map.put("year", String.valueOf(year)); + weekDayItems.add(map); + cal = CalendarUtil.getNext(cal); + + indexMap.put(year + "-" + month + "-" + date, i); + } + Calendar endCal = cal; + + List<UserInfo> groupMemberList = new ArrayList<UserInfo>(); + groupMemberList.add(userInfo); + if (!StringUtils.isEmpty(calendarForm.userGroup)) { + if (calendarForm.userGroup + .startsWith(SchedulerConstants.ROLE_PREFIX)) { + String roleId = calendarForm.userGroup + .substring(SchedulerConstants.ROLE_PREFIX.length()); + List<RoleMapping> roleMappingList = userInfoService + .getUserInfoListByRole(roleId); + for (RoleMapping roleMapping : roleMappingList) { + if (!userId.equals(roleMapping.getUserId())) { + groupMemberList.add(roleMapping.getUserInfo()); } - } else if (i == sIndex.intValue() && i != eIndex.intValue()) { - if (time == null) { - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent(eventSchedule, - false, false)); - } else { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, false)); + } + } else if (calendarForm.userGroup + .startsWith(SchedulerConstants.GROUP_PREFIX)) { + String groupId = calendarForm.userGroup + .substring(SchedulerConstants.GROUP_PREFIX.length()); + List<GroupMapping> groupMappingList = userInfoService + .getUserInfoListByGroup(groupId); + for (GroupMapping groupMapping : groupMappingList) { + if (!userId.equals(groupMapping.getUserId())) { + groupMemberList.add(groupMapping.getUserInfo()); } - } else if (i != sIndex.intValue() && i == eIndex.intValue()) { - if (eventSchedule.getEndTime() == null) { - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent(eventSchedule, - false, false)); - } else { - int timeIndex = DateUtil.getHours(eventSchedule - .getEndTime()) - 1; - if (timeIndex < 0) { - timeIndex = 0; - } - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, false, true)); - } - } else if (i != sIndex.intValue() && i != eIndex.intValue()) { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent(eventSchedule, - false, false)); } } } - List<EventScheduleMapping> rsmList = repeatScheduleService - .getPersonalScheduleMappingList(userId, startCal.getTime(), - endCal.getTime()); - for (EventScheduleMapping rsm : rsmList) { - EventSchedule eventSchedule = rsm.getEventSchedule(); - Date startDate = eventSchedule.getStartDate(); - int sYear = DateUtil.getYear(startDate) + 1900; - int sMonth = DateUtil.getMonth(startDate) + 1; - int sDate = DateUtil.getDate(startDate); - Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); - if (sIndex == null) { - sIndex = Integer.valueOf(firstDateIndex); - } + groupMemberInWeekItems = new ArrayList<Map<String, Object>>(); + for (UserInfo member : groupMemberList) { + groupMemberInWeekItems.add(createWeekScheduleMap(member, indexMap, + startCal, endCal)); + } - Date endDate = eventSchedule.getEndDate(); - Integer eIndex; - if (endDate != null) { - int eYear = DateUtil.getYear(endDate) + 1900; - int eMonth = DateUtil.getMonth(endDate) + 1; - int eDate = DateUtil.getDate(endDate); - eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); - if (eIndex == null) { - eIndex = Integer.valueOf(endDateIndex); - } - } else { - eIndex = Integer.valueOf(endDateIndex); + return "groupweek.jsp"; + } + + private Map<String, Object> createWeekScheduleMap(UserInfo userInfo, + Map<String, Integer> indexMap, Calendar startCal, Calendar endCal) { + Map<String, Object> memberMap = new HashMap<String, Object>(); + + memberMap.put("userInfo", userInfo); + + List<List<List<Map<String, Object>>>> eventInWeekItems = new ArrayList<List<List<Map<String, Object>>>>( + 7); + List<List<Map<String, Object>>> allDayEventInWeekItems = new ArrayList<List<Map<String, Object>>>( + 7); + for (int i = 0; i < 7; i++) { + List<List<Map<String, Object>>> eventInDayItems = new ArrayList<List<Map<String, Object>>>( + 24); + for (int j = 0; j < 24; j++) { + eventInDayItems.add(new ArrayList<Map<String, Object>>()); } + eventInWeekItems.add(eventInDayItems); - Time time = eventSchedule.getStartTime(); - for (int i = sIndex.intValue(); i < eIndex.intValue() + 1; i++) { - String type = eventSchedule.getType(); - if ("MTWTFSS".equals(type)) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent(eventSchedule, - false, false)); - } - } else if ("MTWTF".equals(type)) { - String d = (String) calendarDayItems.get(i) - .get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek > 1 && dayOfWeek < 7) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent( - eventSchedule, false, false)); - } - } - } - } else if ("MWF".equals(type)) { - String d = (String) calendarDayItems.get(i) - .get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek == 2 || dayOfWeek == 4 || dayOfWeek == 6) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent( - eventSchedule, false, false)); - } - } - } - } else if ("TT".equals(type)) { - String d = (String) calendarDayItems.get(i) - .get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek == 3 || dayOfWeek == 5) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent( - eventSchedule, false, false)); - } - } - } - } else if ("WEEKLY".equals(type)) { - String d = (String) calendarDayItems.get(i) - .get("dayOfWeek"); - if (d != null) { - int dayOfWeek = Integer.parseInt(d); - if (dayOfWeek == DateUtil.getDay(startDate) + 1) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent( - eventSchedule, false, false)); - } - } - } - } else if ("MONTHLY".equals(type)) { - String d = (String) calendarDayItems.get(i).get( - "dayOfMonth"); - if (d != null) { - int date = Integer.parseInt(d); - if (date == sDate) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent( - eventSchedule, false, false)); - } - } - } - } else if ("YEARLY".equals(type)) { - String d = (String) calendarDayItems.get(i).get( - "dayOfMonth"); - String m = (String) calendarDayItems.get(i).get("month"); - if (d != null && m != null) { - int date = Integer.parseInt(d); - int month = Integer.parseInt(m); - if (date == sDate && month == sMonth) { - if (time != null) { - int timeIndex = DateUtil.getHours(time); - List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems - .get(i).get("eventItems"); - eventInMonthItems.get(timeIndex).add( - createEvent(eventSchedule, true, true)); - } else { - // all day - List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems - .get(i).get("allDayEventItems"); - allDayEventInMonthItems.add(createEvent( - eventSchedule, false, false)); - } - } - } + allDayEventInWeekItems.add(new ArrayList<Map<String, Object>>()); + } + + List<EventScheduleMapping> ssmList = onetimeScheduleService + .getPersonalScheduleMappingList(userInfo.getUserId(), startCal + .getTime(), endCal.getTime()); + SchedulerUtil.createPersonalWeekForOnetime(indexMap, ssmList, + eventInWeekItems, allDayEventInWeekItems); + + List<EventScheduleMapping> rsmList = repeatScheduleService + .getPersonalScheduleMappingList(userInfo.getUserId(), startCal + .getTime(), endCal.getTime()); + SchedulerUtil.createPersonalWeekForRepeat(indexMap, rsmList, + eventInWeekItems, allDayEventInWeekItems, weekDayItems); + + for (int i = 0; i < 7; i++) { + for (int j = 0; j < 24; j++) { + if (eventInWeekItems.get(i).get(j) != null) { + allDayEventInWeekItems.get(i).addAll( + eventInWeekItems.get(i).get(j)); } } - } + memberMap.put("eventInWeekItems", allDayEventInWeekItems); - return "personalmonth.jsp"; + return memberMap; } @Execute(validator = false, input = "error.jsp") @@ -905,6 +372,11 @@ return displayPersonalMonth(); } + @Execute(validator = true, input = "error.jsp", urlPattern = "selectgroupweek/{year}/{month}/{date}") + public String selectgroupweek() { + return displayGroupWeek(); + } + @Execute(validator = true, input = "error.jsp", urlPattern = "movepersonalmonthprevmonth/{year}/{month}/{date}") public String movepersonalmonthprevmonth() { calendarForm.changeCalendarToPrevMonth(); @@ -959,65 +431,34 @@ return displayPersonalDay(); } - private Map<String, Object> createCalendarDayItem(Calendar cal, - boolean thisMonth) { - Map<String, Object> map = new HashMap<String, Object>(); - map.put("year", String.valueOf(CalendarUtil.getYear(cal))); - map.put("month", String.valueOf(CalendarUtil.getMonth(cal) + 1)); - map.put("dayOfMonth", String.valueOf(CalendarUtil.getDate(cal))); - map.put("dayOfWeek", String.valueOf(CalendarUtil.getDay(cal))); - map.put("thisMonth", String.valueOf(thisMonth)); - map.put("target", "false"); - return map; + @Execute(validator = true, input = "error.jsp", urlPattern = "movegroupweekprevmonth/{year}/{month}/{date}") + public String movegroupweekprevmonth() { + calendarForm.changeCalendarToPrevMonth(); + return displayGroupWeek(); } - private Map<String, Object> createCalendarDayItem(Calendar cal, int tYear, - int tMonth, int tDate, boolean thisMonth) { - int year = CalendarUtil.getYear(cal); - int month = CalendarUtil.getMonth(cal) + 1; - int dayOfMonth = CalendarUtil.getDate(cal); - int dayOfWeek = CalendarUtil.getDay(cal); - Map<String, Object> map = new HashMap<String, Object>(); - map.put("year", String.valueOf(year)); - map.put("month", String.valueOf(month)); - map.put("dayOfMonth", String.valueOf(dayOfMonth)); - map.put("dayOfWeek", String.valueOf(dayOfWeek)); - map.put("thisMonth", String.valueOf(thisMonth)); - if (year == tYear && month == tMonth && dayOfMonth == tDate) { - map.put("target", "true"); - } else { - map.put("target", "false"); - } - return map; + @Execute(validator = false, input = "error.jsp") + public String movegroupweekthismonth() { + calendarForm.changeCalendarToToday(); + return displayGroupWeek(); } - private Map<String, Object> createEvent(EventSchedule eventSchedule, - boolean start, boolean end) { - Map<String, Object> map = new HashMap<String, Object>(); - map.put("id", eventSchedule.getId().toString()); - map.put("title", eventSchedule.getTitle()); - if (start || end) { - StringBuilder buf = new StringBuilder(); - SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); // TODO i18n - if (start && eventSchedule.getStartTime() != null) { - buf.append(sdf.format(eventSchedule.getStartTime())); - } - buf.append("-"); - if (end && eventSchedule.getEndTime() != null) { - buf.append(sdf.format(eventSchedule.getEndTime())); - } - map.put("time", buf.toString()); - } - if (SchedulerConstants.ONETIME_SCHEDULE.equals(eventSchedule.getType())) { - map.put("repeat", "false"); - } else { - map.put("repeat", "true"); - map.put("type", ((EventSchedule) eventSchedule).getType()); - } + @Execute(validator = true, input = "error.jsp", urlPattern = "movegroupweeknextmonth/{year}/{month}/{date}") + public String movegroupweeknextmonth() { + calendarForm.changeCalendarToNextMonth(); + return displayGroupWeek(); + } - return map; + @Execute(validator = false, input = "error.jsp") + public String changeusergroup() { + return displayGroupWeek(); } + public List<Map<String, String>> getUserGroupItems() { + String userId = request.getRemoteUser(); + return userInfoService.getUserGroupList(userId); + } + public CalendarForm getCalendarForm() { return calendarForm; } @@ -1052,4 +493,12 @@ this.request = request; } + public UserInfoService getUserInfoService() { + return userInfoService; + } + + public void setUserInfoService(UserInfoService userInfoService) { + this.userInfoService = userInfoService; + } + } Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/OnetimeScheduleAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/OnetimeScheduleAction.java 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/OnetimeScheduleAction.java 2008-11-21 08:04:12 UTC (rev 1391) @@ -45,6 +45,8 @@ // for edit/confirm/delete + public boolean editable; + @ActionForm private OnetimeScheduleForm onetimeScheduleForm; @@ -110,14 +112,16 @@ // reset edit page loadListPageParameters(); - return "/user/calendar/" + onetimeScheduleForm.returnType + "/" - + onetimeScheduleForm.year + "/" + onetimeScheduleForm.month - + "/" + onetimeScheduleForm.date + "?redirect=true"; + return "/user/schedule/calendar/" + onetimeScheduleForm.returnType + + "/" + onetimeScheduleForm.year + "/" + + onetimeScheduleForm.month + "/" + onetimeScheduleForm.date + + "?redirect=true"; // return displayList(); } @Execute(validator = false, input = "error.jsp") public String editagain() { + editable = true; return "edit.jsp"; } @@ -140,6 +144,18 @@ return "confirm.jsp"; } + @Execute(validator = false, input = "error.jsp") + public String confirmpagefromdelete() { + onetimeScheduleForm.mode = CommonConstants.CONFIRM_MODE; + + // update edit page + loadDetailsPageParameters(); + + loadEventSchedule(); + + return "confirm.jsp"; + } + @Execute(validator = false, input = "error.jsp", urlPattern = "createpage/{returnType}/{year}/{month}/{date}") public String createpage() { // page navi @@ -187,6 +203,7 @@ @Execute(validator = true, input = "edit.jsp") public String confirm() { + editable = true; return "confirm.jsp"; } @@ -280,8 +297,8 @@ // reset edit page loadListPageParameters(); - return "/user/calendar/" + onetimeScheduleForm.returnType + "/" - + onetimeScheduleForm.year + "/" + return "/user/schedule/calendar/" + onetimeScheduleForm.returnType + + "/" + onetimeScheduleForm.year + "/" + onetimeScheduleForm.month + "/" + onetimeScheduleForm.date + "?redirect=true"; // return displayList(); @@ -327,6 +344,7 @@ @Execute(validator = false, input = "error.jsp") public String setusers() { + editable = true; return "edit.jsp"; } @@ -402,6 +420,7 @@ @Execute(validator = false, input = "error.jsp") public String setfacilities() { + editable = true; return "edit.jsp"; } @@ -462,7 +481,15 @@ onetimeScheduleDxo.convertFromEventScheduleToForm(eventSchedule, onetimeScheduleForm); - onetimeScheduleForm.selectedUsers = eventSchedule.getSelectedUsers(); + String userId = request.getRemoteUser(); + editable = false; + if (userId != null) { + for (String uid : onetimeScheduleForm.selectedUsers) { + if (userId.equals(uid)) { + editable = true; + } + } + } } private EventSchedule createEventSchedule() { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/RepeatScheduleAction.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/RepeatScheduleAction.java 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/action/user/schedule/RepeatScheduleAction.java 2008-11-21 08:04:12 UTC (rev 1391) @@ -44,6 +44,7 @@ public List<EventSchedule> eventScheduleItems; // for edit/confirm/delete + public boolean editable; @ActionForm private RepeatScheduleForm repeatScheduleForm; @@ -110,7 +111,7 @@ // reset edit page loadListPageParameters(); - return "/user/calendar/" + repeatScheduleForm.returnType + "/" + return "/user/schedule/calendar/" + repeatScheduleForm.returnType + "/" + repeatScheduleForm.year + "/" + repeatScheduleForm.month + "/" + repeatScheduleForm.date + "?redirect=true"; // return displayList(); @@ -118,6 +119,7 @@ @Execute(validator = false, input = "error.jsp") public String editagain() { + editable = true; return "edit.jsp"; } @@ -140,6 +142,18 @@ return "confirm.jsp"; } + @Execute(validator = false, input = "error.jsp") + public String confirmpagefromdelete() { + repeatScheduleForm.mode = CommonConstants.CONFIRM_MODE; + + // update edit page + loadDetailsPageParameters(); + + loadEventSchedule(); + + return "confirm.jsp"; + } + @Execute(validator = false, input = "error.jsp", urlPattern = "createpage/{returnType}/{year}/{month}/{date}") public String createpage() { // page navi @@ -187,6 +201,7 @@ @Execute(validator = true, input = "edit.jsp") public String confirm() { + editable = true; return "confirm.jsp"; } @@ -280,9 +295,10 @@ // reset edit page loadListPageParameters(); - return "/user/calendar/" + repeatScheduleForm.returnType + "/" - + repeatScheduleForm.year + "/" + repeatScheduleForm.month - + "/" + repeatScheduleForm.date + "?redirect=true"; + return "/user/schedule/calendar/" + repeatScheduleForm.returnType + + "/" + repeatScheduleForm.year + "/" + + repeatScheduleForm.month + "/" + repeatScheduleForm.date + + "?redirect=true"; // return displayList(); } catch (ActionMessagesException e) { log.error(e.getMessage(), e); @@ -324,6 +340,7 @@ @Execute(validator = false, input = "error.jsp") public String setusers() { + editable = true; return "edit.jsp"; } @@ -399,6 +416,7 @@ @Execute(validator = false, input = "error.jsp") public String setfacilities() { + editable = true; return "edit.jsp"; } @@ -459,7 +477,15 @@ repeatScheduleDxo.convertFromEventScheduleToForm(eventSchedule, repeatScheduleForm); - repeatScheduleForm.selectedUsers = eventSchedule.getSelectedUsers(); + String userId = request.getRemoteUser(); + editable = false; + if (userId != null) { + for (String uid : repeatScheduleForm.selectedUsers) { + if (userId.equals(uid)) { + editable = true; + } + } + } } private EventSchedule createEventSchedule() { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/schedule/CalendarForm.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/schedule/CalendarForm.java 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/form/user/schedule/CalendarForm.java 2008-11-21 08:04:12 UTC (rev 1391) @@ -23,6 +23,8 @@ @IntegerType public String date; + public String userGroup; + public Calendar getTargetCalendar() { if (!StringUtils.isEmpty(year) && !StringUtils.isEmpty(month) && !StringUtils.isEmpty(date)) { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/service/UserInfoService.java 2008-11-21 08:04:12 UTC (rev 1391) @@ -46,6 +46,55 @@ } } + public UserInfo getUserInfo(String userId) { + UserInfoCB cb = new UserInfoCB(); + + // setup + + cb.query().setDeletedBy_IsNull(); + cb.query().setUserId_Equal(userId); + UserInfo userInfo = userInfoBhv.selectEntity(cb); + if (userInfo == null) { + return null; + } + + RoleMappingCB cb2 = new RoleMappingCB(); + cb2.query().setUserId_Equal(userId); + userInfo.setRoleMappingList(roleMappingBhv.selectList(cb2)); + + GroupMappingCB cb3 = new GroupMappingCB(); + cb3.query().setUserId_Equal(userId); + userInfo.setGroupMappingList(groupMappingBhv.selectList(cb3)); + + return userInfo; + } + + public List<RoleMapping> getUserInfoListByRole(String roleId) { + RoleMappingCB cb = new RoleMappingCB(); + + // setup + cb.setupSelect_UserInfo(); + + cb.query().setRoleId_Equal(roleId); + + cb.query().queryUserInfo().addOrderBy_UserId_Asc(); + + return roleMappingBhv.selectList(cb); + } + + public List<GroupMapping> getUserInfoListByGroup(String groupId) { + GroupMappingCB cb = new GroupMappingCB(); + + // setup + cb.setupSelect_UserInfo(); + + cb.query().setGroupId_Equal(groupId); + + cb.query().queryUserInfo().addOrderBy_UserId_Asc(); + + return groupMappingBhv.selectList(cb); + } + public List<UserInfo> getAvailableUserList(String roleId, String groupId, String[] selectedUsers, String userId) { if (roleId == null && groupId == null) { Modified: scheduler/trunk/src/main/java/jp/sf/pal/scheduler/util/SchedulerUtil.java =================================================================== --- scheduler/trunk/src/main/java/jp/sf/pal/scheduler/util/SchedulerUtil.java 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/java/jp/sf/pal/scheduler/util/SchedulerUtil.java 2008-11-21 08:04:12 UTC (rev 1391) @@ -1,5 +1,803 @@ package jp.sf.pal.scheduler.util; +import java.sql.Time; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import jp.sf.pal.scheduler.SchedulerConstants; +import jp.sf.pal.scheduler.common.util.CalendarUtil; +import jp.sf.pal.scheduler.common.util.DateUtil; +import jp.sf.pal.scheduler.db.exentity.EventSchedule; +import jp.sf.pal.scheduler.db.exentity.EventScheduleMapping; + public class SchedulerUtil { + public static List<Map<String, Object>> createSideCalendar( + Calendar targetCalendar) { + List<Map<String, Object>> calendarDayItems = new LinkedList<Map<String, Object>>(); + int targetYear = CalendarUtil.getYear(targetCalendar); + int targetMonth = CalendarUtil.getMonth(targetCalendar) + 1; + int targetDate = CalendarUtil.getDate(targetCalendar); + // create a previous month + Calendar cal = CalendarUtil.getFirstCalendarInMonth(targetCalendar); + int count = CalendarUtil.getDay(cal) - 1; + while (count > 0) { + cal = CalendarUtil.getPrev(cal); + calendarDayItems.add(0, createCalendarDayItem(cal, false)); + count--; + } + + // create this month + cal = CalendarUtil.getFirstCalendarInMonth(targetCalendar); + int lastDayOfMonth = CalendarUtil.getDate(CalendarUtil + .getLastCalendarInMonth(targetCalendar)); + for (int i = 0; i < lastDayOfMonth; i++) { + calendarDayItems.add(createCalendarDayItem(cal, targetYear, + targetMonth, targetDate, true)); + cal = CalendarUtil.getNext(cal); + } + + // create a next month + count = CalendarUtil.getDay(cal); + while (count != 1) { + calendarDayItems.add(createCalendarDayItem(cal, false)); + cal = CalendarUtil.getNext(cal); + count = CalendarUtil.getDay(cal); + } + return calendarDayItems; + } + + public static Map<String, Object> createCalendarDayItem(Calendar cal, + boolean thisMonth) { + Map<String, Object> map = new HashMap<String, Object>(); + map.put("year", String.valueOf(CalendarUtil.getYear(cal))); + map.put("month", String.valueOf(CalendarUtil.getMonth(cal) + 1)); + map.put("dayOfMonth", String.valueOf(CalendarUtil.getDate(cal))); + map.put("dayOfWeek", String.valueOf(CalendarUtil.getDay(cal))); + map.put("thisMonth", String.valueOf(thisMonth)); + map.put("target", "false"); + return map; + } + + public static Map<String, Object> createCalendarDayItem(Calendar cal, + int tYear, int tMonth, int tDate, boolean thisMonth) { + int year = CalendarUtil.getYear(cal); + int month = CalendarUtil.getMonth(cal) + 1; + int dayOfMonth = CalendarUtil.getDate(cal); + int dayOfWeek = CalendarUtil.getDay(cal); + Map<String, Object> map = new HashMap<String, Object>(); + map.put("year", String.valueOf(year)); + map.put("month", String.valueOf(month)); + map.put("dayOfMonth", String.valueOf(dayOfMonth)); + map.put("dayOfWeek", String.valueOf(dayOfWeek)); + map.put("thisMonth", String.valueOf(thisMonth)); + if (year == tYear && month == tMonth && dayOfMonth == tDate) { + map.put("target", "true"); + } else { + map.put("target", "false"); + } + return map; + } + + public static boolean compare(int year1, int month1, int date1, int year2, + int month2, int date2) { + if (year1 == year2 && month1 == month2 && date1 == date2) { + return true; + } + return false; + } + + public static Map<String, Object> createEmptyEvent() { + Map<String, Object> emptyEvent = new HashMap<String, Object>(); + emptyEvent.put("startEvent", "true"); + emptyEvent.put("cols", "1"); + emptyEvent.put("rows", "1"); + emptyEvent.put("time", "none"); + return emptyEvent; + } + + public static void putEventSchedule(EventSchedule eventSchedule, + Time startTime, Time endTime, + List<List<Map<String, Object>>> eventInDayItems, + List<Map<String, Object>> allDayEventInDayItems) { + if (startTime != null && endTime != null) { + int sIdx = DateUtil.getHours(startTime); + int eIdx = DateUtil.getHours(endTime) - 1; + if (DateUtil.getMinutes(endTime) != 0) { + eIdx++; + } + if (eIdx > 23) { + eIdx = 23; + } + for (int i = sIdx; i <= eIdx; i++) { + Map<String, Object> eventMap = createEvent(eventSchedule, true, + true); + if (i == sIdx) { + eventMap.put("startEvent", "true"); + int size = eIdx - sIdx + 1; + eventMap.put("rows", String.valueOf(size)); + eventMap.put("lastEvent", "true"); + } else { + eventMap.put("startEvent", "false"); + } + eventMap.put("cols", "1"); + eventInDayItems.get(i).add(eventMap); + } + } else if (startTime != null && endTime == null) { + int sIdx = DateUtil.getHours(startTime); + for (int i = sIdx; i <= 23; i++) { + Map<String, Object> eventMap = createEvent(eventSchedule, true, + false); + if (i == sIdx) { + eventMap.put("startEvent", "true"); + int size = 23 - sIdx + 1; + eventMap.put("rows", String.valueOf(size)); + eventMap.put("lastEvent", "true"); + } else { + eventMap.put("startEvent", "false"); + } + eventMap.put("cols", "1"); + eventInDayItems.get(i).add(eventMap); + } + } else if (startTime == null && endTime != null) { + int eIdx = DateUtil.getHours(endTime) - 1; + if (DateUtil.getMinutes(endTime) != 0) { + eIdx++; + } + if (eIdx > 23) { + eIdx = 23; + } + for (int i = 0; i <= eIdx; i++) { + Map<String, Object> eventMap = createEvent(eventSchedule, + false, true); + if (i == 0) { + eventMap.put("startEvent", "true"); + int size = eIdx + 1; + eventMap.put("rows", String.valueOf(size)); + eventMap.put("lastEvent", "true"); + } else { + eventMap.put("startEvent", "false"); + } + eventMap.put("cols", "1"); + eventInDayItems.get(i).add(eventMap); + } + } else { + // all day + allDayEventInDayItems.add(createEvent(eventSchedule, false, false)); + } + + } + + public static Map<String, Object> createEvent(EventSchedule eventSchedule, + boolean start, boolean end) { + Map<String, Object> map = new HashMap<String, Object>(); + map.put("id", eventSchedule.getId().toString()); + map.put("title", eventSchedule.getTitle()); + map.put("secret", eventSchedule.getSecret()); + if (start || end) { + StringBuilder buf = new StringBuilder(); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); // TODO i18n + if (start && eventSchedule.getStartTime() != null) { + buf.append(sdf.format(eventSchedule.getStartTime())); + } + buf.append("-"); + if (end && eventSchedule.getEndTime() != null) { + buf.append(sdf.format(eventSchedule.getEndTime())); + } + map.put("time", buf.toString()); + } + if (SchedulerConstants.ONETIME_SCHEDULE.equals(eventSchedule.getType())) { + map.put("repeat", "false"); + } else { + map.put("repeat", "true"); + map.put("type", ((EventSchedule) eventSchedule).getType()); + } + + return map; + } + + public static void createPersonalDayForOnetime(int tYear, int tMonth, + int tDate, List<EventScheduleMapping> ssmList, + List<List<Map<String, Object>>> eventInDayItems, + List<Map<String, Object>> allDayEventInDayItems) { + for (EventScheduleMapping ssm : ssmList) { + EventSchedule eventSchedule = ssm.getEventSchedule(); + Date startDate = eventSchedule.getStartDate(); + int sYear = DateUtil.getYear(startDate) + 1900; + int sMonth = DateUtil.getMonth(startDate) + 1; + int sDate = DateUtil.getDate(startDate); + + Date endDate = eventSchedule.getEndDate(); + int eYear = DateUtil.getYear(endDate) + 1900; + int eMonth = DateUtil.getMonth(endDate) + 1; + int eDate = DateUtil.getDate(endDate); + + Time startTime = eventSchedule.getStartTime(); + Time endTime = eventSchedule.getEndTime(); + if (compare(tYear, tMonth, tDate, sYear, sMonth, sDate) + && compare(tYear, tMonth, tDate, eYear, eMonth, eDate)) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } else if (compare(tYear, tMonth, tDate, sYear, sMonth, sDate) + && !compare(tYear, tMonth, tDate, eYear, eMonth, eDate)) { + putEventSchedule(eventSchedule, startTime, null, + eventInDayItems, allDayEventInDayItems); + } else if (!compare(tYear, tMonth, tDate, sYear, sMonth, sDate) + && compare(tYear, tMonth, tDate, eYear, eMonth, eDate)) { + putEventSchedule(eventSchedule, null, endTime, eventInDayItems, + allDayEventInDayItems); + } else { + // all day + allDayEventInDayItems.add(createEvent(eventSchedule, false, + false)); + } + } + } + + public static void createPersonalDayForRepeat(int tYear, int tMonth, + int tDate, int tDay, List<EventScheduleMapping> rsmList, + List<List<Map<String, Object>>> eventInDayItems, + List<Map<String, Object>> allDayEventInDayItems) { + for (EventScheduleMapping rsm : rsmList) { + EventSchedule eventSchedule = rsm.getEventSchedule(); + Date startDate = eventSchedule.getStartDate(); + // int sYear = DateUtil.getYear(startDate) + 1900; + int sMonth = DateUtil.getMonth(startDate) + 1; + int sDate = DateUtil.getDate(startDate); + + Time startTime = eventSchedule.getStartTime(); + Time endTime = eventSchedule.getEndTime(); + String type = eventSchedule.getType(); + if ("MTWTFSS".equals(type)) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } else if ("MTWTF".equals(type)) { + if (tDay > 1 && tDay < 7) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } + } else if ("MWF".equals(type)) { + if (tDay == 2 || tDay == 4 || tDay == 6) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } + } else if ("TT".equals(type)) { + if (tDay == 3 || tDay == 5) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } + } else if ("WEEKLY".equals(type)) { + if (tDay == DateUtil.getDay(startDate) + 1) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } + } else if ("MONTHLY".equals(type)) { + if (tDate == sDate) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } + } else if ("YEARLY".equals(type)) { + if (tDate == sDate && tMonth == sMonth) { + putEventSchedule(eventSchedule, startTime, endTime, + eventInDayItems, allDayEventInDayItems); + } + } + + } + + } + + public static void createPersonalWeekForOnetime( + Map<String, Integer> indexMap, List<EventScheduleMapping> ssmList, + List<List<List<Map<String, Object>>>> eventInWeekItems, + List<List<Map<String, Object>>> allDayEventInWeekItems) { + for (EventScheduleMapping ssm : ssmList) { + EventSchedule eventSchedule = ssm.getEventSchedule(); + Date startDate = eventSchedule.getStartDate(); + int sYear = DateUtil.getYear(startDate) + 1900; + int sMonth = DateUtil.getMonth(startDate) + 1; + int sDate = DateUtil.getDate(startDate); + Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); + if (sIndex == null) { + sIndex = Integer.valueOf(-1); + } + + Date endDate = eventSchedule.getEndDate(); + int eYear = DateUtil.getYear(endDate) + 1900; + int eMonth = DateUtil.getMonth(endDate) + 1; + int eDate = DateUtil.getDate(endDate); + Integer eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); + if (eIndex == null) { + eIndex = Integer.valueOf(7); + } + + int startIdx = sIndex.intValue(); + if (startIdx < 0) { + startIdx = 0; + } + int endIdx = eIndex.intValue(); + if (endIdx > 6) { + endIdx = 6; + } + + Time time = eventSchedule.getStartTime(); + for (int i = startIdx; i < endIdx + 1; i++) { + if (i == sIndex.intValue() && i == eIndex.intValue()) { + if (time == null) { + // all day + allDayEventInWeekItems.get(i).add( + createEvent(eventSchedule, false, false)); + } else { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } + } else if (i == sIndex.intValue() && i != eIndex.intValue()) { + if (time == null) { + allDayEventInWeekItems.get(i).add( + createEvent(eventSchedule, false, false)); + } else { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, false)); + } + } else if (i != sIndex.intValue() && i == eIndex.intValue()) { + if (eventSchedule.getEndTime() == null) { + allDayEventInWeekItems.get(i).add( + createEvent(eventSchedule, false, false)); + } else { + int timeIndex = DateUtil.getHours(eventSchedule + .getEndTime()) - 1; + if (timeIndex < 0) { + timeIndex = 0; + } + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, false, true)); + } + } else if (i != sIndex.intValue() && i != eIndex.intValue()) { + // all day + allDayEventInWeekItems.get(i).add( + createEvent(eventSchedule, false, false)); + } + } + } + + } + + public static void createPersonalWeekForRepeat( + Map<String, Integer> indexMap, List<EventScheduleMapping> rsmList, + List<List<List<Map<String, Object>>>> eventInWeekItems, + List<List<Map<String, Object>>> allDayEventInWeekItems, + List<Map<String, Object>> weekDayItems) { + for (EventScheduleMapping rsm : rsmList) { + EventSchedule eventSchedule = rsm.getEventSchedule(); + Date startDate = eventSchedule.getStartDate(); + int sYear = DateUtil.getYear(startDate) + 1900; + int sMonth = DateUtil.getMonth(startDate) + 1; + int sDate = DateUtil.getDate(startDate); + Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); + if (sIndex == null) { + sIndex = Integer.valueOf(0); + } + + Date endDate = eventSchedule.getEndDate(); + Integer eIndex; + if (endDate != null) { + int eYear = DateUtil.getYear(endDate) + 1900; + int eMonth = DateUtil.getMonth(endDate) + 1; + int eDate = DateUtil.getDate(endDate); + eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); + if (eIndex == null) { + eIndex = Integer.valueOf(6); + } + } else { + eIndex = Integer.valueOf(6); + } + + Time time = eventSchedule.getStartTime(); + for (int i = sIndex.intValue(); i < eIndex.intValue() + 1; i++) { + String type = eventSchedule.getType(); + if ("MTWTFSS".equals(type)) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + + // all day + allDayEventInWeekItems.get(i).add( + createEvent(eventSchedule, false, false)); + } + } else if ("MTWTF".equals(type)) { + String d = (String) weekDayItems.get(i).get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek > 1 && dayOfWeek < 7) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + allDayEventInWeekItems.get(i) + .add( + createEvent(eventSchedule, + false, false)); + } + } + } + } else if ("MWF".equals(type)) { + String d = (String) weekDayItems.get(i).get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek == 2 || dayOfWeek == 4 || dayOfWeek == 6) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + allDayEventInWeekItems.get(i) + .add( + createEvent(eventSchedule, + false, false)); + } + } + } + } else if ("TT".equals(type)) { + String d = (String) weekDayItems.get(i).get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek == 3 || dayOfWeek == 5) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + allDayEventInWeekItems.get(i) + .add( + createEvent(eventSchedule, + false, false)); + } + } + } + } else if ("WEEKLY".equals(type)) { + String d = (String) weekDayItems.get(i).get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek == DateUtil.getDay(startDate) + 1) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + allDayEventInWeekItems.get(i) + .add( + createEvent(eventSchedule, + false, false)); + } + } + } + } else if ("MONTHLY".equals(type)) { + String d = (String) weekDayItems.get(i).get("date"); + if (d != null) { + int date = Integer.parseInt(d); + if (date == sDate) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + allDayEventInWeekItems.get(i) + .add( + createEvent(eventSchedule, + false, false)); + } + } + } + } else if ("YEARLY".equals(type)) { + String d = (String) weekDayItems.get(i).get("date"); + String m = (String) weekDayItems.get(i).get("month"); + if (d != null && m != null) { + int date = Integer.parseInt(d); + int month = Integer.parseInt(m); + if (date == sDate && month == sMonth) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + eventInWeekItems.get(i).get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + allDayEventInWeekItems.get(i) + .add( + createEvent(eventSchedule, + false, false)); + } + } + } + } + } + + } + + } + + public static void createPersonalMonthForOnetime(int firstDateIndex, + int endDateIndex, Map<String, Integer> indexMap, + List<EventScheduleMapping> ssmList, + List<Map<String, Object>> calendarDayItems) { + for (EventScheduleMapping ssm : ssmList) { + EventSchedule eventSchedule = ssm.getEventSchedule(); + Date startDate = eventSchedule.getStartDate(); + int sYear = DateUtil.getYear(startDate) + 1900; + int sMonth = DateUtil.getMonth(startDate) + 1; + int sDate = DateUtil.getDate(startDate); + Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); + if (sIndex == null) { + sIndex = Integer.valueOf(firstDateIndex - 1); + } + + Date endDate = eventSchedule.getEndDate(); + int eYear = DateUtil.getYear(endDate) + 1900; + int eMonth = DateUtil.getMonth(endDate) + 1; + int eDate = DateUtil.getDate(endDate); + Integer eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); + if (eIndex == null) { + eIndex = Integer.valueOf(endDateIndex); + } + + int startIdx = sIndex.intValue(); + if (startIdx < firstDateIndex) { + startIdx = firstDateIndex; + } + int endIdx = eIndex.intValue(); + if (endIdx > endDateIndex) { + endIdx = endDateIndex; + } + + Time time = eventSchedule.getStartTime(); + for (int i = startIdx; i < endIdx + 1; i++) { + if (i == sIndex.intValue() && i == eIndex.intValue()) { + if (time == null) { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent(eventSchedule, + false, false)); + } else { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } + } else if (i == sIndex.intValue() && i != eIndex.intValue()) { + if (time == null) { + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent(eventSchedule, + false, false)); + } else { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, false)); + } + } else if (i != sIndex.intValue() && i == eIndex.intValue()) { + if (eventSchedule.getEndTime() == null) { + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent(eventSchedule, + false, false)); + } else { + int timeIndex = DateUtil.getHours(eventSchedule + .getEndTime()) - 1; + if (timeIndex < 0) { + timeIndex = 0; + } + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, false, true)); + } + } else if (i != sIndex.intValue() && i != eIndex.intValue()) { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent(eventSchedule, + false, false)); + } + } + } + } + + public static void createPersonalMonthForRepeat(int firstDateIndex, + int endDateIndex, Map<String, Integer> indexMap, + List<EventScheduleMapping> rsmList, + List<Map<String, Object>> calendarDayItems) { + for (EventScheduleMapping rsm : rsmList) { + EventSchedule eventSchedule = rsm.getEventSchedule(); + Date startDate = eventSchedule.getStartDate(); + int sYear = DateUtil.getYear(startDate) + 1900; + int sMonth = DateUtil.getMonth(startDate) + 1; + int sDate = DateUtil.getDate(startDate); + Integer sIndex = indexMap.get(sYear + "-" + sMonth + "-" + sDate); + if (sIndex == null) { + sIndex = Integer.valueOf(firstDateIndex); + } + + Date endDate = eventSchedule.getEndDate(); + Integer eIndex; + if (endDate != null) { + int eYear = DateUtil.getYear(endDate) + 1900; + int eMonth = DateUtil.getMonth(endDate) + 1; + int eDate = DateUtil.getDate(endDate); + eIndex = indexMap.get(eYear + "-" + eMonth + "-" + eDate); + if (eIndex == null) { + eIndex = Integer.valueOf(endDateIndex); + } + } else { + eIndex = Integer.valueOf(endDateIndex); + } + + Time time = eventSchedule.getStartTime(); + for (int i = sIndex.intValue(); i < eIndex.intValue() + 1; i++) { + String type = eventSchedule.getType(); + if ("MTWTFSS".equals(type)) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent(eventSchedule, + false, false)); + } + } else if ("MTWTF".equals(type)) { + String d = (String) calendarDayItems.get(i) + .get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek > 1 && dayOfWeek < 7) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent( + eventSchedule, false, false)); + } + } + } + } else if ("MWF".equals(type)) { + String d = (String) calendarDayItems.get(i) + .get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek == 2 || dayOfWeek == 4 || dayOfWeek == 6) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent( + eventSchedule, false, false)); + } + } + } + } else if ("TT".equals(type)) { + String d = (String) calendarDayItems.get(i) + .get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek == 3 || dayOfWeek == 5) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent( + eventSchedule, false, false)); + } + } + } + } else if ("WEEKLY".equals(type)) { + String d = (String) calendarDayItems.get(i) + .get("dayOfWeek"); + if (d != null) { + int dayOfWeek = Integer.parseInt(d); + if (dayOfWeek == DateUtil.getDay(startDate) + 1) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent( + eventSchedule, false, false)); + } + } + } + } else if ("MONTHLY".equals(type)) { + String d = (String) calendarDayItems.get(i).get( + "dayOfMonth"); + if (d != null) { + int date = Integer.parseInt(d); + if (date == sDate) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent( + eventSchedule, false, false)); + } + } + } + } else if ("YEARLY".equals(type)) { + String d = (String) calendarDayItems.get(i).get( + "dayOfMonth"); + String m = (String) calendarDayItems.get(i).get("month"); + if (d != null && m != null) { + int date = Integer.parseInt(d); + int month = Integer.parseInt(m); + if (date == sDate && month == sMonth) { + if (time != null) { + int timeIndex = DateUtil.getHours(time); + List<List<Map<String, Object>>> eventInMonthItems = (List<List<Map<String, Object>>>) calendarDayItems + .get(i).get("eventItems"); + eventInMonthItems.get(timeIndex).add( + createEvent(eventSchedule, true, true)); + } else { + // all day + List<Map<String, Object>> allDayEventInMonthItems = (List<Map<String, Object>>) calendarDayItems + .get(i).get("allDayEventItems"); + allDayEventInMonthItems.add(createEvent( + eventSchedule, false, false)); + } + } + } + } + } + + } + + } } Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/facilitylist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/facilitylist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/facilitylist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -31,6 +31,7 @@ <html:hidden property="endDate"/> <html:hidden property="endTime"/> <html:hidden property="content"/> +<html:hidden property="secret"/> <html:select property="selectedUsers" multiple="true" style="display:none;"> <c:forEach var="u" varStatus="s" items="${selectedUserItems}"> <html:option value="${f:u(u.userId)}">${f:u(u.userId)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/userlist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/userlist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/onetimeSchedule/userlist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -31,6 +31,7 @@ <html:hidden property="endDate"/> <html:hidden property="endTime"/> <html:hidden property="content"/> +<html:hidden property="secret"/> <html:select property="selectedFacilities" multiple="true" style="display:none;"> <c:forEach var="f" varStatus="s" items="${selectedFacilityItems}"> <html:option value="${f:u(f.id)}">${f:u(f.id)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/facilitylist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/facilitylist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/facilitylist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -31,6 +31,7 @@ <html:hidden property="endDate"/> <html:hidden property="endTime"/> <html:hidden property="content"/> +<html:hidden property="secret"/> <html:select property="selectedUsers" multiple="true" style="display:none;"> <c:forEach var="u" varStatus="s" items="${selectedUserItems}"> <html:option value="${f:u(u.userId)}">${f:u(u.userId)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/userlist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/userlist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/admin/schedule/repeatSchedule/userlist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -32,6 +32,7 @@ <html:hidden property="endTime"/> <html:hidden property="content"/> <html:hidden property="type"/> +<html:hidden property="secret"/> <html:select property="selectedFacilities" multiple="true" style="display:none;"> <c:forEach var="f" varStatus="s" items="${selectedFacilityItems}"> <html:option value="${f:u(f.id)}">${f:u(f.id)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalday.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalday.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalday.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -15,6 +15,8 @@ <li class="selectable"><s:link href="selectpersonalweek/${year}/${month}/${date}" style="text-decoration: none;">Week</s:link></li> <li class="spacer"></li> <li class="selectable"><s:link href="selectpersonalmonth/${year}/${month}/${date}" style="text-decoration: none;">Month</s:link></li> + <li class="spacer"></li> + <li class="selectable"><s:link href="selectgroupweek/${year}/${month}/${date}" style="text-decoration: none;">Group(Week)</s:link></li> <li class="last"></li> </ul> </div> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalmonth.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalmonth.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalmonth.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -15,6 +15,8 @@ <li class="selectable"><s:link href="selectpersonalweek/${year}/${month}/${date}" style="text-decoration: none;">Week</s:link></li> <li class="spacer"></li> <li class="selected"><span>Month</span></li> + <li class="spacer"></li> + <li class="selectable"><s:link href="selectgroupweek/${year}/${month}/${date}" style="text-decoration: none;">Group(Week)</s:link></li> <li class="last"></li> </ul> </div> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalweek.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalweek.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/calendar/personalweek.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -15,6 +15,8 @@ <li class="selected"><span>Week</span></li> <li class="spacer"></li> <li class="selectable"><s:link href="selectpersonalmonth/${year}/${month}/${date}" style="text-decoration: none;">Month</s:link></li> + <li class="spacer"></li> + <li class="selectable"><s:link href="selectgroupweek/${year}/${month}/${date}" style="text-decoration: none;">Group(Week)</s:link></li> <li class="last"></li> </ul> </div> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/confirm.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/confirm.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/confirm.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -115,6 +115,7 @@ </td> </tr> </tbody> +<c:if test="${editable}"> <tfoot> <tr> <td colspan="2"> @@ -128,7 +129,7 @@ </c:if> <c:if test="${mode == 3}"> <input type="submit" name="delete" value="<bean:message key="labels.delete"/>"/> - <input type="submit" name="back" value="<bean:message key="labels.back"/>"/> + <input type="submit" name="confirmpagefromdelete" value="<bean:message key="labels.back"/>"/> </c:if> <c:if test="${mode == 4}"> <!-- input type="submit" name="back" value="<bean:message key="labels.back"/>"/ --> @@ -138,6 +139,7 @@ </td> </tr> </tfoot> +</c:if> </table> </div> </s:form> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/facilitylist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/facilitylist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/facilitylist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -39,6 +39,7 @@ <html:hidden property="endDate"/> <html:hidden property="endTime"/> <html:hidden property="content"/> +<html:hidden property="secret"/> <html:select property="selectedUsers" multiple="true" style="display:none;"> <c:forEach var="u" varStatus="s" items="${selectedUserItems}"> <html:option value="${f:u(u.userId)}">${f:u(u.userId)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/userlist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/userlist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/onetimeSchedule/userlist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -39,6 +39,7 @@ <html:hidden property="endDate"/> <html:hidden property="endTime"/> <html:hidden property="content"/> +<html:hidden property="secret"/> <html:select property="selectedFacilities" multiple="true" style="display:none;"> <c:forEach var="f" varStatus="s" items="${selectedFacilityItems}"> <html:option value="${f:u(f.id)}">${f:u(u.id)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/confirm.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/confirm.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/confirm.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -128,6 +128,7 @@ </td> </tr> </tbody> +<c:if test="${editable}"> <tfoot> <tr> <td colspan="2"> @@ -141,7 +142,7 @@ </c:if> <c:if test="${mode == 3}"> <input type="submit" name="delete" value="<bean:message key="labels.delete"/>"/> - <input type="submit" name="back" value="<bean:message key="labels.back"/>"/> + <input type="submit" name="confirmpagefromdelete" value="<bean:message key="labels.back"/>"/> </c:if> <c:if test="${mode == 4}"> <!-- input type="submit" name="back" value="<bean:message key="labels.back"/>"/ --> @@ -151,6 +152,7 @@ </td> </tr> </tfoot> +</c:if> </table> </div> </s:form> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/facilitylist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/facilitylist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/facilitylist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -39,6 +39,7 @@ <html:hidden property="endDate"/> <html:hidden property="endTime"/> <html:hidden property="content"/> +<html:hidden property="secret"/> <html:select property="selectedUsers" multiple="true" style="display:none;"> <c:forEach var="u" varStatus="s" items="${selectedUserItems}"> <html:option value="${f:u(u.userId)}">${f:u(u.userId)}</html:option> Modified: scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/userlist.jsp =================================================================== --- scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/userlist.jsp 2008-11-21 02:50:56 UTC (rev 1390) +++ scheduler/trunk/src/main/webapp/WEB-INF/view/user/schedule/repeatSchedule/userlist.jsp 2008-11-21 08:04:12 UTC (rev 1391) @@ -40,6 +40,7 @@ <html:hidden property="endTime"/> <html:hidden property="content"/> <html:hidden property="type"/> +<html:hidden property="secret"/> <html:select property="selectedFacilities" multiple="true" style="display:none;"> <c:forEach var="f" varStatus="s" items="${selectedFacilityItems}"> <html:option value="${f:u(f.id)}">${f:u(u.id)}</html:option>