📄 taskmanagerimpl.java
字号:
next.dependencyAdded(e); } } private void fireDependencyRemoved(TaskDependency dep) { TaskDependencyEvent e = new TaskDependencyEvent( getDependencyCollection(), dep); for (int i = 0; i < myListeners.size(); i++) { TaskListener next = (TaskListener) myListeners.get(i); next.dependencyRemoved(e); } } private void fireTaskAdded(Task task) { TaskHierarchyEvent e = new TaskHierarchyEvent(this, task, null, getTaskHierarchy().getContainer(task)); for (int i = 0; i < myListeners.size(); i++) { TaskListener next = (TaskListener) myListeners.get(i); next.taskAdded(e); } } private void fireTaskRemoved(Task task, Task oldSupertask) { TaskHierarchyEvent e = new TaskHierarchyEvent(this, task, oldSupertask, null); for (int i = 0; i < myListeners.size(); i++) { TaskListener next = (TaskListener) myListeners.get(i); next.taskRemoved(e); } } void fireTaskPropertiesChanged(Task task) { TaskPropertyEvent e = new TaskPropertyEvent(task); for (int i = 0; i < myListeners.size(); i++) { TaskListener next = (TaskListener) myListeners.get(i); next.taskPropertiesChanged(e); } } public TaskManagerConfig getConfig() { return myConfig; } private final class FacadeImpl implements TaskContainmentHierarchyFacade { //private final Task myRoot; private List myPathBuffer = new ArrayList();// public FacadeImpl(Task root) {// myRoot = root;// } public Task[] getNestedTasks(Task container) { return container.getNestedTasks(); } public boolean hasNestedTasks(Task container) { return myRoot==null ? false: myRoot.isMilestone(); } public Task getRootTask() { return TaskManagerImpl.this.getRootTask(); } public Task getContainer(Task nestedTask) { return nestedTask.getSupertask(); } public boolean areUnrelated(Task first, Task second) { myPathBuffer.clear(); for (Task container = getContainer(first); container != null; container = getContainer(container)) { myPathBuffer.add(container); } if (myPathBuffer.contains(second)) { return false; } myPathBuffer.clear(); for (Task container = getContainer(second); container != null; container = getContainer(container)) { myPathBuffer.add(container); } if (myPathBuffer.contains(first)) { return false; } return true; } public void move(Task whatMove, Task whereMove) { whatMove.move(whereMove); } public int getDepth(Task task) { int depth = 0; while (task != myRoot) { task = task.getSupertask(); depth++; } return depth; } public int compareDocumentOrder(Task task1, Task task2) { if (task1==task2) { return 0; } List buffer1 = new ArrayList(); for (Task container = task1; container != null; container = getContainer(container)) { buffer1.add(0,container); } List buffer2 = new ArrayList(); for (Task container = task2; container != null; container = getContainer(container)) { buffer2.add(0,container); } if (buffer1.get(0)!=getRootTask() && buffer2.get(0)==getRootTask()) { return -1; } if (buffer1.get(0)==getRootTask() && buffer2.get(0)!=getRootTask()) { return 1; } int result = 0; int i=0; Task commonRoot = null; while (true) { if (i==buffer1.size()) { return -1; } if (i==buffer2.size()) { return 1; } Task root1 = (Task) buffer1.get(i); Task root2 = (Task) buffer2.get(i); if (root1!=root2) { assert commonRoot!=null : "Failure comparing task="+task1+" and task="+task2+"\n. Path1="+buffer1+"\nPath2="+buffer2; Task[] nestedTasks = commonRoot.getNestedTasks(); for (int j=0; j<nestedTasks.length; j++) { if (nestedTasks[j]==root1) { return -1; } if (nestedTasks[j]==root2) { return 1; } } throw new IllegalStateException("We should not be here"); } i++; commonRoot = root1; } } public boolean contains(Task task) { throw new UnsupportedOperationException(); } } private class FacadeFactoryImpl implements TaskContainmentHierarchyFacade.Factory {// private final Task myRoot;//// FacadeFactoryImpl(Task root) {// myRoot = root;// } public TaskContainmentHierarchyFacade createFacede() { return new FacadeImpl(); } } public TaskContainmentHierarchyFacade getTaskHierarchy() { // if (myTaskContainment==null) { return myFacadeFactory.createFacede(); // } // return myTaskContainment; } public TaskManager emptyClone() { return new TaskManagerImpl(null, myConfig); } public Map importData(TaskManager taskManager) { Task importRoot = taskManager.getRootTask(); Map original2imported = new HashMap(); importData(importRoot, getRootTask(), original2imported); TaskDependency[] deps = taskManager.getDependencyCollection() .getDependencies(); for (int i = 0; i < deps.length; i++) { Task nextDependant = deps[i].getDependant(); Task nextDependee = deps[i].getDependee(); Task importedDependant = (Task) original2imported .get(nextDependant); Task importedDependee = (Task) original2imported.get(nextDependee); try { TaskDependency dependency = getDependencyCollection() .createDependency(importedDependant, importedDependee, new FinishStartConstraintImpl()); dependency.setConstraint(deps[i].getConstraint()); dependency.setDifference(deps[i].getDifference()); dependency.setHardness(deps[i].getHardness()); } catch (TaskDependencyException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return original2imported; } private void importData(Task importRoot, Task root, Map original2imported) { Task[] nested = importRoot.getManager().getTaskHierarchy() .getNestedTasks(importRoot); for (int i = nested.length - 1; i >= 0; i--) { Task nextImported = createTask(); registerTask(nextImported); nextImported.setName(nested[i].getName()); nextImported.setStart(nested[i].getStart().Clone()); nextImported.setDuration(nested[i].getDuration()); nextImported.setMilestone(nested[i].isMilestone()); nextImported.setColor(nested[i].getColor()); nextImported.setShape(nested[i].getShape()); nextImported.setCompletionPercentage(nested[i] .getCompletionPercentage()); nextImported.setNotes(nested[i].getNotes()); nextImported.setTaskInfo(nested[i].getTaskInfo()); nextImported.setExpand(nested[i].getExpand()); if (nested[i].getThird() != null) { nextImported.setThirdDate(nested[i].getThird().Clone()); nextImported.setThirdDateConstraint(nested[i] .getThirdDateConstraint()); } Mediator.getCustomColumnsStorage().processNewTask(nextImported); // System.out.println ("Import : " + nextImported.getTaskID() + " // -->> " + nextImported.getName()); original2imported.put(nested[i], nextImported); // nextImported.move(root); getTaskHierarchy().move(nextImported, root); importData(nested[i], nextImported, original2imported); } } public Date findClosestWorkingTime(Date time) { return getCalendar().findClosestWorkingTime(time); } public void processCriticalPath(TaskNode root) { try { myAlgorithmCollection.getRecalculateTaskScheduleAlgorithm().run(); } catch (TaskDependencyException e) { e.printStackTrace(); } CriticalPathAlgorithm criticAlgo = new CriticalPathAlgorithmImpl(root, getCalendar()); Task tasks[] = criticAlgo.getCriticalTasks(); resetCriticalPath(root); for (int i = 0; i < tasks.length; i++) tasks[i].setCritical(true); } private void resetCriticalPath(TaskNode root) { Enumeration en = root.preorderEnumeration(); while (en.hasMoreElements()) { Object next = en.nextElement(); if (!(next instanceof TaskNode)) continue; Task t = (Task) ((TaskNode) next).getUserObject(); t.setCritical(false); } } public void importAssignments(TaskManager importedTaskManager, ResourceManager hrManager, Map original2importedTask, Map original2importedResource) { Task[] tasks = importedTaskManager.getTasks(); for (int i = 0; i < tasks.length; i++) { ResourceAssignment[] assignments = tasks[i].getAssignments(); for (int j = 0; j < assignments.length; j++) { Task task = getTask(((Task) original2importedTask.get(tasks[i])) .getTaskID()); ResourceAssignment assignment = task.getAssignmentCollection() .addAssignment( (HumanResource) original2importedResource .get(assignments[j].getResource())); assignment.setLoad(assignments[j].getLoad()); assignment.setCoordinator(assignments[j].isCoordinator()); } } } void onTaskMoved(TaskImpl task) { if (!isRegistered(task)) { registerTask(task); } myTaskMap.setDirty(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -