001: package org.enhydra.jawe.components.graph;
002:
003: import java.util.HashSet;
004: import java.util.Set;
005:
006: import org.enhydra.jawe.JaWEManager;
007: import org.enhydra.jawe.base.tooltip.TooltipGenerator;
008: import org.enhydra.shark.xpdl.XMLComplexElement;
009: import org.enhydra.shark.xpdl.elements.Participant;
010:
011: /**
012: * Used to define Participant object in process. Participant is a container
013: * for activities, subflows and other departmnet objects. Activities and
014: * subflow can be moved from one to the other Participant.
015: *
016: * @author Sasa Bojanic
017: */
018: public class DefaultGraphParticipant extends GraphParticipantInterface {
019:
020: /**
021: * Creates Participant with given userObject.
022: */
023: public DefaultGraphParticipant(Participant par) {
024: super ();
025: setUserObject(par);
026: }
027:
028: /**
029: * Returns true if participant is a container for any other participant.
030: */
031: public boolean hasAnyParticipant() {
032: for (int i = 0; i < getChildCount(); i++) {
033: if (getChildAt(i) instanceof GraphParticipantInterface) {
034: return true;
035: }
036: }
037: return false;
038: }
039:
040: /**
041: * Returns the number of participant's children participants (number of
042: * participants for which it is a container).
043: */
044: public int howManyChildParticipants() {
045: int cd = 0;
046: for (int i = 0; i < getChildCount(); i++) {
047: if (getChildAt(i) instanceof GraphParticipantInterface) {
048: cd++;
049: }
050: }
051: return cd;
052: }
053:
054: /**
055: * Returns participant's children participants (participants for which
056: * it is a container).
057: */
058: public Set getChildParticipants() {
059: Set childParticipants = new HashSet();
060: for (int i = 0; i < getChildCount(); i++) {
061: Object child = getChildAt(i);
062: if (child instanceof GraphParticipantInterface) {
063: childParticipants.add(child);
064: }
065: }
066: return childParticipants;
067: }
068:
069: public XMLComplexElement getPropertyObject() {
070: if (userObject instanceof Participant) {
071: return (XMLComplexElement) userObject;
072: }
073: return null;
074: }
075:
076: /**
077: * Gets a tooltip text for participant.
078: */
079: public String getTooltip() {
080: TooltipGenerator ttg = JaWEManager.getInstance()
081: .getTooltipGenerator();
082: if (userObject != null && ttg != null) {
083: return ttg.getTooltip(getPropertyObject());
084: }
085: return "";
086: }
087:
088: /**
089: * Gets an participant name property.
090: */
091: public String toString() {
092: String name = null;
093: if (userObject != null) {
094: name = getPropertyObject().get("Name").toValue();
095: if (name.equals("")) {
096: name = getPropertyObject().get("Id").toValue();
097: }
098: }
099: return name;
100: }
101:
102: /**
103: * Create a clone of the user object.
104: * @return Object a clone of this participant property object.
105: */
106: protected Object cloneUserObject() {
107: return null;
108: }
109:
110: public String getType() {
111: return JaWEManager.getInstance().getJaWEController()
112: .getTypeResolver()
113: .getJaWEType((Participant) userObject).getTypeId();
114: }
115: }
|