ItEr40S16CUImportacionOrganizacionsTraballoItEr39S17: Added some constraints on behaviour when you assign labels to an order element from the interface.

This commit is contained in:
Manuel Rego Casasnovas 2009-12-23 17:23:15 +01:00 committed by Javier Moran Rua
parent 04a17c6542
commit b446658fe2
4 changed files with 87 additions and 15 deletions

View file

@ -87,4 +87,17 @@ public class Label extends BaseEntity {
public void removeOrderElement(OrderElement orderElement) {
orderElements.add(orderElement);
}
public boolean isEqualTo(Label label) {
if ((this.getName() != null) && (label.getName() != null)
&& (this.getType() != null) && (label.getType() != null)
&& (this.getType().getName() != null)
&& (label.getType().getName() != null)
&& this.getName().equals(label.getName())
&& this.getType().getName().equals(label.getType().getName())) {
return true;
}
return false;
}
}

View file

@ -371,6 +371,15 @@ public abstract class OrderElement extends BaseEntity {
public void addLabel(Label label) {
Validate.notNull(label);
if (!checkAncestorsNoOtherLabelRepeated(label)) {
throw new IllegalArgumentException(
_("Some ancestor has the same label assigned, "
+ "so this element is already inheriting this label"));
}
removeLabelOnChildren(label);
labels.add(label);
}
@ -763,19 +772,46 @@ public abstract class OrderElement extends BaseEntity {
private boolean containsLabel(HashSet<Label> labels, Label label) {
for (Label each : labels) {
if ((each.getName() != null)
&& (label.getName() != null)
&& (each.getType() != null)
&& (label.getType() != null)
&& (each.getType().getName() != null)
&& (label.getType().getName() != null)
&& each.getName().equals(label.getName())
&& each.getType().getName().equals(
label.getType().getName())) {
if (each.isEqualTo(label)) {
return true;
}
}
return false;
}
private boolean checkAncestorsNoOtherLabelRepeated(Label newLabel) {
for (Label label : labels) {
if (label.equals(newLabel)) {
return false;
}
}
if (parent != null) {
if (!((OrderElement) parent)
.checkAncestorsNoOtherLabelRepeated(newLabel)) {
return false;
}
}
return true;
}
private void removeLabelOnChildren(Label newLabel) {
Label toRemove = null;
for (Label label : labels) {
if (label.equals(newLabel)) {
toRemove = label;
break;
}
}
if (toRemove != null) {
removeLabel(toRemove);
}
for (OrderElement child : getChildren()) {
child.removeLabelOnChildren(newLabel);
}
}
}

View file

@ -116,7 +116,11 @@ public class AssignedLabelsToOrderElementController extends
if (isAssigned(label)) {
throw new WrongValueException(bdLabels, _("already assigned"));
}
assignLabel(label);
try {
assignLabel(label);
} catch (IllegalArgumentException e) {
throw new WrongValueException(bdLabels, e.getMessage());
}
bdLabels.clear();
}
@ -155,7 +159,11 @@ public class AssignedLabelsToOrderElementController extends
_("already assigned"));
}
}
assignLabel(label);
try {
assignLabel(label);
} catch (IllegalArgumentException e) {
throw new WrongValueException(txtLabelName, e.getMessage());
}
clear(txtLabelName);
}

View file

@ -74,11 +74,27 @@ public class AssignedLabelsToOrderElementModel implements
private void initializeOrderElement(OrderElement orderElement) {
reattachLabels();
initialize(orderElement);
OrderElement parent = orderElement.getParent();
while (parent != null) {
initialize(parent);
parent = parent.getParent();
}
initializeChildren(orderElement);
}
private void initializeChildren(OrderElement orderElement) {
initialize(orderElement);
for (OrderElement child : orderElement.getChildren()) {
initializeChildren(child);
}
}
private void initialize(OrderElement orderElement) {
orderDAO.reattach(orderElement);
orderElement.getName();
if (orderElement.getParent() != null) {
orderElement.getParent().getName();
}
initializeLabels(orderElement.getLabels());
}
@ -117,7 +133,6 @@ public class AssignedLabelsToOrderElementModel implements
reattachLabels();
OrderLineGroup parent = orderElement.getParent();
while (parent != null) {
initializeOrderElement(parent);
result.addAll(parent.getLabels());
parent = parent.getParent();
}