Reattach order before calculating critical path

FEA: ItEr64OTS04ReporteAvancesCadeaCritica
This commit is contained in:
Diego Pino Garcia 2010-11-26 12:36:19 +01:00
parent 51643855ce
commit ba6ad9b04b
3 changed files with 38 additions and 5 deletions

View file

@ -190,6 +190,9 @@ public class Registry {
@Autowired
private IEntitySequenceDAO entitySequenceDAO;
@Autowired
private IAdHocTransactionService transactionServiceDAO;
private Registry() {
}
@ -346,4 +349,8 @@ public class Registry {
public static IEntitySequenceDAO getEntitySequenceDAO() {
return getInstance().entitySequenceDAO;
}
public static IAdHocTransactionService getTransactionService() {
return getInstance().transactionServiceDAO;
}
}

View file

@ -91,10 +91,6 @@ import org.zkoss.zk.ui.util.Clients;
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class TemplateModel implements ITemplateModel {
public static List<TaskElement> getCriticalPathFor(Order order) {
return Collections.emptyList();
}
private static class DependencyWithVisibility implements
IDependency<TaskElement> {

View file

@ -27,7 +27,13 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.common.Registry;
import org.navalplanner.business.orders.daos.IOrderDAO;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.scenarios.IScenarioManager;
import org.navalplanner.web.common.TemplateModel;
import org.navalplanner.web.montecarlo.MonteCarloController;
import org.navalplanner.web.planner.order.OrderPlanningController;
@ -103,7 +109,7 @@ public class MonteCarloTabCreator {
protected void afterShowAction() {
List<TaskElement> criticalPath = orderPlanningController.getCriticalPath();
if (criticalPath == null) {
criticalPath = TemplateModel.getCriticalPathFor(mode.getOrder());
criticalPath = getCriticalPathFor(mode.getOrder());
}
monteCarloController.setCriticalPath(criticalPath);
@ -119,6 +125,30 @@ public class MonteCarloTabCreator {
};
}
public List<TaskElement> getCriticalPathFor(final Order order) {
// Reattach order
IAdHocTransactionService transactionService = Registry.getTransactionService();
return transactionService.runOnTransaction(new IOnTransaction<List<TaskElement>>() {
@Override
public List<TaskElement> execute() {
initializeOrder(order);
return order.getAllChildrenAssociatedTaskElements();
}
});
}
private void initializeOrder(Order order) {
IOrderDAO orderDAO = Registry.getOrderDAO();
orderDAO.reattach(order);
useSchedulingDataFor(order);
}
private void useSchedulingDataFor(Order order) {
IScenarioManager scenarioManager = Registry.getScenarioManager();
order.useSchedulingDataFor(scenarioManager.getCurrent());
}
private ITab createGlobalMonteCarloTab() {
final IComponentCreator componentCreator = new IComponentCreator() {