1 package de.webman.content.workflow; 2 3 import com.teamkonzept.lib.TKHashtable; 4 import com.teamkonzept.db.*; 5 import com.teamkonzept.lib.TKVector; 6 import com.teamkonzept.lib.TKSortableInteger; 7 import com.teamkonzept.webman.mainint.events.TKUserException; 8 import com.teamkonzept.webman.mainint.db.queries.*; 9 import de.webman.content.workflow.db.*; 10 import de.webman.content.*; 11 12 import java.util.Vector ; 13 import java.util.Enumeration ; 14 import java.util.Hashtable ; 15 import java.sql.*; 16 17 import org.apache.log4j.Category; 18 19 24 public class WorkflowEngine 25 { 26 27 private static Category cat = Category.getInstance(WorkflowEngine.class); 28 29 33 public static void getInterestingVersionsPerInstance(Content content) 34 { 35 if ( cat.isDebugEnabled() ){ 38 cat.debug("Started Workflow for content " + content); 39 } 40 TKVector versions = content.getAllVersions(); 43 TKHashtable interesting = new TKHashtable(); 44 45 interesting = getInteresting(versions, interesting); 47 content.setInterestingVersions(interesting); 49 } 50 51 private static TKHashtable getInteresting(TKVector versions, TKHashtable interesting) 52 { 53 if (versions.size() == 0) 54 return interesting; 55 ContentVersion version = (ContentVersion)versions.elementAt(0); 56 versions.removeElementAt(0); 57 Integer statusId = new Integer ( version.getStatus().status_id); 58 if (interesting.size() == 0) 59 interesting.put(statusId, version); 60 else 61 { 62 updateInteresting(statusId, interesting, version); 63 } 64 return getInteresting(versions, interesting); 65 66 } 67 68 69 77 private static void updateInteresting(Integer status, TKHashtable interesting, ContentVersion versionData) 78 { 79 VersionStatics statics = VersionStatics.setup(); 80 Enumeration e = interesting.keys(); 81 while (e.hasMoreElements()) 82 { 83 Integer fromStatus = (Integer )e.nextElement(); 84 85 TKHashtable dest = (TKHashtable) statics.getTransitions().get (fromStatus); 86 VersionStatusTransitionDBData dbData = 87 (VersionStatusTransitionDBData) dest.get (status); 88 if (dbData.delete) 89 { 90 interesting.remove (fromStatus); 91 } 92 } 93 interesting.put (status,versionData); 94 } 95 96 } 97 98 | Popular Tags |