diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index 48be9ea35..a039fd503 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -107,25 +107,18 @@ public abstract class OrderElement extends BaseEntity implements public SchedulingState getSchedulingState() { if (schedulingState == null) { - schedulingState = createSchedulingState(); + schedulingState = SchedulingState.createSchedulingState( + getSchedulingStateType(), getChildrenStates(), + new ITypeChangedListener() { + @Override + public void typeChanged(Type newType) { + schedulingStateType = newType; + } + }); } return schedulingState; } - private SchedulingState createSchedulingState() { - List childrenStates = getChildrenStates(); - SchedulingState result = new SchedulingState(getSchedulingStateType(), - childrenStates); - schedulingStateType = result.getType(); - result.addTypeChangeListener(new ITypeChangedListener() { - @Override - public void typeChanged(Type newType) { - schedulingStateType = newType; - } - }); - return result; - } - private List getChildrenStates() { List result = new ArrayList(); for (OrderElement each : getChildren()) { diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java index 3865c3aca..784b51e14 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/SchedulingState.java @@ -131,6 +131,19 @@ public class SchedulingState { public void typeChanged(Type newType); } + public static SchedulingState createSchedulingState(Type initialType, + List childrenStates, + ITypeChangedListener typeListener) { + SchedulingState result = new SchedulingState(initialType, + childrenStates); + Type newType = result.getType(); + if (newType != initialType) { + typeListener.typeChanged(newType); + } + result.addTypeChangeListener(typeListener); + return result; + } + private Type type = Type.NO_SCHEDULED; private SchedulingState parent;