[Bug #1197] Fix bug

When creating the PlanningState the criterions of the associated hours
groups are loaded, so the same criterions in the task and in the hour
groups are loaded.

Some other data is loaded to avoid this kind of situation.

FEA: ItEr75S04BugFixing
This commit is contained in:
Óscar González Fernández 2011-09-29 13:50:56 +02:00
parent 9279649e6b
commit b79c40562a
4 changed files with 59 additions and 2 deletions

View file

@ -31,7 +31,7 @@ import org.navalplanner.business.templates.entities.OrderElementTemplate;
*
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
*/
public class CriterionRequirement extends BaseEntity{
public abstract class CriterionRequirement extends BaseEntity {
private Criterion criterion;
@ -101,4 +101,14 @@ public class CriterionRequirement extends BaseEntity{
public void setOrderElementTemplate(OrderElementTemplate orderElementTemplate) {
this.orderElementTemplate = orderElementTemplate;
}
public void ensureDataLoaded() {
if (criterion != null) {
criterion.getName();
}
ensureSpecificDataLoaded();
}
protected abstract void ensureSpecificDataLoaded();
}

View file

@ -35,7 +35,7 @@ import org.navalplanner.business.templates.entities.OrderElementTemplate;
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
* @author Diego Pino Garcia <dpino@igalia.com>
*/
public class DirectCriterionRequirement extends CriterionRequirement{
public class DirectCriterionRequirement extends CriterionRequirement {
private DirectCriterionRequirement origin;
@ -138,4 +138,14 @@ public class DirectCriterionRequirement extends CriterionRequirement{
this.origin = origin;
}
@Override
protected void ensureSpecificDataLoaded() {
if (origin != null) {
origin.ensureDataLoaded();
}
for (IndirectCriterionRequirement each : children) {
each.ensureDataLoaded();
}
}
}

View file

@ -92,4 +92,8 @@ public class IndirectCriterionRequirement extends CriterionRequirement{
public void setValid(Boolean valid) {
this.valid = BooleanUtils.toBoolean(valid);
}
@Override
protected void ensureSpecificDataLoaded() {
}
}

View file

@ -31,12 +31,15 @@ import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.Validate;
import org.hibernate.Hibernate;
import org.joda.time.LocalDate;
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.common.daos.IEntitySequenceDAO;
import org.navalplanner.business.common.entities.EntityNameEnum;
import org.navalplanner.business.labels.entities.Label;
import org.navalplanner.business.orders.daos.IOrderDAO;
import org.navalplanner.business.orders.entities.HoursGroup;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.orders.entities.TaskSource;
@ -57,6 +60,8 @@ import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.TaskGroup;
import org.navalplanner.business.planner.entities.TaskMilestone;
import org.navalplanner.business.planner.entities.consolidations.CalculatedConsolidation;
import org.navalplanner.business.requirements.entities.CriterionRequirement;
import org.navalplanner.business.resources.daos.ICriterionDAO;
import org.navalplanner.business.resources.daos.IResourceDAO;
import org.navalplanner.business.resources.entities.Criterion;
@ -240,6 +245,7 @@ public class PlanningStateCreator {
Scenario currentScenario = scenarioManager.getCurrent();
final List<Resource> allResources = resourceDAO.list(Resource.class);
criterionDAO.list(Criterion.class);
forceLoadOfOrderAssociatedData(orderReloaded);
TaskGroup rootTask = orderReloaded.getAssociatedTaskElement();
if (rootTask != null) {
forceLoadOf(rootTask);
@ -260,6 +266,33 @@ public class PlanningStateCreator {
return result;
}
private void forceLoadOfOrderAssociatedData(Order order) {
List<OrderElement> all = new ArrayList<OrderElement>();
all.add(order);
all.addAll(order.getAllChildren());
for (OrderElement each : all) {
for (DirectAdvanceAssignment direct : each.getDirectAdvanceAssignments()) {
direct.getAdvanceMeasurements().size();
direct.getAdvanceType().getHumanId();
}
for (IndirectAdvanceAssignment indirect : each
.getIndirectAdvanceAssignments()) {
Set<CalculatedConsolidation> consolidation = indirect
.getCalculatedConsolidation();
for (CalculatedConsolidation c : consolidation) {
c.getCalculatedConsolidatedValues().size();
}
}
for (HoursGroup hours : each.getHoursGroups()) {
for (CriterionRequirement requirement : hours
.getCriterionRequirements()) {
requirement.ensureDataLoaded();
}
hours.getValidCriterions().size();
}
}
}
private void forceLoadDayAssignments(Set<Resource> resources) {
for (Resource resource : resources) {
resource.getAssignments().size();