ItEr17S08ClasificacionTraballoItEr16S10: Save Criterions in HoursGroup
This commit is contained in:
parent
5b7c3f45c2
commit
02f7f37751
6 changed files with 68 additions and 23 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue