[Bug #962] Cancel action in "Progress assignment" window leave the Task as it was before editing

Remove new advanceMeasurements in every advanceAssignment when user clicks cancel

FEA: ItEr73S04BugFixing
This commit is contained in:
Diego Pino Garcia 2011-04-03 23:01:37 +02:00
parent 1663f5d627
commit 83efb2b4f9
6 changed files with 48 additions and 3 deletions

View file

@ -162,6 +162,15 @@ public class DirectAdvanceAssignment extends AdvanceAssignment {
getOrderElement().markAsDirtyLastAdvanceMeasurementForSpreading();
}
public void removeAdvanceMeasurements(
Set<AdvanceMeasurement> advanceMeasurements) {
for (AdvanceMeasurement each: advanceMeasurements) {
each.setAdvanceAssignment(null);
}
this.advanceMeasurements.removeAll(advanceMeasurements);
getOrderElement().markAsDirtyLastAdvanceMeasurementForSpreading();
}
public void clearAdvanceMeasurements() {
this.advanceMeasurements.clear();
if (getOrderElement() != null) {

View file

@ -119,4 +119,7 @@ public interface IManageOrderElementAdvancesModel {
void createPercentageAdvances(OrderElement orderElement)
throws DuplicateAdvanceAssignmentForOrderElementException,
DuplicateValueTrueReportGlobalAdvanceException;
void cancel();
}

View file

@ -118,6 +118,10 @@ public class ManageOrderElementAdvancesController extends
return manageOrderElementAdvancesModel.getAdvanceAssignments();
}
public void cancel() {
manageOrderElementAdvancesModel.cancel();
}
public boolean close() {
return save();
}

View file

@ -277,6 +277,30 @@ public class ManageOrderElementAdvancesModel implements
}
}
@Override
public void cancel() {
for (AdvanceAssignment each : listAdvanceAssignments) {
if (each instanceof DirectAdvanceAssignment) {
DirectAdvanceAssignment directAdvanceAssignment = (DirectAdvanceAssignment) each;
Set<AdvanceMeasurement> advanceMeasurements = getNewAdvanceMeasurementsFor(directAdvanceAssignment);
directAdvanceAssignment
.removeAdvanceMeasurements(advanceMeasurements);
}
}
}
private Set<AdvanceMeasurement> getNewAdvanceMeasurementsFor(
DirectAdvanceAssignment directAdvanceAssignment) {
Set<AdvanceMeasurement> result = new HashSet<AdvanceMeasurement>();
for (AdvanceMeasurement each : directAdvanceAssignment
.getAdvanceMeasurements()) {
if (each.getId() == null) {
result.add(each);
}
}
return result;
}
@Override
public boolean addNewLineAdvanceAssignment() {
DirectAdvanceAssignment newAdvance = DirectAdvanceAssignment.create();
@ -761,7 +785,6 @@ public class ManageOrderElementAdvancesModel implements
types.add(PredefinedAdvancedTypes.CHILDREN.getTypeName());
}
orderElementDAO.reattach(orderElement);
Set<IndirectAdvanceAssignment> indirects = getSpreadIndirectAdvanceAssignmentWithSameType(
orderElement, types);

View file

@ -39,6 +39,7 @@ import org.zkoss.ganttz.data.Task;
import org.zkoss.ganttz.extensions.IContextWithPlannerTask;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.SuspendNotAllowedException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Window;
@ -99,7 +100,13 @@ public class AdvanceAssignmentPlanningController extends GenericForwardComposer
manageOrderElementAdvancesController.openWindow(orderElement);
}
public void onClose(Event event) {
cancel();
event.stopPropagation();
}
public void cancel() {
manageOrderElementAdvancesController.cancel();
advanceAssignmentPlanningModel.cancel();
close();
}

View file

@ -56,8 +56,7 @@
title="${advanceAssignmentController.title}"
width="950px"
visible="false"
closable="true"
onClose="self.visible = false; event.stopPropagation();" >
closable="true" >
<vbox id="messagesAdvanceAssignmentContainer" />