[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:
parent
9279649e6b
commit
b79c40562a
4 changed files with 59 additions and 2 deletions
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,4 +92,8 @@ public class IndirectCriterionRequirement extends CriterionRequirement{
|
|||
public void setValid(Boolean valid) {
|
||||
this.valid = BooleanUtils.toBoolean(valid);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void ensureSpecificDataLoaded() {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue