Bug #1342: Move initial order state to PlanningState and use it from Gantt view too

FEA: ItEr76S04BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2012-01-17 19:18:31 +01:00
parent e6459fafcd
commit 7bfe203d07
4 changed files with 22 additions and 11 deletions

View file

@ -703,7 +703,6 @@ public class OrderCRUDController extends GenericForwardComposer {
if (orderElementTreeController != null) {
orderElementTreeController.resetCellsMarkedAsModified();
}
initialStatus = ((Order) orderModel.getOrder()).getState();
updateDisabilitiesOnInterface();
refreshCodeTextboxesOnly();
getVisibility().showOnly(editWindow);
@ -965,7 +964,6 @@ public class OrderCRUDController extends GenericForwardComposer {
private void prepareEditWindow() {
addEditWindowIfNecessary();
initialStatus = ((Order) orderModel.getOrder()).getState();
updateDisabilitiesOnInterface();
setupOrderElementTreeController();
selectDefaultTab();
@ -1447,15 +1445,14 @@ public class OrderCRUDController extends GenericForwardComposer {
private boolean readOnly = true;
private OrderStatusEnum initialStatus;
private void updateDisabilitiesOnInterface() {
Order order = (Order) orderModel.getOrder();
boolean permissionForWriting = orderModel.userCanWrite(order,
SecurityUtils.getSessionUserLoginName());
boolean isInStoredState = order.getState() == OrderStatusEnum.STORED;
boolean isInitiallyStored = initialStatus == OrderStatusEnum.STORED;
boolean isInitiallyStored = orderModel.getPlanningState()
.getSavedOrderState() == OrderStatusEnum.STORED;
readOnly = !permissionForWriting || isInStoredState;

View file

@ -327,8 +327,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
.calculateDefaultLevel(configuration);
configureInitialZoomLevelFor(planner, defaultZoomLevel);
final boolean writingAllowed = isWritingAllowedOn(planningState
.getOrder());
final boolean writingAllowed = isWritingAllowedOnOrder();
ISaveCommand saveCommand = setupSaveCommand(configuration,
writingAllowed);
setupEditingCapabilities(configuration, writingAllowed);
@ -975,15 +974,16 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
}
private boolean isWritingAllowedOn(Order order) {
if (order.getState() == OrderStatusEnum.STORED) {
//STORED orders can't be saved, independently of user permissions
private boolean isWritingAllowedOnOrder() {
if (planningState.getSavedOrderState() == OrderStatusEnum.STORED
&& planningState.getOrder().getState() == OrderStatusEnum.STORED) {
// STORED orders can't be saved, independently of user permissions
return false;
}
if (SecurityUtils.isUserInRole(UserRole.ROLE_EDIT_ALL_ORDERS)) {
return true;
}
return thereIsWriteAuthorizationFor(order);
return thereIsWriteAuthorizationFor(planningState.getOrder());
}
private boolean thereIsWriteAuthorizationFor(Order order) {

View file

@ -44,6 +44,7 @@ import org.libreplan.business.orders.daos.IOrderDAO;
import org.libreplan.business.orders.entities.HoursGroup;
import org.libreplan.business.orders.entities.Order;
import org.libreplan.business.orders.entities.OrderElement;
import org.libreplan.business.orders.entities.OrderStatusEnum;
import org.libreplan.business.orders.entities.TaskSource;
import org.libreplan.business.orders.entities.TaskSource.IOptionalPersistence;
import org.libreplan.business.orders.entities.TaskSource.TaskSourceSynchronization;
@ -687,6 +688,8 @@ public class PlanningStateCreator {
private List<OrderAuthorization> orderAuthorizationsAddition = new ArrayList<OrderAuthorization>();
private List<OrderAuthorization> orderAuthorizationsRemoval = new ArrayList<OrderAuthorization>();
private OrderStatusEnum savedOrderState;
public PlanningState(Order order,
Collection<? extends Resource> initialResources,
Scenario currentScenario) {
@ -699,6 +702,7 @@ public class PlanningStateCreator {
.loadRequiredDataFor(new HashSet<Resource>(initialResources));
associateWithScenario(this.resources);
this.orderAuthorizations = loadOrderAuthorizations();
this.savedOrderState = order.getState();
}
private List<OrderAuthorization> loadOrderAuthorizations() {
@ -1061,6 +1065,14 @@ public class PlanningStateCreator {
orderAuthorizationsRemoval.clear();
}
public OrderStatusEnum getSavedOrderState() {
return savedOrderState;
}
public void updateSavedOrderState() {
savedOrderState = order.getState();
}
}
public interface IAllocationCriteria {

View file

@ -367,6 +367,8 @@ public class SaveCommandBuilder {
saveOrderAuthorizations();
removeTaskElementsWithTaskSourceNull();
state.updateSavedOrderState();
}
private void removeTaskElementsWithTaskSourceNull() {