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

📄 allocationtaghandler.java

📁 It is all about project scheduling. GanttProject is a tool for creating a project schedule by means
💻 JAVA
字号:
/* * Created on 05.07.2003 * */package net.sourceforge.ganttproject.parser;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import net.sourceforge.ganttproject.resource.HumanResource;import net.sourceforge.ganttproject.resource.ResourceManager;import net.sourceforge.ganttproject.roles.Role;import net.sourceforge.ganttproject.roles.RoleManager;import net.sourceforge.ganttproject.roles.RolePersistentID;import net.sourceforge.ganttproject.roles.RoleSet;import net.sourceforge.ganttproject.task.ResourceAssignment;import net.sourceforge.ganttproject.task.Task;import net.sourceforge.ganttproject.task.TaskManager;import org.xml.sax.Attributes;/** * @author bard */public class AllocationTagHandler implements TagHandler, ParsingListener {    public AllocationTagHandler(ResourceManager resourceMgr,            TaskManager taskMgr, RoleManager roleMgr) {        myResourceManager = resourceMgr;        myTaskManager = taskMgr;        myRoleManager = roleMgr;    }    /*     * (non-Javadoc)     *      * @see net.sourceforge.ganttproject.parser.TagHandler#startElement(java.lang.String,     *      java.lang.String, java.lang.String, org.xml.sax.Attributes)     */    public void startElement(String namespaceURI, String sName, String qName,            Attributes attrs) throws FileFormatException {        if (qName.equals("allocation")) {            loadAllocation(attrs);        }    }    /*     * (non-Javadoc)     *      * @see net.sourceforge.ganttproject.parser.TagHandler#endElement(java.lang.String,     *      java.lang.String, java.lang.String)     */    public void endElement(String namespaceURI, String sName, String qName) {        // TODO Auto-generated method stub    }    private void loadAllocation(Attributes attrs) throws FileFormatException {        String aName;        int taskId = 0;        int resourceId = 0;        float load = 0;        boolean coordinator = false;        String taskIdAsString = attrs.getValue("task-id");        String resourceIdAsString = attrs.getValue("resource-id");        String loadAsString = attrs.getValue("load");        String coordinatorAsString = attrs.getValue("responsible");        String rolePersistendIDString = attrs.getValue("function");        if (taskIdAsString == null || resourceIdAsString == null) {            throw new FileFormatException(                    "Failed to load <allocation> tag: task or resource identifier is missing");        }        try {            taskId = Integer.parseInt(taskIdAsString);            resourceId = Integer.parseInt(resourceIdAsString);            if (loadAsString != null) {                load = Float.parseFloat(loadAsString);            }            if (coordinatorAsString != null) {                coordinator = Boolean.valueOf(coordinatorAsString)                        .booleanValue();            }        } catch (NumberFormatException e) {            throw new FileFormatException(                    "Failed to load <allocation> tag: one of attribute values is invalid",                    e);        }        // if no load is specified I assume 100% load        // this should only be the case if old files        // were loaded.        if (load == 0) {            load = 100;        }        HumanResource human = (HumanResource) getResourceManager().getById(                resourceId);        if (human == null) {            throw new FileFormatException("Human resource with id="                    + resourceId + " not found");        }        Task task = getTaskManager().getTask(taskId);        if (task == null) {            throw new FileFormatException("Task with id=" + taskId                    + " not found");        }        // TaskMutator mutator = task.createMutator();        // ResourceAssignment assignment = mutator.addResource(human);        // assignment.setLoad(load);        // mutator.commit();        ResourceAssignment assignment = task.getAssignmentCollection()                .addAssignment(human);        try {            if (rolePersistendIDString != null)                myLateAssigmnent2roleBinding.put(assignment,                        rolePersistendIDString);        } catch (NumberFormatException e) {            System.out                    .println("ERROR in parsing XML File function id is not numeric: "                            + e.toString());        }        assignment.setLoad(load);        assignment.setCoordinator(coordinator);    }    private ResourceManager getResourceManager() {        return myResourceManager;    }    private TaskManager getTaskManager() {        return myTaskManager;    }    private Role findRole(String persistentIDasString) {        //        RolePersistentID persistentID = new RolePersistentID(                persistentIDasString);        String rolesetName = persistentID.getRoleSetID();        int roleID = persistentID.getRoleID();        RoleSet roleSet;        if (rolesetName == null) {            roleSet = myRoleManager.getProjectRoleSet();            if (roleSet.findRole(roleID) == null) {                if (roleID <= 10 && roleID > 2) {                    roleSet = myRoleManager                            .getRoleSet(RoleSet.SOFTWARE_DEVELOPMENT);                    roleSet.setEnabled(true);                } else if (roleID <= 2) {                    roleSet = myRoleManager.getRoleSet(RoleSet.DEFAULT);                }            }        } else {            roleSet = myRoleManager.getRoleSet(rolesetName);        }        Role result = roleSet.findRole(roleID);        return result;    }    public void parsingStarted() {        // TODO Auto-generated method stub    }    public void parsingFinished() {        for (Iterator lateBindingEntries = myLateAssigmnent2roleBinding                .entrySet().iterator(); lateBindingEntries.hasNext();) {            Map.Entry nextEntry = (Entry) lateBindingEntries.next();            String persistentID = (String) nextEntry.getValue();            Role nextRole = findRole(persistentID);            if (nextRole != null) {                lateBindingEntries.remove();                ((ResourceAssignment) nextEntry.getKey())                        .setRoleForAssignment(nextRole);            }        }        if (!myLateAssigmnent2roleBinding.isEmpty()) {            System.err                    .println("[ResourceTagHandler] parsingFinished(): not found roles:\n"                            + myLateAssigmnent2roleBinding);        }    }    private ResourceManager myResourceManager;    private TaskManager myTaskManager;    private RoleManager myRoleManager;    private final HashMap myLateAssigmnent2roleBinding = new HashMap();}

⌨️ 快捷键说明

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