[Bug #1050] Fix bug
Don't force the insertion always at the top level. FEA: ItEr74S04BugFixing
This commit is contained in:
parent
3bb62c0591
commit
955c39181f
2 changed files with 25 additions and 31 deletions
|
|
@ -121,6 +121,8 @@ public abstract class Position {
|
|||
return new ChildPosition(ancestors, positionInParent);
|
||||
}
|
||||
|
||||
public abstract Position sameLevelAt(int positionInParent);
|
||||
|
||||
|
||||
private static class ChildPosition extends Position {
|
||||
|
||||
|
|
@ -159,6 +161,11 @@ public abstract class Position {
|
|||
public boolean canPop() {
|
||||
return parents.size() > 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Position sameLevelAt(int positionInParent) {
|
||||
return new ChildPosition(parents, positionInParent);
|
||||
}
|
||||
}
|
||||
|
||||
private static class AppendToTopPosition extends Position {
|
||||
|
|
@ -186,6 +193,11 @@ public abstract class Position {
|
|||
public boolean canPop() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Position sameLevelAt(int positionInParent) {
|
||||
return new InsertInTopPosition(positionInParent);
|
||||
}
|
||||
}
|
||||
|
||||
private static class InsertInTopPosition extends Position {
|
||||
|
|
@ -219,6 +231,11 @@ public abstract class Position {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Position sameLevelAt(int positionInParent) {
|
||||
return new InsertInTopPosition(positionInParent);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ package org.navalplanner.web.planner.milestone;
|
|||
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.navalplanner.business.planner.daos.ITaskElementDAO;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.navalplanner.business.planner.entities.TaskGroup;
|
||||
|
|
@ -62,39 +61,17 @@ public class AddMilestoneCommand implements IAddMilestoneCommand {
|
|||
TaskMilestone milestone = TaskMilestone.create(task.getEndDate());
|
||||
milestone.setName(_("new milestone"));
|
||||
taskElementDAO.reattach(task);
|
||||
InsertionPoint insertionPoint = getInsertionPoint(task);
|
||||
insertionPoint.root.addTaskElement(insertionPoint.insertionPosition,
|
||||
milestone);
|
||||
context.add(Position
|
||||
.createAtTopPosition(insertionPoint.insertionPosition),
|
||||
milestone);
|
||||
|
||||
Position taskPosition = context.getMapper().findPositionFor(task);
|
||||
int insertAt = taskPosition.getInsertionPosition() + 1;
|
||||
|
||||
TaskGroup parent = task.getParent();
|
||||
parent.addTaskElement(insertAt, milestone);
|
||||
context.add(taskPosition.sameLevelAt(insertAt), milestone);
|
||||
|
||||
planningState.added(milestone.getParent());
|
||||
}
|
||||
|
||||
private static class InsertionPoint {
|
||||
final TaskGroup root;
|
||||
|
||||
final int insertionPosition;
|
||||
|
||||
private InsertionPoint(TaskGroup root, int position) {
|
||||
this.root = root;
|
||||
this.insertionPosition = position + 1;
|
||||
}
|
||||
}
|
||||
|
||||
private InsertionPoint getInsertionPoint(TaskElement task) {
|
||||
Validate.isTrue(task.getParent() != null,
|
||||
"the task parent is not null "
|
||||
+ "since all shown tasks are children "
|
||||
+ "of the root Order");
|
||||
TaskGroup taskParent = task.getParent();
|
||||
if (taskParent.getParent() == null) {
|
||||
return new InsertionPoint(taskParent, taskParent.getChildren()
|
||||
.indexOf(task));
|
||||
}
|
||||
return getInsertionPoint(taskParent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return _("Add Milestone");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue