Parametrize BankHolidaysMarker with the calendar instead of using Registry

Some new transactions have to be opened in order to allow the calendar
to be used safely.

FEA: ItEr67S04BugFixing
This commit is contained in:
Óscar González Fernández 2011-01-04 19:58:37 +01:00
parent b941b8484f
commit 758596909a
4 changed files with 109 additions and 51 deletions

View file

@ -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<IToolbarCommand> commands = new ArrayList<IToolbarCommand>();
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<Void>() {
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() {

View file

@ -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();

View file

@ -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) {

View file

@ -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<IToolbarCommand> commands = new ArrayList<IToolbarCommand>();
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<Void>() {
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() {