📄 allocationtaghandler.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 + -