[Bug #986] Prevent removing a label type that is being used by and orderelement

FEA: ItEr74S04BugFixing
This commit is contained in:
Diego Pino Garcia 2011-04-15 14:42:57 +02:00
parent 2c71128881
commit e6e9793a38
2 changed files with 69 additions and 15 deletions

View file

@ -48,6 +48,7 @@ import org.zkoss.zul.Button;
import org.zkoss.zul.Column;
import org.zkoss.zul.Constraint;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.ListModelExt;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Row;
@ -94,7 +95,7 @@ public class LabelTypeCRUDController extends GenericForwardComposer {
messagesEditWindow = new MessagesForUser(editWindow
.getFellowIfAny("messagesContainer"));
initializeLabelsGrid();
gridLabelTypes = (Grid) listWindow.getFellowIfAny("gridLabelTypes");
initializeLabelTypesGrid();
showListWindow();
newLabelTextbox = (Textbox) editWindow
.getFellowIfAny("newLabelTextbox");
@ -123,14 +124,59 @@ public class LabelTypeCRUDController extends GenericForwardComposer {
}
}
}
private boolean canRemoveLabel(Label label) {
if (label.isNewObject()) {
return true;
}
return label.getOrderElements().isEmpty();
}
});
}
private boolean canRemoveLabel(Label label) {
if (label.isNewObject()) {
return true;
}
return label.getOrderElements().isEmpty();
private void initializeLabelTypesGrid() {
gridLabelTypes = (Grid) listWindow.getFellowIfAny("labelTypes");
gridLabelTypes.addEventListener("onInitRender", new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
gridLabelTypes.renderAll();
final Rows rows = gridLabelTypes.getRows();
for (Iterator i = rows.getChildren().iterator(); i.hasNext();) {
final Row row = (Row) i.next();
final LabelType labelType = (LabelType) row.getValue();
Hbox hbox = (Hbox) row.getChildren().get(2);
Button btnDelete = (Button) hbox.getChildren().get(1);
if (!canRemoveLabelType(labelType)) {
btnDelete.setDisabled(true);
btnDelete.setImage("/common/img/ico_borrar_out.png");
btnDelete
.setHoverImage("/common/img/ico_borrar_out.png");
btnDelete.setTooltiptext("");
}
}
}
private boolean canRemoveLabelType(LabelType labelType) {
boolean canRemove = true;
if (labelType.isNewObject()) {
return canRemove;
}
// If at least one of its labels is being used by and
// orderelement, cannot remove labelType
for (Label each: labelType.getLabels()) {
if (!each.getOrderElements().isEmpty()) {
canRemove = false;
break;
}
}
return canRemove;
}
});
}
private void showListWindow() {

View file

@ -73,7 +73,23 @@ public class LabelTypeModel extends IntegrationEntityModel implements
@Override
@Transactional(readOnly=true)
public List<LabelType> getLabelTypes() {
return labelTypeDAO.getAll();
List<LabelType> result = labelTypeDAO.getAll();
initializeLabelTypes(result);
return result;
}
private void initializeLabelTypes(List<LabelType> labelTypes) {
for (LabelType each: labelTypes) {
initializeLabels(each.getLabels());
}
}
private Set<Label> initializeLabels(Set<Label> labels) {
for (Label each : labels) {
labelDAO.reattach(each);
each.getOrderElements().size();
}
return labels;
}
@Override
@ -198,14 +214,6 @@ public class LabelTypeModel extends IntegrationEntityModel implements
return labels;
}
private Set<Label> initializeLabels(Set<Label> labels) {
for (Label each: labels) {
labelDAO.reattach(each);
each.getOrderElements().size();
}
return labels;
}
@Override
public void addLabel(String value) {
Label label = Label.create("", value);