ItEr40S16CUImportacionOrganizacionsTraballoItEr39S17: Added some constraints on behaviour when you assign labels to an order element from the interface.
This commit is contained in:
parent
04a17c6542
commit
b446658fe2
4 changed files with 87 additions and 15 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue