[Bug #1038] Added test and fixed bug for repeated labels in WBS.
FEA: ItEr74S07WBSTreeRefactoring
This commit is contained in:
parent
a468460246
commit
8794d7d032
3 changed files with 53 additions and 1 deletions
|
|
@ -579,6 +579,18 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
labels.add(label);
|
||||
}
|
||||
|
||||
protected void updateLabels() {
|
||||
if (parent != null) {
|
||||
Set<Label> toRemove = new HashSet<Label>();
|
||||
for (Label each : labels) {
|
||||
if (!parent.checkAncestorsNoOtherLabelRepeated(each)) {
|
||||
toRemove.add(each);
|
||||
}
|
||||
}
|
||||
labels.removeAll(toRemove);
|
||||
}
|
||||
}
|
||||
|
||||
public void removeLabel(Label label) {
|
||||
labels.remove(label);
|
||||
}
|
||||
|
|
@ -1073,7 +1085,7 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
return false;
|
||||
}
|
||||
|
||||
private boolean checkAncestorsNoOtherLabelRepeated(Label newLabel) {
|
||||
protected boolean checkAncestorsNoOtherLabelRepeated(Label newLabel) {
|
||||
for (Label label : labels) {
|
||||
if (label.isEqualTo(newLabel)) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ public class OrderLineGroup extends OrderElement implements
|
|||
@Override
|
||||
protected void onChildAddedAdditionalActions(OrderElement newChild) {
|
||||
updateCriterionRequirements();
|
||||
newChild.updateLabels();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -207,6 +207,10 @@ public class OrderElementTreeModelTest {
|
|||
orderElement.addLabel(label);
|
||||
}
|
||||
|
||||
private void addSameLabel(OrderElement orderElement) {
|
||||
orderElement.addLabel(label);
|
||||
}
|
||||
|
||||
private void addMaterialAssignment(OrderElement orderElement) {
|
||||
materialAssignment = MaterialAssignment.create(Material
|
||||
.createUnvalidated("material-code", "material-description",
|
||||
|
|
@ -1083,4 +1087,39 @@ public class OrderElementTreeModelTest {
|
|||
assertNull(element2.getAdvanceAssignmentByType(advanceType));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkMoveOrderLineWithLabelToOrderLineGroupWithSameLabel() {
|
||||
model.addElement("element", 100);
|
||||
model.addElementAt(order.getChildren().get(0), "element2", 50);
|
||||
|
||||
OrderLineGroup container = (OrderLineGroup) order.getChildren().get(0);
|
||||
|
||||
OrderLine element = null;
|
||||
OrderLine element2 = null;
|
||||
for (OrderElement each : container.getChildren()) {
|
||||
if (each.getName().equals("element")) {
|
||||
element = (OrderLine) each;
|
||||
} else if (each.getName().equals("element2")) {
|
||||
element2 = (OrderLine) each;
|
||||
}
|
||||
}
|
||||
|
||||
model.unindent(element2);
|
||||
|
||||
addLabel(container);
|
||||
addSameLabel(element2);
|
||||
|
||||
model.move(element2, container);
|
||||
|
||||
assertTrue(order.getLabels().isEmpty());
|
||||
|
||||
assertThat(container.getLabels().size(), equalTo(1));
|
||||
Label label1 = container.getLabels().iterator().next();
|
||||
Label label2 = label;
|
||||
assertThat(container.getLabels().iterator().next(), equalTo(label));
|
||||
|
||||
assertTrue(element.getLabels().isEmpty());
|
||||
assertTrue(element2.getLabels().isEmpty());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue