idfactory.java

来自「jawe的最新版本,基于Java的图形化工作流编辑器。图形化工作流编辑器 。使用」· Java 代码 · 共 165 行

JAVA
165
字号
package org.enhydra.jawe.base.idfactory;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;import org.enhydra.jawe.JaWEComponent;import org.enhydra.shark.xpdl.XMLCollection;import org.enhydra.shark.xpdl.XMLCollectionElement;import org.enhydra.shark.xpdl.XMLElement;import org.enhydra.shark.xpdl.XMLUtil;import org.enhydra.shark.xpdl.elements.Activities;import org.enhydra.shark.xpdl.elements.Activity;import org.enhydra.shark.xpdl.elements.ActivitySet;import org.enhydra.shark.xpdl.elements.ActivitySets;import org.enhydra.shark.xpdl.elements.Applications;import org.enhydra.shark.xpdl.elements.DataFields;import org.enhydra.shark.xpdl.elements.FormalParameters;import org.enhydra.shark.xpdl.elements.Participants;import org.enhydra.shark.xpdl.elements.Tool;import org.enhydra.shark.xpdl.elements.Transition;import org.enhydra.shark.xpdl.elements.Transitions;import org.enhydra.shark.xpdl.elements.TypeDeclarations;import org.enhydra.shark.xpdl.elements.WorkflowProcess;import org.enhydra.shark.xpdl.elements.WorkflowProcesses;/** * Factory for generating XPDL objects. * @author Sasa Bojanic */public class IdFactory {   protected IdFactorySettings settings;      public IdFactory () {      settings = new IdFactorySettings();      settings.init((JaWEComponent) null);   }   public IdFactory(IdFactorySettings settings) {      this.settings = settings;      this.settings.init((JaWEComponent) null);   }      public String generateUniqueId (XMLCollection cel) {      return generateUniqueId(cel,new HashSet());   }   public String generateUniqueId (XMLCollection cel,Set skipIds) {      String id;      long nextId=0;      String prefix="";      if (!(cel instanceof WorkflowProcesses)) {         prefix=XMLUtil.getPackage(cel).getId()+"_";         if (XMLUtil.getWorkflowProcess(cel)!=null) {         	prefix=XMLUtil.getWorkflowProcess(cel).getId()+"_";         }         if (cel instanceof Activities) {            prefix+="act";         } else if (cel instanceof ActivitySets) {            prefix+="ase";         } else if (cel instanceof Applications) {            prefix+="app";         } else if (cel instanceof DataFields) {            prefix+="df";         } else if (cel instanceof FormalParameters) {            prefix+="fp";         } else if (cel instanceof Participants) {            prefix+="par";         } else if (cel instanceof Transitions) {            prefix+="tra";         } else if (cel instanceof TypeDeclarations) {            prefix+="td";         }      } else if (cel instanceof WorkflowProcesses) {         prefix=XMLUtil.getPackage(cel).getId()+"_wp";      }            XMLCollectionElement cl = (XMLCollectionElement)cel.generateNewElement();      do {         id=prefix+new Long(++nextId).toString();      } while (skipIds.contains(id) || !isIdUnique(cl,id));      return id;   }      public String generateSimilarOrIdenticalUniqueId (XMLCollection cel,Set skipIds,String origId) {      String id=origId;      long nextId=0;            XMLCollectionElement cl = (XMLCollectionElement)cel.generateNewElement();      while (id.equals("") || skipIds.contains(id) || !isIdUnique(cl,id)) {         id=origId+new Long(++nextId).toString();      }      return id;   }   public boolean isIdUnique (XMLCollectionElement el,String newId) {            XMLElement parent=el.getParent();      if(el instanceof Tool) return true;      else if(el instanceof Activity) return checkActivityId( (Activity)el,newId );      else if(el instanceof Transition) return checkTransitionId( (Transition)el,newId );      else if (parent instanceof XMLCollection) {         List elsWithId=getElementsForId((XMLCollection)parent, newId);         if (elsWithId.size()==0 || (elsWithId.size()==1 && elsWithId.contains(el))) {            return true;         }          return false;               } else {         return true;      }   }      public boolean checkActivityId (Activity newEl,String newId) {       WorkflowProcess proc = XMLUtil.getWorkflowProcess(newEl);               Activities acts = proc.getActivities();       List elsWithId=getElementsForId(acts, newId);       ActivitySets actSets = proc.getActivitySets();       for(int y = 0; y < actSets.size(); y++) {           ActivitySet actSet = (ActivitySet)actSets.get(y);           acts = actSet.getActivities();           elsWithId.addAll(getElementsForId(acts, newId));       }       if (elsWithId.size()==0 || (elsWithId.size()==1 && elsWithId.contains(newEl))) {          return true;       }return false;           }      public boolean checkTransitionId (Transition newEl,String newId) {      WorkflowProcess proc = XMLUtil.getWorkflowProcess(newEl);             Transitions trans = proc.getTransitions();      List elsWithId=getElementsForId(trans, newId);      ActivitySets actSets = proc.getActivitySets();      for(int y = 0; y < actSets.size(); y++) {         ActivitySet actSet = (ActivitySet)actSets.get(y);         trans = actSet.getTransitions();         elsWithId.addAll(getElementsForId(trans, newId));      }      if (elsWithId.size()==0 || (elsWithId.size()==1 && elsWithId.contains(newEl))) {         return true;      }      return false;    }     public List getElementsForId (XMLCollection col,String id) {      List elsWithId=new ArrayList();      Iterator it=col.toElements().iterator();      if (col.generateNewElement() instanceof XMLCollectionElement) {         while (it.hasNext()) {            XMLCollectionElement ce=(XMLCollectionElement)it.next();            if (ce.getId().equals(id)) {               elsWithId.add(ce);            }         }      }            return elsWithId;   }   }

⌨️ 快捷键说明

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