⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskmanagerimpl.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            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 + -