ItEr17S08ClasificacionTraballoItEr16S10: Save Criterions in HoursGroup

This commit is contained in:
Diego Pino Garcia 2009-07-14 13:10:24 +02:00 committed by Javier Moran Rua
parent 5b7c3f45c2
commit 02f7f37751
6 changed files with 68 additions and 23 deletions

View file

@ -109,7 +109,7 @@ public class HoursGroup implements Cloneable {
public Criterion getCriterionByType(ICriterionType<?> type) {
for (Criterion criterion : criterions) {
if (criterion.getType().equals(type.getName())) {
if (criterion.getType().equals(type)) {
return criterion;
}
}
@ -118,8 +118,9 @@ public class HoursGroup implements Cloneable {
}
public Criterion getCriterionByType(String type) {
// TODO: Check if hoursgroup has criterions
for (Criterion criterion : criterions) {
if (criterion.getType().equals(type)) {
if (criterion.getType().getName().equals(type)) {
return criterion;
}
}

View file

@ -6,6 +6,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.navalplanner.business.resources.entities.Criterion;
public class OrderLine extends OrderElement {
public static OrderLine createOrderLineWithUnfixedHours(int hours) {
@ -321,7 +323,9 @@ public class OrderLine extends OrderElement {
@Override
public void forceLoadHourGroups() {
for (HoursGroup hoursGroup : hoursGroups) {
hoursGroup.getWorkingHours();
for (Criterion c : hoursGroup.getCriterions()) {
c.getType().getName();
}
}
}

View file

@ -65,7 +65,7 @@
<property name="percentage" access="field" />
<property name="fixedPercentage" access="field" />
<set name="criterions" table="CriterionHoursGroup"
<set name="criterions" table="CriterionHoursGroup" cascade="all"
access="field" inverse="false">
<key column="hoursGroupId" not-null="false" />
<many-to-many column="criterionId"

View file

@ -10,7 +10,7 @@ public interface IOrderElementModel {
public OrderElement getOrderElement();
public void setCurrent(OrderElement orderElement);
public void setCurrent(OrderElement orderElement, OrderModel order);
public List<CriterionType> getCriterionTypes();

View file

@ -1,5 +1,6 @@
package org.navalplanner.web.orders;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -25,6 +26,8 @@ public class OrderElementModel implements IOrderElementModel {
private OrderElement orderElement;
private OrderModel order;
@Autowired
private IOrderElementDao orderElementDao;
@ -46,7 +49,7 @@ public class OrderElementModel implements IOrderElementModel {
@Override
@Transactional(readOnly = true)
public void setCurrent(OrderElement orderElement) {
public void setCurrent(OrderElement orderElement, OrderModel order) {
// FIXME Review reattachment
boolean wasTransient = orderElement.isTransient();
Set<HoursGroup> transientHoursGroups = orderElement
@ -60,36 +63,36 @@ public class OrderElementModel implements IOrderElementModel {
hoursGroup.makeTransientAgain();
}
this.orderElement = orderElement;
this.order = order;
}
@Override
public List<CriterionType> getCriterionTypes() {
List<CriterionType> criterionTypes = criterionTypeService.getAll();
List<CriterionType> result = new ArrayList<CriterionType>();
if (mapCriterionTypes.isEmpty()) {
for (CriterionType criterionType : criterionTypes) {
mapCriterionTypes.put(criterionType.getName(), criterionType);
}
}
if (mapCriterionTypes.isEmpty())
loadCriterionTypes();
result.addAll(mapCriterionTypes.values());
return criterionTypes;
return result;
}
@Override
public CriterionType getCriterionTypeByName(String name) {
if (mapCriterionTypes.isEmpty()) {
for (CriterionType criterionType : criterionTypeService
.getAll()) {
mapCriterionTypes.put(criterionType.getName(), criterionType);
}
}
if (mapCriterionTypes.isEmpty())
loadCriterionTypes();
return mapCriterionTypes.get(name);
}
@Override
public List<Criterion> getCriterionsFor(CriterionType type) {
return (List<Criterion>) criterionService.getCriterionsFor(type);
private void loadCriterionTypes() {
for (CriterionType criterionType : criterionTypeService.getAll()) {
mapCriterionTypes.put(criterionType.getName(), criterionType);
}
}
@Override
public List<Criterion> getCriterionsFor(CriterionType type) {
return (List<Criterion>) order.getCriterionsFor(type);
}
}

View file

@ -1,7 +1,10 @@
package org.navalplanner.web.orders;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.Validate;
import org.hibernate.validator.ClassValidator;
@ -13,6 +16,10 @@ import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.orders.services.IOrderService;
import org.navalplanner.business.planner.services.ITaskElementService;
import org.navalplanner.business.resources.entities.Criterion;
import org.navalplanner.business.resources.entities.CriterionType;
import org.navalplanner.business.resources.services.CriterionService;
import org.navalplanner.business.resources.services.CriterionTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
@ -21,12 +28,22 @@ import org.springframework.transaction.annotation.Transactional;
/**
* Model for UI operations related to {@link Order}. <br />
*
* @author Óscar González Fernández <ogonzalez@igalia.com>
* @author Diego Pino García <dpino@igalia.com>
*/
@Service
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class OrderModel implements IOrderModel {
@Autowired
CriterionService criterionService;
@Autowired
CriterionTypeService criterionTypeService;
private static final Map<CriterionType, List<Criterion>> mapCriterions = new HashMap<CriterionType, List<Criterion>>();
private final IOrderService orderService;
private Order order;
@ -56,10 +73,23 @@ public class OrderModel implements IOrderModel {
return orderService.getOrders();
}
private void loadCriterions() {
mapCriterions.clear();
List<CriterionType> criterionTypes = criterionTypeService.getAll();
for (CriterionType criterionType : criterionTypes) {
List<Criterion> criterions = new ArrayList<Criterion>(
criterionService.getCriterionsFor(criterionType));
mapCriterions.put(criterionType, criterions);
}
}
@Override
@Transactional(readOnly = true)
public void prepareEditFor(Order order) {
Validate.notNull(order);
loadCriterions();
this.order = getFromDB(order);
this.orderElementTreeModel = new OrderElementTreeModel(this.order);
}
@ -74,6 +104,8 @@ public class OrderModel implements IOrderModel {
@Override
public void prepareForCreate() {
loadCriterions();
this.order = new Order();
this.orderElementTreeModel = new OrderElementTreeModel(this.order);
this.order.setInitDate(new Date());
@ -85,6 +117,7 @@ public class OrderModel implements IOrderModel {
InvalidValue[] invalidValues = orderValidator.getInvalidValues(order);
if (invalidValues.length > 0)
throw new ValidationException(invalidValues);
this.orderService.save(order);
}
@ -114,7 +147,7 @@ public class OrderModel implements IOrderModel {
@Override
public IOrderElementModel getOrderElementModel(OrderElement orderElement) {
orderElementModel.setCurrent(orderElement);
orderElementModel.setCurrent(orderElement, this);
return orderElementModel;
}
@ -134,4 +167,8 @@ public class OrderModel implements IOrderModel {
public boolean isAlreadyScheduled(Order order) {
return getFromDB(order).isSomeTaskElementScheduled();
}
public List<Criterion> getCriterionsFor(CriterionType criterionType) {
return mapCriterions.get(criterionType);
}
}