ItEr58S14RecalculosConexionEscenariosItEr57S15: Modify modificationByOwnerTimestamp when saving a scheduling.
This commit is contained in:
parent
2fb906338e
commit
41e84e8bea
4 changed files with 64 additions and 12 deletions
|
|
@ -48,6 +48,7 @@ public class OrderVersion extends BaseEntity {
|
|||
private OrderVersion(Scenario ownerScenario) {
|
||||
Validate.notNull(ownerScenario);
|
||||
this.ownerScenario = ownerScenario;
|
||||
this.modificationByOwnerTimestamp = new DateTime();
|
||||
}
|
||||
|
||||
@NotNull(message = "owner scenario not specified")
|
||||
|
|
@ -59,4 +60,8 @@ public class OrderVersion extends BaseEntity {
|
|||
return scenario.getId().equals(ownerScenario.getId());
|
||||
}
|
||||
|
||||
public void savingThroughOwner() {
|
||||
modificationByOwnerTimestamp = new DateTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,6 +70,7 @@ import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
|||
import org.navalplanner.business.resources.entities.IAssignmentsOnResourceCalculator;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.scenarios.IScenarioManager;
|
||||
import org.navalplanner.business.scenarios.daos.IOrderVersionDAO;
|
||||
import org.navalplanner.business.scenarios.entities.OrderVersion;
|
||||
import org.navalplanner.business.scenarios.entities.Scenario;
|
||||
import org.navalplanner.business.users.daos.IOrderAuthorizationDAO;
|
||||
|
|
@ -254,6 +255,9 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
|
||||
private Scenario currentScenario;
|
||||
|
||||
@Autowired
|
||||
private IOrderVersionDAO orderVersionDAO;
|
||||
|
||||
private final class ReturningNewAssignments implements
|
||||
IAssignmentsOnResourceCalculator {
|
||||
|
||||
|
|
@ -979,7 +983,9 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
|
|||
|
||||
private IScenarioInfo buildScenarioInfo(Order orderReloaded) {
|
||||
if (orderReloaded.isUsingTheOwnerScenario()) {
|
||||
return PlanningState.ownerScenarioInfo(currentScenario);
|
||||
return PlanningState.ownerScenarioInfo(orderVersionDAO,
|
||||
currentScenario,
|
||||
currentScenario.getOrderVersion(orderReloaded));
|
||||
}
|
||||
final List<DayAssignment> previousAssignments = orderReloaded
|
||||
.getDayAssignments();
|
||||
|
|
|
|||
|
|
@ -40,14 +40,18 @@ import org.navalplanner.business.resources.daos.IResourceDAO;
|
|||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.scenarios.daos.IOrderVersionDAO;
|
||||
import org.navalplanner.business.scenarios.daos.IScenarioDAO;
|
||||
import org.navalplanner.business.scenarios.entities.OrderVersion;
|
||||
import org.navalplanner.business.scenarios.entities.Scenario;
|
||||
|
||||
public abstract class PlanningState {
|
||||
|
||||
public static IScenarioInfo ownerScenarioInfo(Scenario scenario) {
|
||||
return new UsingOwnerScenario(scenario);
|
||||
public static IScenarioInfo ownerScenarioInfo(
|
||||
IOrderVersionDAO orderVersionDAO, Scenario scenario,
|
||||
OrderVersion currentVersionForScenario) {
|
||||
return new UsingOwnerScenario(orderVersionDAO, scenario,
|
||||
currentVersionForScenario);
|
||||
}
|
||||
|
||||
public static IScenarioInfo forNotOwnerScenario(Order order,
|
||||
|
|
@ -74,15 +78,53 @@ public abstract class PlanningState {
|
|||
public void afterCommit();
|
||||
}
|
||||
|
||||
private static class UsingOwnerScenario implements IScenarioInfo {
|
||||
private static class EmptySchedulingScenarioInfo implements IScenarioInfo {
|
||||
|
||||
private final Scenario currentScenario;
|
||||
|
||||
public UsingOwnerScenario(Scenario currentScenario) {
|
||||
Validate.notNull(currentScenario);
|
||||
public EmptySchedulingScenarioInfo(Scenario currentScenario) {
|
||||
this.currentScenario = currentScenario;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCommit() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Scenario getCurrentScenario() {
|
||||
return currentScenario;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUsingTheOwnerScenario() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveVersioningInfo(IOrderDAO orderDAO,
|
||||
IScenarioDAO scenarioDAO, ITaskSourceDAO taskSourceDAO)
|
||||
throws IllegalStateException {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class UsingOwnerScenario implements IScenarioInfo {
|
||||
|
||||
private final Scenario currentScenario;
|
||||
private final OrderVersion currentVersionForScenario;
|
||||
private final IOrderVersionDAO orderVersionDAO;
|
||||
|
||||
public UsingOwnerScenario(IOrderVersionDAO orderVersionDAO,
|
||||
Scenario currentScenario,
|
||||
OrderVersion currentVersionForScenario) {
|
||||
Validate.notNull(orderVersionDAO);
|
||||
Validate.notNull(currentScenario);
|
||||
Validate.notNull(currentVersionForScenario);
|
||||
this.orderVersionDAO = orderVersionDAO;
|
||||
this.currentScenario = currentScenario;
|
||||
this.currentVersionForScenario = currentVersionForScenario;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUsingTheOwnerScenario() {
|
||||
return true;
|
||||
|
|
@ -91,7 +133,8 @@ public abstract class PlanningState {
|
|||
@Override
|
||||
public void saveVersioningInfo(IOrderDAO orderDAO,
|
||||
IScenarioDAO scenarioDAO, ITaskSourceDAO taskSourceDAO) throws IllegalStateException {
|
||||
throw new IllegalStateException("is using the owner scenario");
|
||||
currentVersionForScenario.savingThroughOwner();
|
||||
orderVersionDAO.save(currentVersionForScenario);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -381,7 +424,7 @@ public abstract class PlanningState {
|
|||
|
||||
@Override
|
||||
public IScenarioInfo getScenarioInfo() {
|
||||
return new UsingOwnerScenario(currentScenario);
|
||||
return new EmptySchedulingScenarioInfo(currentScenario);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -152,10 +152,8 @@ public class SaveCommand implements ISaveCommand {
|
|||
}
|
||||
|
||||
private void doTheSaving() {
|
||||
if (!state.getScenarioInfo().isUsingTheOwnerScenario()) {
|
||||
state.getScenarioInfo().saveVersioningInfo(orderDAO, scenarioDAO,
|
||||
taskSourceDAO);
|
||||
}
|
||||
state.getScenarioInfo().saveVersioningInfo(orderDAO, scenarioDAO,
|
||||
taskSourceDAO);
|
||||
saveTasksToSave();
|
||||
removeTasksToRemove();
|
||||
subcontractedTaskDataDAO.removeOrphanedSubcontractedTaskData();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue