ItEr49S04ValidacionEProbasFuncionaisItEr48S04: Exposing load required data method.

This commit is contained in:
Óscar González Fernández 2010-03-03 21:25:21 +01:00
parent ac33815e77
commit 68481af095
2 changed files with 30 additions and 28 deletions

View file

@ -65,6 +65,7 @@ import org.navalplanner.business.planner.entities.TaskMilestone;
import org.navalplanner.business.resources.daos.ICriterionDAO;
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.users.daos.IOrderAuthorizationDAO;
import org.navalplanner.business.users.daos.IUserDAO;
@ -152,6 +153,31 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
private static final Log LOG = LogFactory.getLog(OrderPlanningModel.class);
public static <T extends Collection<Resource>> T loadRequiredDataFor(
T resources) {
for (Resource each : resources) {
reattachCalendarFor(each);
// loading criterions so there are no repeated instances
forceLoadOfCriterions(each);
}
return resources;
}
private static void reattachCalendarFor(Resource each) {
if (each.getCalendar() != null) {
BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar());
}
}
static void forceLoadOfCriterions(Resource resource) {
Set<CriterionSatisfaction> criterionSatisfactions = resource
.getCriterionSatisfactions();
for (CriterionSatisfaction each : criterionSatisfactions) {
each.getCriterion().getName();
each.getCriterion().getType();
}
}
public static void configureInitialZoomLevelFor(Planner planner,
ZoomLevel defaultZoomLevel) {
if (!planner.isFixedZoomByUser()) {

View file

@ -35,7 +35,6 @@ 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.web.calendars.BaseCalendarModel;
public abstract class PlanningState {
@ -66,7 +65,7 @@ public abstract class PlanningState {
public abstract TaskGroup getRootTask();
private static class WithDataPlanningState extends PlanningState {
static class WithDataPlanningState extends PlanningState {
private final ArrayList<TaskElement> initial;
@ -92,7 +91,8 @@ public abstract class PlanningState {
this.initial = new ArrayList<TaskElement>(initialState);
this.toSave = new HashSet<TaskElement>(initialState);
this.toRemove = new HashSet<TaskElement>();
this.resources = doReattachments(new HashSet<Resource>(
this.resources = OrderPlanningModel
.loadRequiredDataFor(new HashSet<Resource>(
initialResources));
}
@ -135,34 +135,10 @@ public abstract class PlanningState {
private void addingNewlyCreated(IResourceDAO resourceDAO) {
Set<Resource> newResources = getNewResources(resourceDAO);
doReattachments(newResources);
OrderPlanningModel.loadRequiredDataFor(newResources);
resources.addAll(newResources);
}
private <T extends Collection<Resource>> T doReattachments(T result) {
for (Resource each : result) {
reattachCalendarFor(each);
// loading criterions so there are no repeated instances
forceLoadOfCriterions(each);
}
return result;
}
private void reattachCalendarFor(Resource each) {
if (each.getCalendar() != null) {
BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar());
}
}
private void forceLoadOfCriterions(Resource resource) {
Set<CriterionSatisfaction> criterionSatisfactions = resource
.getCriterionSatisfactions();
for (CriterionSatisfaction each : criterionSatisfactions) {
each.getCriterion().getName();
each.getCriterion().getType();
}
}
private Set<Resource> getNewResources(IResourceDAO resourceDAO) {
Set<Resource> result = new HashSet<Resource>(resourceDAO
.list(Resource.class));