Bug #1342: Move initial order state to PlanningState and use it from Gantt view too
FEA: ItEr76S04BugFixing
This commit is contained in:
parent
e6459fafcd
commit
7bfe203d07
4 changed files with 22 additions and 11 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -367,6 +367,8 @@ public class SaveCommandBuilder {
|
|||
saveOrderAuthorizations();
|
||||
|
||||
removeTaskElementsWithTaskSourceNull();
|
||||
|
||||
state.updateSavedOrderState();
|
||||
}
|
||||
|
||||
private void removeTaskElementsWithTaskSourceNull() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue