[Bug #1205] Fix issue going to edition of a task in WBS directly

The problem was related with a Hibernate proxy when trying to use method
getOrder of an OrderElement.

FEA: ItEr75S04BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2011-10-13 09:54:19 +02:00
parent c8d1725a1b
commit ad3268654a
3 changed files with 27 additions and 4 deletions

View file

@ -502,6 +502,10 @@ public abstract class TaskElement extends BaseEntity {
this.calendar = calendar;
}
public BaseCalendar getOwnCalendar() {
return calendar;
}
public BaseCalendar getCalendar() {
if (calendar == null) {
OrderElement orderElement = getOrderElement();

View file

@ -27,8 +27,10 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.navalplanner.business.orders.daos.IOrderDAO;
import org.navalplanner.business.orders.daos.IOrderElementDAO;
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.resources.daos.ICriterionTypeDAO;
import org.navalplanner.business.resources.entities.Criterion;
@ -50,6 +52,9 @@ public class OrderElementModel implements IOrderElementModel {
@Autowired
private IOrderElementDAO orderElementDAO;
@Autowired
private IOrderDAO orderDAO;
@Autowired
private ICriterionTypeDAO criterionTypeDao;
@ -144,11 +149,16 @@ public class OrderElementModel implements IOrderElementModel {
}
@Override
@Transactional(readOnly = true)
public boolean isCodeAutogenerated() {
if ((orderElement == null) || (orderElement.getOrder() == null)) {
if (orderElement == null) {
return false;
}
return orderElement.getOrder().isCodeAutogenerated();
Order order = orderDAO.loadOrderAvoidingProxyFor(orderElement);
if (order == null) {
return false;
}
return order.isCodeAutogenerated();
}
}

View file

@ -33,6 +33,7 @@ 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.calendars.entities.BaseCalendar;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.common.daos.IEntitySequenceDAO;
@ -312,8 +313,16 @@ public class PlanningStateCreator {
private void forceLoadOfDataAssociatedTo(TaskElement each) {
forceLoadOfResourceAllocationsResourcesAndAssignmentFunction(each);
forceLoadOfCriterions(each);
if (each.getCalendar() != null) {
BaseCalendarModel.forceLoadBaseCalendar(each.getCalendar());
BaseCalendar calendar = each.getOwnCalendar();
if (calendar == null) {
if (each.getOrderElement() != null) {
calendar = orderDAO.loadOrderAvoidingProxyFor(
each.getOrderElement()).getCalendar();
}
}
if (calendar != null) {
BaseCalendarModel.forceLoadBaseCalendar(calendar);
}
each.hasConsolidations();
}