ItEr19S15ProbasModuloRecursosItEr14S12: Modified OrderLine creation method in order to create default HoursGroup without fixed percentage.

* navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java:
	* navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLine.java:
	Renamed method "createOrderLineWithUnfixedHours" to "createOrderLineWithUnfixedPercentage".
	(updateHoursGroups) Fixed problem with HoursGroup no fixed with 0 hours.
	* navalplanner-business/src/test/java/org/navalplanner/business/test/orders/entities/OrderLineTest.java:
	(testSetWorkHoursHoursGroupNoFixedZeroValue) Added new test to check a case with two HoursGroup with 0 hours.
This commit is contained in:
Manuel Rego Casasnovas 2009-07-30 11:12:44 +02:00 committed by Javier Moran Rua
parent 3b705a8fc8
commit 82c4e86dae
3 changed files with 43 additions and 6 deletions

View file

@ -8,11 +8,11 @@ import java.util.Set;
public class OrderLine extends OrderElement {
public static OrderLine createOrderLineWithUnfixedHours(int hours) {
public static OrderLine createOrderLineWithUnfixedPercentage(int hours) {
OrderLine result = new OrderLine();
HoursGroup hoursGroup = new HoursGroup();
result.addHoursGroup(hoursGroup);
hoursGroup.setFixedPercentage(true);
hoursGroup.setFixedPercentage(false);
hoursGroup.setPercentage(new BigDecimal(1));
hoursGroup.setWorkingHours(hours);
return result;
@ -155,8 +155,13 @@ public class OrderLine extends OrderElement {
Integer newNoFixed = workHours - newTotal;
for (HoursGroup hoursGroup : noFixedGroups) {
Integer newHours = (int) ((float) hoursGroup.getWorkingHours()
/ oldNoFixed * newNoFixed);
Integer newHours;
if (oldNoFixed == 0) {
newHours = (int) ((float) newNoFixed / hoursGroups.size());
} else {
newHours = (int) ((float) hoursGroup.getWorkingHours()
/ oldNoFixed * newNoFixed);
}
hoursGroup.setWorkingHours(newHours);
newHoursGroups.add(hoursGroup);

View file

@ -580,6 +580,38 @@ public class OrderLineTest {
}
/**
* An {@link OrderLine} with two {@link HoursGroup} of 0h NO_FIXED. Trying
* to set work hours of {@link OrderLine} to 200h. Expected:
* {@link OrderLine} with 200h. {@link HoursGroup} with 100h and
* {@link HoursGroup} with 100h.
*/
@Test
public void testSetWorkHoursHoursGroupNoFixedZeroValue() {
OrderLine orderLine = new OrderLine();
HoursGroup hoursGroup = new HoursGroup(orderLine);
hoursGroup.setWorkingHours(0);
HoursGroup hoursGroup2 = new HoursGroup(orderLine);
hoursGroup2.setWorkingHours(0);
orderLine.addHoursGroup(hoursGroup);
orderLine.addHoursGroup(hoursGroup2);
assertThat(orderLine.getWorkHours(), equalTo(0));
try {
orderLine.setWorkHours(200);
} catch (IllegalArgumentException e) {
fail("It should not throw an exception");
}
assertThat(orderLine.getWorkHours(), equalTo(200));
assertThat(orderLine.getHoursGroups().size(), equalTo(2));
assertThat(hoursGroup.getWorkingHours(), equalTo(100));
assertThat(hoursGroup2.getWorkingHours(), equalTo(100));
}
@Test
public void testAddNewEmptyHoursGroup() {
OrderLine orderLine = new OrderLine();
@ -714,7 +746,7 @@ public class OrderLineTest {
int[] hoursValues = { 0, 100, 10, 30 };
for (int hours : hoursValues) {
OrderLine orderLine = OrderLine
.createOrderLineWithUnfixedHours(hours);
.createOrderLineWithUnfixedPercentage(hours);
assertThat(orderLine.getWorkHours(), equalTo(hours));
assertThat(orderLine.getHoursGroups().size(), equalTo(1));
orderLine.setWorkHours(20);

View file

@ -54,7 +54,7 @@ public class OrderElementTreeModel extends SimpleTreeModel {
private OrderElement createNewOrderElement() {
OrderElement newOrderElement = OrderLine
.createOrderLineWithUnfixedHours(0);
.createOrderLineWithUnfixedPercentage(0);
newOrderElement.setName("New Order Element");
return newOrderElement;
}