ItEr40S16CUImportacionOrganizacionsTraballoItEr39S17: Implemented code to update hours groups of order elements. Added unit test.
This commit is contained in:
parent
06cb3bda27
commit
c5c60ad1cb
3 changed files with 113 additions and 1 deletions
|
|
@ -476,4 +476,22 @@ public class OrderLine extends OrderElement {
|
|||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
public boolean containsHoursGroup(String name) {
|
||||
for (HoursGroup hoursGroup : getHoursGroups()) {
|
||||
if (hoursGroup.getName().equals(name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public HoursGroup getHoursGroup(String name) {
|
||||
for (HoursGroup hoursGroup : getHoursGroups()) {
|
||||
if (hoursGroup.getName().equals(name)) {
|
||||
return hoursGroup;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -258,6 +258,17 @@ public final class OrderElementConverter {
|
|||
throw new IncompatibleTypeException(orderElement.getCode(),
|
||||
OrderLine.class, orderElement.getClass());
|
||||
}
|
||||
|
||||
for (HoursGroupDTO hoursGroupDTO : ((OrderLineDTO) orderElementDTO).hoursGroups) {
|
||||
if (((OrderLine) orderElement)
|
||||
.containsHoursGroup(hoursGroupDTO.name)) {
|
||||
update(((OrderLine) orderElement)
|
||||
.getHoursGroup(hoursGroupDTO.name), hoursGroupDTO);
|
||||
} else {
|
||||
((OrderLine) orderElement)
|
||||
.addHoursGroup(toEntity(hoursGroupDTO));
|
||||
}
|
||||
}
|
||||
} else { // orderElementDTO instanceof OrderLineGroupDTO
|
||||
if (orderElementDTO instanceof OrderDTO) {
|
||||
if (!(orderElement instanceof Order)) {
|
||||
|
|
@ -302,6 +313,23 @@ public final class OrderElementConverter {
|
|||
}
|
||||
}
|
||||
|
||||
public final static void update(HoursGroup hoursGroup,
|
||||
HoursGroupDTO hoursGroupDTO) {
|
||||
if (!hoursGroup.getName().equals(hoursGroupDTO.name)) {
|
||||
throw new RuntimeException(
|
||||
_("Not the same hours group, impossible to update"));
|
||||
}
|
||||
|
||||
if (hoursGroupDTO.workingHours != null) {
|
||||
hoursGroup.setWorkingHours(hoursGroupDTO.workingHours);
|
||||
}
|
||||
|
||||
if (hoursGroupDTO.resourceType != null) {
|
||||
hoursGroup.setResourceType(ResourceEnumConverter
|
||||
.fromDTO(hoursGroupDTO.resourceType));
|
||||
}
|
||||
}
|
||||
|
||||
public final static void update(MaterialAssignment materialAssignment,
|
||||
MaterialAssignmentDTO materialAssignmentDTO) {
|
||||
if (!materialAssignment.getMaterial().getCode().equals(
|
||||
|
|
|
|||
|
|
@ -47,7 +47,10 @@ import org.navalplanner.business.labels.entities.Label;
|
|||
import org.navalplanner.business.materials.entities.MaterialAssignment;
|
||||
import org.navalplanner.business.orders.daos.IOrderDAO;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.HoursGroup;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.orders.entities.OrderLine;
|
||||
import org.navalplanner.business.resources.entities.ResourceEnum;
|
||||
import org.navalplanner.ws.common.api.ConstraintViolationDTO;
|
||||
import org.navalplanner.ws.common.api.IncompatibleTypeException;
|
||||
import org.navalplanner.ws.common.api.InstanceConstraintViolationsDTO;
|
||||
|
|
@ -681,4 +684,67 @@ public class OrderElementServiceTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateHoursGroup() throws InstanceNotFoundException,
|
||||
IncompatibleTypeException {
|
||||
String code = "order-code";
|
||||
try {
|
||||
orderElementDAO.findUniqueByCode(code);
|
||||
fail("Order with code " + code + " already exists");
|
||||
} catch (InstanceNotFoundException e) {
|
||||
// It should throw an exception
|
||||
}
|
||||
|
||||
OrderDTO orderDTO = new OrderDTO();
|
||||
orderDTO.name = "Order name";
|
||||
orderDTO.code = code;
|
||||
orderDTO.initDate = new Date();
|
||||
|
||||
OrderLineDTO orderLineDTO = new OrderLineDTO();
|
||||
orderLineDTO.name = "Order line";
|
||||
orderLineDTO.code = "order-line-code";
|
||||
HoursGroupDTO hoursGroupDTO = new HoursGroupDTO("hours-group",
|
||||
ResourceEnumDTO.WORKER, 1000);
|
||||
orderLineDTO.hoursGroups.add(hoursGroupDTO);
|
||||
orderDTO.children.add(orderLineDTO);
|
||||
|
||||
List<InstanceConstraintViolationsDTO> instanceConstraintViolationsList = orderElementService
|
||||
.addOrder(orderDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(0));
|
||||
|
||||
OrderElement orderElement = orderElementDAO.findUniqueByCode(code);
|
||||
assertNotNull(orderElement);
|
||||
|
||||
OrderLine orderLine = (OrderLine) orderElementDAO
|
||||
.findUniqueByCode("order-line-code");
|
||||
assertNotNull(orderLine);
|
||||
assertThat(orderLine.getHoursGroups().size(), equalTo(1));
|
||||
|
||||
orderLineDTO.hoursGroups.iterator().next().workingHours = 1500;
|
||||
HoursGroupDTO hoursGroupDTO2 = new HoursGroupDTO("hours-group2",
|
||||
ResourceEnumDTO.WORKER, 2000);
|
||||
orderLineDTO.hoursGroups.add(hoursGroupDTO2);
|
||||
|
||||
instanceConstraintViolationsList = orderElementService
|
||||
.updateOrder(orderDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(0));
|
||||
|
||||
orderElement = orderElementDAO.findUniqueByCode(code);
|
||||
assertNotNull(orderElement);
|
||||
|
||||
orderLine = (OrderLine) orderElementDAO
|
||||
.findUniqueByCode("order-line-code");
|
||||
assertNotNull(orderLine);
|
||||
assertThat(orderLine.getHoursGroups().size(), equalTo(2));
|
||||
|
||||
for (HoursGroup hoursGroup : orderLine.getHoursGroups()) {
|
||||
assertThat(hoursGroup.getName(), anyOf(equalTo("hours-group"),
|
||||
equalTo("hours-group2")));
|
||||
assertThat(hoursGroup.getWorkingHours(), anyOf(
|
||||
equalTo(1500), equalTo(2000)));
|
||||
assertThat(hoursGroup.getResourceType(),
|
||||
equalTo(ResourceEnum.WORKER));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue