From 8fb8ccb5f713065f178c30aa0ece67816bc397fb Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Fri, 8 Jul 2011 14:46:27 +0200 Subject: [PATCH] Fill the combo to create a new work week with the first calendar in alphabetic order and changes the name columns and labels to the edition calendar view. FEA: ItEr75S05CalendarAdminInterfaceItEr74S06 --- .../calendars/entities/BaseCalendar.java | 18 +++++ .../BaseCalendarEditionController.java | 63 ++++++++++++++-- .../web/calendars/BaseCalendarModel.java | 42 +++++++++-- .../web/calendars/IBaseCalendarModel.java | 7 ++ .../web/common/IntegrationEntityModel.java | 6 ++ .../webapp/calendars/_createNewVersion.zul | 72 ++++++++++--------- .../src/main/webapp/calendars/_edition.zul | 10 +-- 7 files changed, 168 insertions(+), 50 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java index 80a7796a8..126d6edc3 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/calendars/entities/BaseCalendar.java @@ -25,6 +25,7 @@ import static org.navalplanner.business.workingday.EffortDuration.hours; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.List; @@ -77,6 +78,23 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar { return calendar; } + public static List sortByName(List baseCalendars) { + Collections.sort(baseCalendars, new Comparator() { + + @Override + public int compare(BaseCalendar o1, BaseCalendar o2) { + if (o2.getName() == null) { + return -1; + } + if (o1.getName() == null) { + return 1; + } + return o1.getName().compareTo(o2.getName()); + } + }); + return baseCalendars; + } + private static void resetDefaultCapacities(BaseCalendar calendar) { Capacity eightHours = Capacity.create(hours(8)) .overAssignableWithoutLimit(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java index 6357bd976..ffb09bf8e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java @@ -38,14 +38,14 @@ import java.util.Map; import org.apache.commons.lang.StringUtils; import org.joda.time.LocalDate; import org.navalplanner.business.calendars.entities.BaseCalendar; -import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; import org.navalplanner.business.calendars.entities.CalendarAvailability; import org.navalplanner.business.calendars.entities.CalendarData; -import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.calendars.entities.CalendarException; import org.navalplanner.business.calendars.entities.CalendarExceptionType; import org.navalplanner.business.calendars.entities.Capacity; import org.navalplanner.business.calendars.entities.ResourceCalendar; +import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; +import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.workingday.EffortDuration; import org.navalplanner.business.workingday.EffortDuration.Granularity; import org.navalplanner.web.common.IMessagesForUser; @@ -70,6 +70,7 @@ import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; +import org.zkoss.zul.ComboitemRenderer; import org.zkoss.zul.Constraint; import org.zkoss.zul.Datebox; import org.zkoss.zul.Hbox; @@ -125,6 +126,8 @@ public abstract class BaseCalendarEditionController extends private HistoryVersionsRenderer historyVersionsRenderer = new HistoryVersionsRenderer(); + private ParentCalendarsComboitemRenderer parentCalendarsComboitemRenderer = new ParentCalendarsComboitemRenderer(); + private CalendarExceptionRenderer calendarExceptionRenderer = new CalendarExceptionRenderer(); private CalendarAvailabilityRenderer calendarAvailabilityRenderer = new CalendarAvailabilityRenderer(); @@ -286,15 +289,44 @@ public abstract class BaseCalendarEditionController extends public String getCalendarType() { if (baseCalendarModel.isDerived()) { - return _("Derived"); + String currentStartDate = this.getCurrentStartDateLabel(); + String currentExpiringDate = this.getCurrentExpiringDateLabel(); + return _("Derived of Calendar " + getNameParentCalendar() + + currentStartDate + currentExpiringDate); } - return _("Normal"); + return _("Root calendar"); + } + + private String getCurrentExpiringDateLabel() { + System.out.println("expiringDate " + + baseCalendarModel.getCurrentStartDate()); + Date date = baseCalendarModel.getCurrentExpiringDate(); + String label = ""; + if (date != null) { + label = " to " + new SimpleDateFormat("dd/MM/yyyy").format(date); + } + return label; + } + + private String getCurrentStartDateLabel() { + System.out.println("expiringDate " + + baseCalendarModel.getCurrentStartDate()); + Date date = baseCalendarModel.getCurrentStartDate(); + String label = ""; + if (date != null) { + label = " from " + new SimpleDateFormat("dd/MM/yyyy").format(date); + } + return label; } public boolean isDerived() { return baseCalendarModel.isDerived(); } + public boolean isNotDerived() { + return (!isDerived()); + } + public List getHoursPerDay() { return Arrays.asList(Days.values()); } @@ -421,6 +453,7 @@ public abstract class BaseCalendarEditionController extends private void reloadWorkWeeksList() { Util.reloadBindings(window.getFellow("historyInformation")); + Util.reloadBindings(window.getFellow("calendarTypeLabel")); } private void reloadTypeDatesAndDuration() { @@ -1011,7 +1044,8 @@ public abstract class BaseCalendarEditionController extends } public List getParentCalendars() { - return baseCalendarModel.getPossibleParentCalendars(); + return baseCalendarModel.getSortedBaseCalendars(baseCalendarModel + .getPossibleParentCalendars()); } public List getCalendarExceptions() { @@ -1027,6 +1061,25 @@ public abstract class BaseCalendarEditionController extends return calendarExceptions; } + public ParentCalendarsComboitemRenderer getParentCalendarsComboitemRenderer() { + return parentCalendarsComboitemRenderer; + } + + public class ParentCalendarsComboitemRenderer implements ComboitemRenderer { + + @Override + public void render(Comboitem item, Object data) { + BaseCalendar calendar = (BaseCalendar) data; + item.setLabel(calendar.getName()); + item.setValue(calendar); + + Combobox combobox = (Combobox) item.getParent(); + if (combobox.getSelectedItem() == null) { + combobox.setSelectedItem(item); + } + } + } + public CalendarExceptionRenderer getCalendarExceptionRenderer() { return calendarExceptionRenderer; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java index c43df3375..531d43844 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarModel.java @@ -34,14 +34,14 @@ import org.joda.time.LocalDate; import org.navalplanner.business.calendars.daos.IBaseCalendarDAO; import org.navalplanner.business.calendars.daos.ICalendarExceptionTypeDAO; import org.navalplanner.business.calendars.entities.BaseCalendar; -import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; import org.navalplanner.business.calendars.entities.CalendarAvailability; import org.navalplanner.business.calendars.entities.CalendarData; -import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.calendars.entities.CalendarException; import org.navalplanner.business.calendars.entities.CalendarExceptionType; import org.navalplanner.business.calendars.entities.Capacity; import org.navalplanner.business.calendars.entities.ResourceCalendar; +import org.navalplanner.business.calendars.entities.BaseCalendar.DayType; +import org.navalplanner.business.calendars.entities.CalendarData.Days; import org.navalplanner.business.common.IntegrationEntity; import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.common.entities.Configuration; @@ -103,6 +103,13 @@ public class BaseCalendarModel extends IntegrationEntityModel implements return baseCalendars; } + @Override + @Transactional(readOnly = true) + public List getSortedBaseCalendars( + List baseCalendars) { + return BaseCalendar.sortByName(baseCalendars); + } + /* * Initial conversation steps */ @@ -384,11 +391,38 @@ public class BaseCalendarModel extends IntegrationEntityModel implements if (getBaseCalendar() == null) { return null; } - CalendarData version = getBaseCalendar().getCalendarData( - LocalDate.fromDateFields(new Date())); + CalendarData version = getCurrentVersion(); return version != null ? version.getParent() : null; } + @Override + public Date getCurrentExpiringDate() { + CalendarData calendarData = getCurrentVersion(); + if (calendarData != null) { + LocalDate startDate = calendarData.getExpiringDate(); + return startDate != null ? startDate.minusDays(1) + .toDateTimeAtStartOfDay() + .toDate() : null; + } + return null; + } + + @Override + public Date getCurrentStartDate() { + CalendarData calendarData = getCurrentVersion(); + if (calendarData != null) { + LocalDate startDate = getValidFrom(calendarData); + return startDate != null ? startDate.toDateTimeAtStartOfDay() + .toDate() : null; + } + return null; + } + + public CalendarData getCurrentVersion() { + return getBaseCalendar().getCalendarData( + LocalDate.fromDateFields(new Date())); + } + @Override @Transactional(readOnly = true) public void setParent(BaseCalendar parent) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java index ecb1629b7..8ca1018e9 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/IBaseCalendarModel.java @@ -21,6 +21,7 @@ package org.navalplanner.web.calendars; +import java.util.Date; import java.util.List; import java.util.Set; @@ -217,4 +218,10 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel { BaseCalendar getCurrentParent(); + List getSortedBaseCalendars(List baseCalendars); + + Date getCurrentStartDate(); + + Date getCurrentExpiringDate(); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IntegrationEntityModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IntegrationEntityModel.java index 9ff29220d..d28e8d9c4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IntegrationEntityModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/IntegrationEntityModel.java @@ -24,6 +24,7 @@ package org.navalplanner.web.common; import static org.navalplanner.web.I18nHelper._; import java.util.ConcurrentModificationException; +import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -124,4 +125,9 @@ public abstract class IntegrationEntityModel implements IIntegrationEntityModel return entitySequenceDAO; } + public Date getCurrentExpiringDate() { + // TODO Auto-generated method stub + return null; + } + } \ No newline at end of file diff --git a/navalplanner-webapp/src/main/webapp/calendars/_createNewVersion.zul b/navalplanner-webapp/src/main/webapp/calendars/_createNewVersion.zul index 4c55a1d05..7db21ec14 100644 --- a/navalplanner-webapp/src/main/webapp/calendars/_createNewVersion.zul +++ b/navalplanner-webapp/src/main/webapp/calendars/_createNewVersion.zul @@ -20,40 +20,46 @@ --> - -