ItEr34S08ValidacionEProbasFuncionaisItEr33S08: When adding and removing HoursGroup the TaskSource is updated if needed
This commit is contained in:
parent
3e9e560d4a
commit
41a49e5170
3 changed files with 54 additions and 2 deletions
|
|
@ -112,6 +112,7 @@ public abstract class OrderElement extends BaseEntity {
|
|||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<SchedulingState> getChildrenStates() {
|
||||
List<SchedulingState> result = new ArrayList<SchedulingState>();
|
||||
for (OrderElement each : getChildren()) {
|
||||
|
|
@ -127,6 +128,30 @@ public abstract class OrderElement extends BaseEntity {
|
|||
this.parent = parent;
|
||||
}
|
||||
|
||||
protected void hoursGroupAdded(HoursGroup hoursGroup) {
|
||||
if (isSchedulingPoint()) {
|
||||
taskSource.added(hoursGroup);
|
||||
} else if (belongsToSchedulingPoint()) {
|
||||
getParent().hoursGroupAdded(hoursGroup);
|
||||
}
|
||||
}
|
||||
|
||||
protected void hoursGroupDeleted(HoursGroup hoursGroup) {
|
||||
if (isSchedulingPoint()) {
|
||||
taskSource.removed(hoursGroup);
|
||||
} else if (belongsToSchedulingPoint()) {
|
||||
getParent().hoursGroupDeleted(hoursGroup);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isSchedulingPoint() {
|
||||
return schedulingStateType == Type.SCHEDULING_POINT;
|
||||
}
|
||||
|
||||
private boolean belongsToSchedulingPoint() {
|
||||
return schedulingStateType.belongsToSchedulingPoint();
|
||||
}
|
||||
|
||||
public abstract Integer getWorkHours();
|
||||
|
||||
public abstract List<HoursGroup> getHoursGroups();
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ package org.navalplanner.business.orders.entities;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
@ -117,11 +118,13 @@ public class OrderLine extends OrderElement {
|
|||
hoursGroup.setParentOrderLine(this);
|
||||
hoursGroups.add(hoursGroup);
|
||||
recalculateHoursGroups();
|
||||
hoursGroupAdded(hoursGroup);
|
||||
}
|
||||
|
||||
public void deleteHoursGroup(HoursGroup hoursGroup) {
|
||||
hoursGroups.remove(hoursGroup);
|
||||
recalculateHoursGroups();
|
||||
hoursGroupDeleted(hoursGroup);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -145,7 +148,7 @@ public class OrderLine extends OrderElement {
|
|||
hoursGroup.setWorkingHours(workHours);
|
||||
hoursGroup.setPercentage((new BigDecimal(1).setScale(2)));
|
||||
|
||||
hoursGroups.add(hoursGroup);
|
||||
addHoursGroup(hoursGroup);
|
||||
} else {
|
||||
|
||||
if (!isTotalHoursValid(workHours)) {
|
||||
|
|
@ -235,12 +238,28 @@ public class OrderLine extends OrderElement {
|
|||
}
|
||||
|
||||
// Set the attribute with the new hours group calculated
|
||||
hoursGroups = newHoursGroups;
|
||||
deleteHoursGroups(hoursGroups);
|
||||
addHoursGroups(newHoursGroups);
|
||||
|
||||
// Re-calculate percentages
|
||||
recalculateHoursGroups();
|
||||
}
|
||||
|
||||
private void addHoursGroups(Collection<? extends HoursGroup> newHoursGroups) {
|
||||
hoursGroups.addAll(newHoursGroups);
|
||||
for (HoursGroup each : newHoursGroups) {
|
||||
hoursGroupAdded(each);
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteHoursGroups(
|
||||
Collection<? extends HoursGroup> oldHoursGroups) {
|
||||
hoursGroups.removeAll(oldHoursGroups);
|
||||
for (HoursGroup each : oldHoursGroups) {
|
||||
hoursGroupDeleted(each);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the desired total number of hours is valid taking into account
|
||||
* {@link HoursGroup} policy restrictions.
|
||||
|
|
|
|||
|
|
@ -50,4 +50,12 @@ public class TaskSource extends BaseEntity {
|
|||
.getHoursGroups());
|
||||
}
|
||||
|
||||
public void added(HoursGroup hoursGroup) {
|
||||
hoursGroups.add(hoursGroup);
|
||||
}
|
||||
|
||||
public void removed(HoursGroup hoursGroup) {
|
||||
hoursGroups.remove(hoursGroup);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue