You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2006/11/29 18:29:57 UTC

svn commit: r480641 - /lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java

Author: andreas
Date: Wed Nov 29 09:29:55 2006
New Revision: 480641

URL: http://svn.apache.org/viewvc?view=rev&rev=480641
Log:
Make workflow overview available on area nodes

Modified:
    lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java

Modified: lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java?view=diff&rev=480641&r1=480640&r2=480641
==============================================================================
--- lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java (original)
+++ lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/usecases/MultiWorkflow.java Wed Nov 29 09:29:55 2006
@@ -28,10 +28,18 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.lenya.cms.publication.Area;
 import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.DocumentBuildException;
+import org.apache.lenya.cms.publication.DocumentException;
+import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.cms.publication.URLInformation;
 import org.apache.lenya.cms.site.SiteException;
 import org.apache.lenya.cms.site.SiteNode;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
+import org.apache.lenya.cms.site.SiteStructure;
+import org.apache.lenya.cms.usecase.AbstractUsecase;
 import org.apache.lenya.cms.usecase.UsecaseInvoker;
 import org.apache.lenya.cms.usecase.UsecaseMessage;
 import org.apache.lenya.util.Assert;
@@ -39,17 +47,13 @@
 /**
  * Manage the workflow of multiple documents.
  */
-public class MultiWorkflow extends DocumentUsecase {
+public class MultiWorkflow extends AbstractUsecase {
 
     protected void initParameters() {
         super.initParameters();
 
-        if (getSourceDocument() == null) {
-            return;
-        }
-        
         try {
-            List preOrder = getPreOrder(getSourceDocument().getLink().getNode());
+            List preOrder = getNodes();
             List wrappers = new ArrayList();
             SortedSet states = new TreeSet();
             for (Iterator i = preOrder.iterator(); i.hasNext();) {
@@ -67,6 +71,27 @@
         }
     }
 
+    protected List getNodes() throws DocumentBuildException, DocumentException, PublicationException {
+        List preOrder;
+        String sourceUrl = getSourceURL();
+        DocumentFactory factory = getDocumentFactory();
+        if (getDocumentFactory().isDocument(sourceUrl)) {
+            Document doc = factory.getFromURL(sourceUrl);
+            preOrder = getPreOrder(doc.getLink().getNode());
+        } else {
+            preOrder = new ArrayList();
+            URLInformation info = new URLInformation(getSourceURL());
+            Publication pub = factory.getPublication(info.getPublicationId());
+            Area area = pub.getArea(info.getArea());
+            SiteStructure site = area.getSite();
+            SiteNode[] topLevelNodes = site.getTopLevelNodes();
+            for (int i = 0; i < topLevelNodes.length; i++) {
+                preOrder.addAll(getPreOrder(topLevelNodes[i]));
+            }
+        }
+        return preOrder;
+    }
+
     protected List getPreOrder(SiteNode node) throws SiteException {
         List preOrder = new ArrayList();
         String[] langs = node.getLanguages();
@@ -83,37 +108,36 @@
 
     protected void doExecute() throws Exception {
         super.doExecute();
-        
+
         String usecase = getParameterAsString("usecaseName");
         Assert.notNull("usecase", usecase);
         String url = getParameterAsString("url");
         Assert.notNull("url", url);
-        
+
         UsecaseInvoker invoker = null;
         try {
             invoker = (UsecaseInvoker) this.manager.lookup(UsecaseInvoker.ROLE);
             invoker.invoke(url, usecase, new HashMap());
-            
+
             if (invoker.getResult() != UsecaseInvoker.SUCCESS) {
                 List messages = invoker.getErrorMessages();
-                for (Iterator i = messages.iterator(); i.hasNext(); ) {
+                for (Iterator i = messages.iterator(); i.hasNext();) {
                     UsecaseMessage message = (UsecaseMessage) i.next();
                     addErrorMessage(message.getMessage(), message.getParameters());
                 }
             }
-        }
-        finally {
+        } finally {
             if (invoker == null) {
                 this.manager.release(invoker);
             }
         }
     }
-    
+
     private Map usecase2event = new HashMap();
 
     public void configure(Configuration config) throws ConfigurationException {
         super.configure(config);
-        
+
         Configuration[] usecaseConfigs = config.getChildren("usecase");
         for (int i = 0; i < usecaseConfigs.length; i++) {
             String usecase = usecaseConfigs[i].getAttribute("name");
@@ -121,14 +145,14 @@
             this.usecase2event.put(usecase, event);
         }
     }
-    
+
     /**
      * @param event An event.
      * @return All usecases associated with this event.
      */
     public String[] getUsecases(String event) {
         SortedSet usecases = new TreeSet();
-        for (Iterator i = this.usecase2event.keySet().iterator(); i.hasNext(); ) {
+        for (Iterator i = this.usecase2event.keySet().iterator(); i.hasNext();) {
             String usecase = (String) i.next();
             if (this.usecase2event.get(usecase).equals(event)) {
                 usecases.add(usecase);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org