[Bug #967] Transient instance editing task in WBS after set criterion and save

If a treeitem is selected and a new element is added, the selected item
is converted into a container (newObject) and the selected item is
promoted to a child od this new container.

The criteria of the original element is copied to new element
(container) and removed from the original element. This causes that the
child has a new IndirectCriterionRequirement, which is a new object.

The error happened when doing a reattachment of the Order being this new
IndirectCriterionRequirement a transient entity.

Finally, we have decided to change the business logic of how
criterionRequirements are copied when a treeitem is promoted to a
container. What happens now is that the original item retains its
criterionRequirement and the newObject(container) has empty
criterionRequirements.

FEA: ItEr74S04BugFixing
This commit is contained in:
Diego Pino Garcia 2011-04-06 13:23:58 +02:00
parent 72a3f23bbc
commit 0f382552b1

View file

@ -38,7 +38,6 @@ import org.navalplanner.business.advance.entities.AdvanceType;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment;
import org.navalplanner.business.requirements.entities.CriterionRequirement;
import org.navalplanner.business.requirements.entities.DirectCriterionRequirement;
import org.navalplanner.business.templates.entities.OrderLineTemplate;
public class OrderLine extends OrderElement {
@ -113,12 +112,6 @@ public class OrderLine extends OrderElement {
result.setInitDate(getInitDate());
result.setDeadline(getDeadline());
// copy the criterion requirements to container
copyRequirementToOrderElement(result);
// removed the direct criterion requirements
removeAllDirectCriterionRequirement();
if (getName() != null) {
this.setName(getName() + " (copy)");
}
@ -133,14 +126,6 @@ public class OrderLine extends OrderElement {
return result;
}
private void removeAllDirectCriterionRequirement() {
Set<DirectCriterionRequirement> directRequirements = new HashSet<DirectCriterionRequirement>(
getDirectCriterionRequirement());
for (DirectCriterionRequirement requirement : directRequirements) {
removeDirectCriterionRequirement(requirement);
}
}
@Valid
@Override
public List<HoursGroup> getHoursGroups() {
@ -249,11 +234,6 @@ public class OrderLine extends OrderElement {
newRequirement);
}
protected void copyRequirementToOrderElement(OrderLineGroup container) {
criterionRequirementHandler.copyRequirementToOrderLineGroup(this,
container);
}
@Override
public DirectAdvanceAssignment getReportGlobalAdvanceAssignment() {
for (DirectAdvanceAssignment directAdvanceAssignment : getDirectAdvanceAssignments()) {