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

📄 dependencytaghandler.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
package net.sourceforge.ganttproject.parser;import java.util.ArrayList;import java.util.List;import net.sourceforge.ganttproject.GanttTaskRelationship;import net.sourceforge.ganttproject.gui.UIFacade;import net.sourceforge.ganttproject.task.Task;import net.sourceforge.ganttproject.task.TaskManager;import net.sourceforge.ganttproject.task.dependency.TaskDependency;import net.sourceforge.ganttproject.task.dependency.TaskDependencyException;import net.sourceforge.ganttproject.task.dependency.TaskDependency.Hardness;import net.sourceforge.ganttproject.task.dependency.constraint.FinishStartConstraintImpl;import org.xml.sax.Attributes;public class DependencyTagHandler implements TagHandler, ParsingListener {    private final TaskManager myTaskManager;	private final UIFacade myUIFacade;    public DependencyTagHandler(ParsingContext context, TaskManager taskManager, UIFacade uiFacade) {        myContext = context;        myTaskManager = taskManager;        myUIFacade = uiFacade;    }    /**     * @see net.sourceforge.ganttproject.parser.TagHandler#endElement(String,     *      String, String)     */    public void endElement(String namespaceURI, String sName, String qName) {        /*         * if ("dependencies".equals (qName)) { myDependenciesSectionStarted =         * false; }         */    }    /**     * @see net.sourceforge.ganttproject.parser.TagHandler#startElement(String,     *      String, String, Attributes)     */    public void startElement(String namespaceURI, String sName, String qName,            Attributes attrs) {        /*         * if ("dependencies".equals (qName)) { myDependenciesSectionStarted =         * true; }         */        if ("depend".equals(qName)) {            /*             * if (!myDependenciesSectionStarted) { throw new             * RuntimeException("Invalid file format. Found 'dependency' tag             * without prior 'dependencies' tag"); } else {             */            loadDependency(attrs);        }    }    public void parsingStarted() {    }    public void parsingFinished() {        for (int i = 0; i < getDependencies().size(); i++) {            GanttDependStructure ds = (GanttDependStructure) getDependencies()                    .get(i);            Task dependee = myTaskManager.getTask(ds.taskID); // By CL            Task dependant = myTaskManager.getTask(ds.successorTaskID);            if (dependee == null || dependant == null) {                continue;            }            try {                TaskDependency dep = myTaskManager.getDependencyCollection()                        .createDependency(dependant, dependee,                                new FinishStartConstraintImpl());                dep                        .setConstraint(myTaskManager                                .createConstraint(ds.dependType));                dep.setDifference(ds.difference);                if (myContext.getTasksWithLegacyFixedStart().contains(dependant)) {                	dep.setHardness(TaskDependency.Hardness.RUBBER);                }                else {                	dep.setHardness(ds.myHardness);                }            } catch (TaskDependencyException e) {                e.printStackTrace();                myUIFacade.logErrorMessage(e);            }        }    }    protected void loadDependency(Attributes attrs) {        if (attrs != null) {            GanttDependStructure gds = new GanttDependStructure();            gds.setTaskID(getDependencyAddressee());            gds.setDependTaskID(getDependencyAddresser(attrs));            String dependencyTypeAsString = attrs.getValue("type");            String differenceAsString = attrs.getValue("difference");            String hardnessAsString = attrs.getValue("hardness");            if (dependencyTypeAsString != null) {                try {                    int dependencyType = Integer                            .parseInt(dependencyTypeAsString);                    gds.setDependType(dependencyType);                } catch (NumberFormatException e) {                }            }            if (differenceAsString != null) {                try {                    int difference = Integer.parseInt(differenceAsString);                    gds.setDifference(difference);                } catch (NumberFormatException e) {                }            }            if (hardnessAsString!=null) {            	TaskDependency.Hardness hardness = TaskDependency.Hardness.parse(hardnessAsString);            	gds.setHardness(hardness);            }            getDependencies().add(gds);        }    }    protected int getDependencyAddressee() {        return getContext().getTaskID();    }    protected int getDependencyAddresser(Attributes attrs) {        try {            return Integer.parseInt(attrs.getValue("id"));        } catch (NumberFormatException e) {            throw new RuntimeException(                    "Failed to parse 'depend' tag. Attribute 'id' seems to be invalid: "                            + attrs.getValue("id"), e);        }    }    private List getDependencies() {        return myDependencies;    }    private ParsingContext getContext() {        return myContext;    }    private List myDependencies = new ArrayList();    private boolean myDependenciesSectionStarted = false;    private ParsingContext myContext;    private class GanttDependStructure {        public int taskID, successorTaskID;        public int difference = 0;        public int dependType = GanttTaskRelationship.FS; //		private Hardness myHardness = TaskDependency.Hardness.STRONG;        public GanttDependStructure(int a, int b) {            taskID = a;            successorTaskID = b;        }        public void setHardness(Hardness hardness) {        	myHardness = hardness;		}		public GanttDependStructure(int taskID, int successorID,                int relationType) {            this.taskID = taskID;            this.successorTaskID = successorID;            this.dependType = relationType;        }        public GanttDependStructure(int taskID, int successorID,                int relationType, int difference) {            this.taskID = taskID;            this.successorTaskID = successorID;            this.dependType = relationType;            this.difference = difference;        }        public GanttDependStructure() {        }        public void setTaskID(int taskID) {            this.taskID = taskID;        }        public void setDifference(int difference) {            this.difference = difference;        }        public void setDependTaskID(int successorTaskID) {            this.successorTaskID = successorTaskID;        }        public void setDependType(int dependType) {            this.dependType = dependType;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -