public Set<Participant> resolveParticipantsFromResourceName(String anyName) { Set<Participant> pSet = new HashSet<Participant>(); Participant p = getParticipantFromUserID(anyName); if (p != null) { pSet.add(p); return pSet; } Role r = getRoleByName(anyName); if (r != null) { pSet.addAll(getRoleParticipants(r.getID())); return pSet; } Position pos = getPositionByLabel(anyName); if (pos != null) { pSet.addAll(getPositionParticipants(pos.getID())); return pSet; } OrgGroup o = getOrgGroupByLabel(anyName); if (o != null) { pSet.addAll(getOrgGroupParticipants(o.getID())); return pSet; } Capability c = getCapabilityByLabel(anyName); if (c != null) { pSet.addAll(getCapabilityParticipants(c.getID())); } return pSet; }
public Map<String, String> getPositionIdentifiers() { Map<String, String> idMap = new Hashtable<String, String>(); for (Position p : getPositions()) { idMap.put(p.getID(), p.getTitle()); } return idMap; }
public Position getPositionByLabel(String label) { for (Position p : positionMap.values()) { if (p.getTitle().equals(label)) { return p; } } return null; }
public String getPositionsAsXML() { ArrayList<Position> pList = new ArrayList<Position>(positionMap.values()); Collections.sort(pList); StringBuilder xml = new StringBuilder("<positions>"); for (Position p : pList) xml.append(p.toXML()); xml.append("</positions>"); return xml.toString(); }
public String getParticpantsWithPositionAsXML(String positionName) { String result = "<participants/>"; if (positionName != null) { Position p = getPositionByLabel(positionName); if (p != null) { result = getPositionParticipantsAsXML(p.getID()); } } return result; }
public String getParticipantPositionsAsXML(String pid) { Set<Position> posSet = getParticipantPositions(pid); if (posSet != null) { String header = String.format("<positions participantid=\"%s\">", pid); StringBuilder xml = new StringBuilder(header); for (Position p : posSet) xml.append(p.toXML()); xml.append("</positions>"); return xml.toString(); } else return ("<positions/>"); }
/** * Gets the set of Participants the ultimately report to the Position passed * * @param manager the 'manager' Position * @return the set of Particpants 'managed' by this Position */ public Set<Participant> getParticipantsReportingToPosition(Position manager) { Set<Participant> result = new HashSet<Participant>(); Set<Position> posSet = getPositions(); for (Position pos : posSet) { if (pos.ultimatelyReportsTo(manager)) { result.addAll(castToParticipantSet(pos.getResources())); } } return result; }
public Set<Participant> getParticipantsWithPosition(String positionName) { Set<Participant> result = null; if (positionName != null) { Position p = getPositionByLabel(positionName); if (p != null) { result = getPositionParticipants(p.getID()); } } return result; }
/** * Gets the immediate supervisor of a participant. If the participant holds multiple positions, * and therefore has multiple supervisors, one is returned as a random selection. * * @param p the participant to get the supervisor of * @return the Participant who is the supervisor of the pid passed, or null if there is no * supervisor. */ public Participant getImmediateSupervisor(Participant p) { if (p != null) { for (Position position : p.getPositions()) { Position superPosition = position.getReportsTo(); if (superPosition != null) { Set<AbstractResource> resources = superPosition.getResources(); if (!resources.isEmpty()) { return (Participant) resources.iterator().next(); } } } } return null; }
public String addPosition(Position p) { if (isDataEditable(ResUnit.Position)) { String newID = getDataSource(ResUnit.Position).insert(p); // persist it if (!hasDefaultDataSource(ResUnit.Position)) p.setID(newID); putPosition(p); // ...and add it to the data set return newID; } else return fail("External Position dataset is read-only"); }
public synchronized void removeOrgGroup(OrgGroup o) { if (isDataEditable(ResUnit.OrgGroup)) { for (Position position : getPositions()) { OrgGroup group = position.getOrgGroup(); if ((group != null) && group.getID().equals(o.getID())) { position.setOrgGroup((OrgGroup) null); getDataSource(ResUnit.Position).update(position); } } for (OrgGroup group : getOrgGroups()) { OrgGroup owner = group.getBelongsTo(); if ((owner != null) && owner.getID().equals(o.getID())) { group.setBelongsTo((OrgGroup) null); getDataSource(ResUnit.OrgGroup).update(group); } } delOrgGroup(o); getDataSource(ResUnit.OrgGroup).delete(o); } }
public synchronized void removePosition(Position p) { if (isDataEditable(ResUnit.Position)) { disconnectResources(p); for (Position position : getPositions()) { Position boss = position.getReportsTo(); if ((boss != null) && boss.getID().equals(p.getID())) { position.setReportsTo((Position) null); getDataSource(ResUnit.Position).update(position); } } delPosition(p); getDataSource(ResUnit.Position).delete(p); } }
public String checkCyclicPositionReference(Position position, String refID) { String result = null; List<String> hierarchy = new ArrayList<String>(); hierarchy.add(position.getTitle()); Position owner = getPosition(refID); String refName = owner.getTitle(); // title of posn attempting to add to while (owner != null) { hierarchy.add(owner.getTitle()); if (owner.equals(position)) { result = constructCyclicAttributeErrorMessage(hierarchy, "position", refName); break; } owner = owner.getReportsTo(); } return result; }
public void delPosition(Position p) { positionMap.remove(p.getID()); setChangeStamp(ResUnit.Position); }
public void putPosition(Position p) { positionMap.put(p.getID(), p); setChangeStamp(ResUnit.Position); }
public Set<Participant> getPositionParticipants(String pid) { Position p = positionMap.get(pid); return (p != null) ? castToParticipantSet(p.getResources()) : null; }