diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java index 0d23e7364..069e77518 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java @@ -25,8 +25,6 @@ import static org.navalplanner.web.I18nHelper._; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; @@ -34,6 +32,10 @@ import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.Validate; +import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.common.IAdHocTransactionService; +import org.navalplanner.business.common.IOnTransaction; +import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.entities.GenericResourceAllocation; import org.navalplanner.business.planner.entities.ResourceAllocation; @@ -83,6 +85,12 @@ public class LimitingResourcesController extends GenericForwardComposer { @Autowired private ILimitingResourceQueueModel limitingResourceQueueModel; + @Autowired + private IConfigurationDAO configurationDAO; + + @Autowired + private IAdHocTransactionService transactionService; + private List commands = new ArrayList(); private org.zkoss.zk.ui.Component parent; @@ -117,27 +125,39 @@ public class LimitingResourcesController extends GenericForwardComposer { } private void reload() { - // FIXME: Temporary fix, it seems the page was already rendered, so - // clear it all as it's going to be rendered again - parent.getChildren().clear(); + transactionService.runOnReadOnlyTransaction(new IOnTransaction() { - limitingResourceQueueModel.initGlobalView(); + @Override + public Void execute() { + reloadInTransaction(); + return null; + } - // Initialize interval - timeTracker = buildTimeTracker(); - limitingResourcesPanel = buildLimitingResourcesPanel(); + private void reloadInTransaction() { + // FIXME: Temporary fix, it seems the page was already rendered, + // so + // clear it all as it's going to be rendered again + parent.getChildren().clear(); - this.parent.appendChild(limitingResourcesPanel); - limitingResourcesPanel.afterCompose(); + limitingResourceQueueModel.initGlobalView(); - cbSelectAll = (Checkbox) limitingResourcesPanel - .getFellowIfAny("cbSelectAll"); + // Initialize interval + timeTracker = buildTimeTracker(); + limitingResourcesPanel = buildLimitingResourcesPanel(); - initGridUnassignedLimitingResourceQueueElements(); - initManualAllocationWindow(); - initEditTaskWindow(); + parent.appendChild(limitingResourcesPanel); + limitingResourcesPanel.afterCompose(); - addCommands(limitingResourcesPanel); + cbSelectAll = (Checkbox) limitingResourcesPanel + .getFellowIfAny("cbSelectAll"); + + initGridUnassignedLimitingResourceQueueElements(); + initManualAllocationWindow(); + initEditTaskWindow(); + + addCommands(limitingResourcesPanel); + } + }); } private void initGridUnassignedLimitingResourceQueueElements() { @@ -184,7 +204,11 @@ public class LimitingResourcesController extends GenericForwardComposer { return timeTracker = new TimeTracker(limitingResourceQueueModel .getViewInterval(), ZoomLevel.DETAIL_THREE, SeveralModificators.create(), - SeveralModificators.create(new BankHolidaysMarker()), parent); + SeveralModificators.create(new BankHolidaysMarker(getDefaultCalendar())),parent); + } + + private BaseCalendar getDefaultCalendar() { + return configurationDAO.getConfiguration().getDefaultCalendar(); } private LimitingResourcesPanel buildLimitingResourcesPanel() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java index de375443a..d15421b8c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java @@ -39,6 +39,7 @@ import java.util.SortedMap; import java.util.TreeMap; import org.joda.time.LocalDate; +import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.IAdHocTransactionService; import org.navalplanner.business.common.IOnTransaction; import org.navalplanner.business.common.daos.IConfigurationDAO; @@ -287,7 +288,8 @@ public abstract class CompanyPlanningModel implements ICompanyPlanningModel { OrderPlanningModel.configureInitialZoomLevelFor(planner, defaultZoomLevel); - configuration.setSecondLevelModificators(new BankHolidaysMarker()); + configuration.setSecondLevelModificators(new BankHolidaysMarker( + getDefaultCalendar())); planner.setConfiguration(configuration); if(expandPlanningViewChart) { @@ -315,6 +317,10 @@ public abstract class CompanyPlanningModel implements ICompanyPlanningModel { } } + private BaseCalendar getDefaultCalendar() { + return configurationDAO.getConfiguration().getDefaultCalendar(); + } + private void setupChartAndItsContent(Planner planner, Tabbox chartComponent) { Timeplot chartLoadTimeplot = createEmptyTimeplot(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java index 3f23b1537..6edf8416d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java @@ -19,9 +19,9 @@ */ package org.navalplanner.web.planner.order; +import org.apache.commons.lang.Validate; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.calendars.entities.ICalendar; -import org.navalplanner.business.common.Registry; import org.navalplanner.business.workingday.IntraDayDate.PartialDay; import org.zkoss.ganttz.timetracker.zoom.DetailItem; import org.zkoss.ganttz.timetracker.zoom.IDetailItemModificator; @@ -35,9 +35,9 @@ public final class BankHolidaysMarker implements private final ICalendar calendar; - public BankHolidaysMarker() { - this.calendar = Registry.getConfigurationDAO().getConfiguration() - .getDefaultCalendar(); + public BankHolidaysMarker(ICalendar calendar) { + Validate.notNull(calendar); + this.calendar = calendar; } public BankHolidaysMarker(BaseCalendar calendar) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java index 6dc66abd7..2f1e8eac0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java @@ -37,6 +37,10 @@ import java.util.TreeMap; import org.apache.commons.lang.Validate; import org.joda.time.LocalDate; +import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.common.IAdHocTransactionService; +import org.navalplanner.business.common.IOnTransaction; +import org.navalplanner.business.common.daos.IConfigurationDAO; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.entities.DayAssignment; import org.navalplanner.business.planner.entities.TaskElement; @@ -101,6 +105,12 @@ public class ResourceLoadController implements Composer { @Autowired private IResourceLoadModel resourceLoadModel; + @Autowired + private IConfigurationDAO configurationDAO; + + @Autowired + private IAdHocTransactionService transactionService; + private List commands = new ArrayList(); private Order filterBy; @@ -149,39 +159,51 @@ public class ResourceLoadController implements Composer { resourcesLoadPanel = null; firstLoad = true; resourceLoadModel.setPageFilterPosition(0); - reload(true); //show filter by resources by default + reload(true); // show filter by resources by default } - private void reload(boolean filterByResources) { - this.filterHasChanged = (filterByResources != currentFilterByResources); - this.currentFilterByResources = filterByResources; + private void reload(final boolean filterByResources) { + transactionService.runOnReadOnlyTransaction(new IOnTransaction() { - if (filterBy == null) { - if (resourcesLoadPanel == null) { - resetAdditionalFilters(); + @Override + public Void execute() { + reloadInTransaction(filterByResources); + return null; } - resourceLoadModel.initGlobalView(filterByResources); - } else { - if (resourcesLoadPanel == null) { - deleteAdditionalFilters(); + + private void reloadInTransaction(boolean filterByResources) { + filterHasChanged = (filterByResources != currentFilterByResources); + currentFilterByResources = filterByResources; + + if (filterBy == null) { + if (resourcesLoadPanel == null) { + resetAdditionalFilters(); + } + resourceLoadModel.initGlobalView(filterByResources); + } else { + if (resourcesLoadPanel == null) { + deleteAdditionalFilters(); + } + resourceLoadModel.initGlobalView(filterBy, filterByResources); + } + timeTracker = buildTimeTracker(); + buildResourcesLoadPanel(); + + parent.getChildren().clear(); + parent.appendChild(resourcesLoadPanel); + + resourcesLoadPanel.afterCompose(); + addSchedulingScreenListeners(); + addCommands(resourcesLoadPanel); + if(firstLoad || filterHasChanged) { + setupNameFilter(); + } + firstLoad = false; } - resourceLoadModel.initGlobalView(filterBy, filterByResources); - } - timeTracker = buildTimeTracker(); - buildResourcesLoadPanel(); - - this.parent.getChildren().clear(); - this.parent.appendChild(resourcesLoadPanel); - - resourcesLoadPanel.afterCompose(); - addSchedulingScreenListeners(); - addCommands(resourcesLoadPanel); - if(firstLoad || filterHasChanged) { - setupNameFilter(); - } - firstLoad = false; + }); } + private void addListeners() { /* Listener to filter */ filterChangedListener = new IFilterChangedListener() { @@ -239,8 +261,14 @@ public class ResourceLoadController implements Composer { zoomLevel = (timeTracker == null) ? resourceLoadModel .calculateInitialZoomLevel() : timeTracker.getDetailLevel(); return new TimeTracker(resourceLoadModel.getViewInterval(), zoomLevel, - SeveralModificators.create(), SeveralModificators - .create(new BankHolidaysMarker()), parent); + SeveralModificators.create(), + SeveralModificators.create(createBankHolidaysMarker()), parent); + } + + private BankHolidaysMarker createBankHolidaysMarker() { + BaseCalendar defaultCalendar = configurationDAO.getConfiguration() + .getDefaultCalendar(); + return new BankHolidaysMarker(defaultCalendar); } private void buildResourcesLoadPanel() {