Bug #1440: Add calendar field while editing project templates

FEA: ItEr76S04BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2012-06-27 11:14:23 +02:00
parent bda28676ee
commit ecbd5bbd46
7 changed files with 70 additions and 4 deletions

View file

@ -587,4 +587,6 @@ public abstract class OrderElementTemplate extends BaseEntity implements
public abstract BigDecimal getBudget();
public abstract boolean isOrderTemplate();
}

View file

@ -286,4 +286,9 @@ public class OrderLineGroupTemplate extends OrderElementTemplate implements
return budget;
}
@Override
public boolean isOrderTemplate() {
return false;
}
}

View file

@ -237,4 +237,9 @@ public class OrderLineTemplate extends OrderElementTemplate {
return budget;
}
@Override
public boolean isOrderTemplate() {
return false;
}
}

View file

@ -22,10 +22,7 @@ package org.libreplan.business.templates.entities;
import static org.libreplan.business.i18n.I18nHelper._;
import java.util.Date;
import org.hibernate.validator.NotNull;
import org.joda.time.LocalDate;
import org.libreplan.business.calendars.entities.BaseCalendar;
import org.libreplan.business.orders.entities.Order;
import org.libreplan.business.orders.entities.OrderElement;
@ -45,7 +42,6 @@ public class OrderTemplate extends OrderLineGroupTemplate {
return create(beingBuilt, order);
}
@NotNull(message = "project calendar not specified")
private BaseCalendar calendar;
@Override
@ -68,4 +64,18 @@ public class OrderTemplate extends OrderLineGroupTemplate {
return _("Project");
}
public void setCalendar(BaseCalendar calendar) {
this.calendar = calendar;
}
@NotNull(message = "template calendar not specified")
public BaseCalendar getCalendar() {
return calendar;
}
@Override
public boolean isOrderTemplate() {
return true;
}
}

View file

@ -29,9 +29,11 @@ import javax.annotation.Resource;
import org.apache.commons.logging.LogFactory;
import org.hibernate.validator.InvalidValue;
import org.libreplan.business.calendars.entities.BaseCalendar;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.orders.entities.OrderElement;
import org.libreplan.business.templates.entities.OrderElementTemplate;
import org.libreplan.business.templates.entities.OrderTemplate;
import org.libreplan.web.common.ConstraintChecker;
import org.libreplan.web.common.IMessagesForUser;
import org.libreplan.web.common.Level;
@ -261,6 +263,13 @@ public class OrderTemplatesController extends GenericForwardComposer implements
showInvalidWorkReportTypeName();
return false;
}
if (model.getTemplate().isOrderTemplate()) {
OrderTemplate orderTemplate = (OrderTemplate) model.getTemplate();
if (orderTemplate.getCalendar() == null) {
throw new WrongValueException(editWindow.getFellow("calendar"),
_("calendar not specified"));
}
}
return true;
}
@ -412,4 +421,24 @@ public class OrderTemplatesController extends GenericForwardComposer implements
return Util.getMoneyFormat();
}
public boolean isOrderTemplate() {
if (model.getTemplate() == null) {
return false;
}
return model.getTemplate().isOrderTemplate();
}
public BaseCalendar getCalendar() {
if (isOrderTemplate()) {
return ((OrderTemplate) model.getTemplate()).getCalendar();
}
return null;
}
public void setCalendar(BaseCalendar calendar) {
if (isOrderTemplate()) {
((OrderTemplate) model.getTemplate()).setCalendar(calendar);
}
}
}

View file

@ -52,6 +52,7 @@ import org.libreplan.business.scenarios.IScenarioManager;
import org.libreplan.business.scenarios.entities.Scenario;
import org.libreplan.business.templates.daos.IOrderElementTemplateDAO;
import org.libreplan.business.templates.entities.OrderElementTemplate;
import org.libreplan.business.templates.entities.OrderTemplate;
import org.libreplan.web.common.concurrentdetection.OnConcurrentModification;
import org.libreplan.web.orders.QualityFormsOnConversation;
import org.libreplan.web.orders.labels.LabelsOnConversation;
@ -191,6 +192,7 @@ public class OrderTemplatesModel implements IOrderTemplatesModel {
}
private void loadAssociatedData(OrderElementTemplate template) {
loadCalendar(template);
loadAdvanceAssignments(template);
loadQualityForms(template);
loadLabels(template);
@ -198,6 +200,13 @@ public class OrderTemplatesModel implements IOrderTemplatesModel {
getOrderElementsOnConversation().initialize(template);
}
private void loadCalendar(OrderElementTemplate template) {
if (template.isOrderTemplate()) {
OrderTemplate orderTemplate = (OrderTemplate) template;
orderTemplate.getCalendar().getName();
}
}
private static void loadCriterionRequirements(OrderElementTemplate orderElement) {
orderElement.getHoursGroups().size();
for (HoursGroup hoursGroup : orderElement.getHoursGroups()) {

View file

@ -86,6 +86,12 @@
constraint="no negative:${i18n:_('Budget value cannot be negative')}"
format="@{templatesForOrdersController.moneyFormat}" />
</row>
<row visible="@{templatesForOrdersController.orderTemplate}">
<label value="${i18n:_('Calendar')}" />
<bandboxSearch id="calendar"
finder="BaseCalendarBandboxFinder"
selectedElement="@{templatesForOrdersController.calendar, access='both'}" />
</row>
</rows>
</grid>
</tabpanel>