xlawrence    2005/07/29 15:15:51 CEST

  Modified files:
    core/src/java/org/jahia/engines/workflow 
                                             AdvancedWorkflowEngine.java 
  Log:
  cleanup
  
  Revision  Changes    Path
  1.16      +187 -180  
jahia/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java.diff?r1=1.15&r2=1.16&f=h
  
  
  
  Index: AdvancedWorkflowEngine.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/workflow/AdvancedWorkflowEngine.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- AdvancedWorkflowEngine.java       25 Jul 2005 08:28:15 -0000      1.15
  +++ AdvancedWorkflowEngine.java       29 Jul 2005 13:15:50 -0000      1.16
  @@ -1,5 +1,16 @@
   package org.jahia.engines.workflow;
   
  +import java.util.ArrayList;
  +import java.util.Collection;
  +import java.util.Enumeration;
  +import java.util.HashMap;
  +import java.util.HashSet;
  +import java.util.Iterator;
  +import java.util.List;
  +import java.util.Map;
  +import java.util.Set;
  +import java.util.StringTokenizer;
  +import java.util.Vector;
   import org.jahia.content.ContentObject;
   import org.jahia.content.JahiaObject;
   import org.jahia.content.ObjectKey;
  @@ -9,12 +20,12 @@
   import org.jahia.engines.EngineToolBox;
   import org.jahia.engines.validation.EngineValidationHelper;
   import org.jahia.engines.JahiaEngine;
  +import org.jahia.engines.workflow.WorkflowEngine.PageNotifData;
   import org.jahia.exceptions.JahiaException;
   import org.jahia.params.ProcessingContext;
   import org.jahia.registries.ServicesRegistry;
   import org.jahia.resourcebundle.JahiaResourceBundle;
   import org.jahia.services.cache.Cache;
  -import org.jahia.services.cache.CacheFactory;
   import org.jahia.services.lock.LockKey;
   import org.jahia.services.lock.LockService;
   import org.jahia.services.pages.ContentPage;
  @@ -29,7 +40,6 @@
   import org.jahia.services.workflow.ExternalWorkflow;
   import org.jahia.services.workflow.WorkflowService;
   
  -import java.util.*;
   
   /**
    * Created by IntelliJ IDEA.
  @@ -40,7 +50,6 @@
    */
   public class AdvancedWorkflowEngine extends WorkflowEngine {
   
  -
       private final String CLASS_NAME = this.getClass().getName();
       private static final String TEMPLATE_JSP = "advworkflow";
       private HashMap _lastDisplay = new HashMap();
  @@ -63,7 +72,6 @@
       private final static String ACCEPT = "default";
       private final static String REFUSE = "reject";
   
  -
       protected AdvancedWorkflowEngine() {
           logger.debug("Starting Workflow Engine");
           toolBox = EngineToolBox.getInstance();
  @@ -94,14 +102,13 @@
        * @return The composed URL; on s'en serait doute...
        * @throws JahiaException
        */
  -    public String renderLink(ProcessingContext jParams, Object theObj)
  +    public String renderLink(final ProcessingContext jParams, final Object 
theObj)
               throws JahiaException {
  -        JahiaUser user = jParams.getUser();
  -        String params = "";
  +        final JahiaUser user = jParams.getUser();
  +        final String params = "?screen=display&obj="+theObj;
           // Per default set the engines to the notification completed pages 
if the
           // user has admin accesses.
   //            _lastDisplay.put(jParams.getSessio nID(), _tabOptions[1]);
  -        params = "?screen=display&obj="+theObj;
   
           return jParams.composeEngineUrl("workflow", params );
       }
  @@ -119,24 +126,24 @@
        * @param jData not used
        * @throws JahiaException
        */
  -    public EngineValidationHelper handleActions(ProcessingContext jParams, 
JahiaData jData)
  -            throws JahiaException {
  +    public EngineValidationHelper handleActions(final ProcessingContext 
jParams, 
  +            final JahiaData jData) throws JahiaException {
   
  -        JahiaUser user = jParams.getUser();
  +        final JahiaUser user = jParams.getUser();
   //        if (!(jParams.getPage().checkWriteAccess(user) || 
jParams.getPage().checkAdminAccess(user))) {
   //            throw new JahiaException("Workflow engines access denied",
   //                                     "User '" + user.getUsername() + "' 
has no permission to acccess this engines",
   //                                     JahiaException.ENGINE_ERROR, 
JahiaException.WARNING_SEVERITY);
   //        }
   
  -        int pageInfosFlag = ContentPage.ACTIVE_PAGE_INFOS | 
ContentPage.STAGING_PAGE_INFOS;
  -        HashMap engineMap = new HashMap();
  +        final int pageInfosFlag = ContentPage.ACTIVE_PAGE_INFOS | 
ContentPage.STAGING_PAGE_INFOS;
  +        final HashMap engineMap = new HashMap();
   
           // fetch workflow for this page
   
           // get available actions for this user
   
  -        String actionScreen = jParams.getParameter("screen");
  +        final String actionScreen = jParams.getParameter("screen");
           
           logger.debug("handleActions: " + actionScreen);
   
  @@ -148,30 +155,30 @@
   //        ServicesRegistry.getInstance().
   //                
getJahiaPageService().lookupContentPage(jParams.getObjectKey(), false);
   
  -        JahiaSiteMapService siteMapService = ServicesRegistry.getInstance().
  +        final JahiaSiteMapService siteMapService = 
ServicesRegistry.getInstance().
                   getJahiaSiteMapService();
   
           // Has the user made a site map handling (collapse, expand...)...
  -        String siteMapParam = jParams.getParameter("sitemap");
  +        final String siteMapParam = jParams.getParameter("sitemap");
           if (siteMapParam != null) {
               
siteMapService.invokeWorkflowSiteMapViewHelperMethod(jParams.getUser(),
                       contentPage, jParams.getSessionID(), pageInfosFlag,
                       null, siteMapParam);
           }
   
  -        WorkflowSiteMapViewHelper treeSiteMapViewHelper = 
(WorkflowSiteMapViewHelper) siteMapService.
  +        final WorkflowSiteMapViewHelper treeSiteMapViewHelper = 
(WorkflowSiteMapViewHelper) siteMapService.
                   getWorkflowSiteMapViewHelper(jParams.getUser(), contentPage,
                   jParams.getSessionID(), pageInfosFlag, null, 
SiteMapViewHelper.DEFAULT_LEVEL);
   //        SiteMapViewHelper treeSiteMapViewHelper = new 
WorkflowSiteMapViewHelper(jParams.getUser(), contentPage,
   //                pageInfosFlag, null, SiteMapViewHelper.DEFAULT_LEVEL);
   
  -        WorkflowHelper workflowHelper = getWorkflowHelper(jParams, 
treeSiteMapViewHelper);
  +        final WorkflowHelper workflowHelper = getWorkflowHelper(jParams, 
treeSiteMapViewHelper);
           logger.debug("workflowHelper: " + workflowHelper);
   
           // screen = display
           if ("display".equals(actionScreen)) {
   
  -            List allOptions = workflowHelper.getAllOptions();
  +            final List allOptions = workflowHelper.getAllOptions();
   
               initEngineMap(jParams, engineMap, allOptions);
               engineMap.put("treeJahiaSiteMap", treeSiteMapViewHelper);
  @@ -180,14 +187,14 @@
               // #ifdef LOCK
               if (jParams.settings().areLocksActivated()) {
                   // Lock all page site if possible.
  -                HashMap lockInformationsMap = new HashMap();
  -                LockService lockRegistry = 
ServicesRegistry.getInstance().getLockService();
  +                final HashMap lockInformationsMap = new HashMap();
  +                final LockService lockRegistry = 
ServicesRegistry.getInstance().getLockService();
                   for (int i = 0; i < treeSiteMapViewHelper.size(); i++) {
  -                    ContentObject siteMapContentPage = 
treeSiteMapViewHelper.getContentObject(i);
  +                    final ContentObject siteMapContentPage = 
treeSiteMapViewHelper.getContentObject(i);
                       if (siteMapContentPage != null) {
                           // can put WORKFLOW_TYPE locks only on pages
                           if (siteMapContentPage instanceof ContentPage) {
  -                            LockKey lockKey = 
LockKey.composeLockKey(LockKey.WORKFLOW_TYPE,
  +                            final LockKey lockKey = 
LockKey.composeLockKey(LockKey.WORKFLOW_TYPE,
                                       siteMapContentPage.getID(), 
siteMapContentPage.getID());
                               if (lockRegistry.acquire(lockKey, user, 
jParams.getSessionID(),
                                       
jParams.getSessionState().getMaxInactiveInterval())) {
  @@ -206,7 +213,7 @@
               String action = null;
               final Iterator iterator = allOptions.iterator();
               while (iterator.hasNext()) {
  -                ActionEntry actionEntry = (ActionEntry) iterator.next();
  +                final ActionEntry actionEntry = (ActionEntry) 
iterator.next();
                   if (display == null) {
                       display = actionEntry.getWorkflowKey();
                       action = actionEntry.getKey();
  @@ -240,12 +247,12 @@
   
   
                   // Init parameters map
  -                Map params = new HashMap();
  +                final Map params = new HashMap();
                   if (action.indexOf('.')>0) {
  -                    String name = action.substring(0,action.indexOf('.'));
  -                    String processId = 
action.substring(action.indexOf('.')+1, action.lastIndexOf('.'));
  -                    String actionName = 
action.substring(action.lastIndexOf('.')+1);
  -                    ExternalWorkflow workflow = 
service.getExternalWorkflow(name);
  +                    final String name = 
action.substring(0,action.indexOf('.'));
  +                    final String processId = 
action.substring(action.indexOf('.')+1, action.lastIndexOf('.'));
  +                    final String actionName = 
action.substring(action.lastIndexOf('.')+1);
  +                    final ExternalWorkflow workflow = 
service.getExternalWorkflow(name);
                       engineMap.put("activeParameters", 
workflow.getParameterForm(processId, actionName, jParams));
                   } else {
                       engineMap.put("activeParameters", 
getDefaultParams(approveRefusePendingPages.equals(action), jParams));
  @@ -317,140 +324,138 @@
           return null;
       }
   
  -    private WorkflowHelper getWorkflowHelper(ProcessingContext jParams, 
WorkflowSiteMapViewHelper treeSiteMapViewHelper) throws JahiaException{
  -        WorkflowHelper workflowHelper = new WorkflowHelper(jParams);
  -
  +    private WorkflowHelper getWorkflowHelper(final ProcessingContext jParams,
  +            final WorkflowSiteMapViewHelper treeSiteMapViewHelper) throws 
JahiaException{
  +        final WorkflowHelper workflowHelper = new WorkflowHelper(jParams);
  +        
   //        String actionName = jParams.getParameter("display");
  -
  -        int size = treeSiteMapViewHelper.size();
  +        
  +        final int size = treeSiteMapViewHelper.size();
           for (int i = 0; i < size; i++) {
               if (treeSiteMapViewHelper.getContentObject(i) == null) {
                   continue;
               }
  -            ContentObject object = treeSiteMapViewHelper.getContentObject(i);
  -
  +            final ContentObject object = 
treeSiteMapViewHelper.getContentObject(i);
  +            
               if (object.getClass() == ContentPage.class && 
((ContentPage)object).hasSameParentID() == 
treeSiteMapViewHelper.getParentPageID(i)) {
                   // Page has been moved, do not enter an entry for it
                   continue;
               }
  -
  -            int mode = service.getInheritedMode(object);
  -            ContentObject inheritingParent = 
service.getInheritingParent(object);
  -
  +            
  +            final int mode = service.getInheritedMode(object);
  +            final ContentObject inheritingParent = 
service.getInheritingParent(object);
  +            
   //            LockKey lockKey = 
LockKey.composeLockKey(LockKey.WORKFLOW_TYPE, object.getID(), object.getID());
   //            LockPrerequisites lockPrerequisites = 
LockPrerequisites.getInstance();
   //            LockPrerequisitesResult lockPrerequisitesResult = 
lockPrerequisites.getLockPrerequisitesResult(lockKey);
   //            boolean isLocked = lockPrerequisitesResult != null && 
lockPrerequisitesResult.getResultsList().size() > 0;
  -            Vector languageSettings = 
jParams.getSite().getLanguageSettings();
  -            boolean isLocked = false;
  -            Enumeration languageEnum = languageSettings.elements();
  -
  -            if (!isLocked) {
  -                WorkflowHelperEntry entry;
  -                if (mode == WorkflowService.EXTERNAL) {
  -                    String workflowName = 
service.getInheritedExternalWorkflowName(object);
  -                    String processId = 
service.getInheritedExternalWorkflowProcessId(object);
  -                    entry = 
workflowHelper.addEntry(object.getObjectKey(),mode,workflowName,processId, 
jParams);
  -                } else {
  -                    entry = 
workflowHelper.addEntry(object.getObjectKey(),mode,null,null, jParams);
  -                }
  -                while (languageEnum.hasMoreElements()) {
  -                    SiteLanguageSettings siteLanguageSettings = 
(SiteLanguageSettings)languageEnum.nextElement();
  -                    Map languagesStates = 
WorkflowService.getInstance().getLanguagesStates(object);
  +            final Vector languageSettings = 
jParams.getSite().getLanguageSettings();
  +            final Enumeration languageEnum = languageSettings.elements();
  +            
  +            final WorkflowHelperEntry entry;
  +            if (mode == WorkflowService.EXTERNAL) {
  +                final String workflowName = 
service.getInheritedExternalWorkflowName(object);
  +                final String processId = 
service.getInheritedExternalWorkflowProcessId(object);
  +                entry = 
workflowHelper.addEntry(object.getObjectKey(),mode,workflowName,processId, 
jParams);
  +            } else {
  +                entry = 
workflowHelper.addEntry(object.getObjectKey(),mode,null,null, jParams);
  +            }
  +            while (languageEnum.hasMoreElements()) {
  +                final SiteLanguageSettings siteLanguageSettings = 
(SiteLanguageSettings)languageEnum.nextElement();
  +                final Map languagesStates = 
WorkflowService.getInstance().getLanguagesStates(object);
   //                        ContentPage contentPage = (ContentPage) object;
  -                    String languageCode = siteLanguageSettings.getCode();
  -                    Integer languageState = 
(Integer)languagesStates.get(languageCode);
  -                    Integer sharedLanguageState = 
(Integer)languagesStates.get(ContentObject.SHARED_LANGUAGE);
  -                    if (languageState != null && languageState.intValue() != 
-1) {
  -                        if ( sharedLanguageState != null && 
languageState.intValue() < sharedLanguageState.intValue() ){
  -                            languageState = sharedLanguageState;
  -                        }
  -                        boolean isWaitingState = languageState.intValue() == 
EntryLoadRequest.WAITING_WORKFLOW_STATE;
  -                        boolean isActiveState = languageState.intValue() == 
EntryLoadRequest.ACTIVE_WORKFLOW_STATE;
  -                        boolean isStagingState = languageState.intValue() == 
EntryLoadRequest.STAGING_WORKFLOW_STATE;
  -                        if (object.getClass() == ContentPage.class && 
((ContentPage)object).hasSameParentID() == 
treeSiteMapViewHelper.getParentPageID(i)) {
  -                            // Page moved
  -                            break;
  -                        }
  -
  -
  -                        List availableOptions = new ArrayList();
  -
  -                        if (mode == WorkflowService.INACTIVE) {
  -                            if (!isActiveState) {
  -                                if 
(jParams.getPage().checkWriteAccess(jParams.getUser())) {
  -                                    availableOptions.add( new 
ActionEntry(approvePendingPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  -                                            ACCEPT));
  -                                }
  +                final String languageCode = siteLanguageSettings.getCode();
  +                Integer languageState = 
(Integer)languagesStates.get(languageCode);
  +                final Integer sharedLanguageState = 
(Integer)languagesStates.get(ContentObject.SHARED_LANGUAGE);
  +                if (languageState != null && languageState.intValue() != -1) 
{
  +                    if ( sharedLanguageState != null && 
languageState.intValue() < sharedLanguageState.intValue() ){
  +                        languageState = sharedLanguageState;
  +                    }
  +                    final boolean isWaitingState = languageState.intValue() 
== EntryLoadRequest.WAITING_WORKFLOW_STATE;
  +                    final boolean isActiveState = languageState.intValue() 
== EntryLoadRequest.ACTIVE_WORKFLOW_STATE;
  +                    final boolean isStagingState = languageState.intValue() 
== EntryLoadRequest.STAGING_WORKFLOW_STATE;
  +                    if (object.getClass() == ContentPage.class && 
((ContentPage)object).hasSameParentID() == 
treeSiteMapViewHelper.getParentPageID(i)) {
  +                        // Page moved
  +                        break;
  +                    }
  +                    
  +                    final List availableOptions = new ArrayList();
  +                    
  +                    if (mode == WorkflowService.INACTIVE) {
  +                        if (!isActiveState) {
  +                            if 
(jParams.getPage().checkWriteAccess(jParams.getUser())) {
  +                                availableOptions.add( new 
ActionEntry(approvePendingPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  +                                        ACCEPT));
                               }
  -                        } else if (mode == WorkflowService.JAHIA_INTERNAL) {
  -                            if (isWaitingState) {
  -                                if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
  -                                    availableOptions.add(new 
ActionEntry(approvePendingPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  -                                            ACCEPT));
  -                                    availableOptions.add( new 
ActionEntry(approvePendingPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  -                                            REFUSE));
  -                                }
  -                            } else if (isStagingState) {
  -                                if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
  -                                    availableOptions.add( new 
ActionEntry(approvePendingPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  -                                            ACCEPT));
  -                                }
  -                                if 
(jParams.getPage().checkWriteAccess(jParams.getUser())) {
  -                                    availableOptions.add(new 
ActionEntry(notifyCompletedPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.NotifyCompletedPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale())));
  -                                }
  +                        }
  +                    } else if (mode == WorkflowService.JAHIA_INTERNAL) {
  +                        if (isWaitingState) {
  +                            if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
  +                                availableOptions.add(new 
ActionEntry(approvePendingPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  +                                        ACCEPT));
  +                                availableOptions.add( new 
ActionEntry(approvePendingPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  +                                        REFUSE));
                               }
  -                        } else if (mode == WorkflowService.EXTERNAL) {
  -                            ExternalWorkflow workflow = 
entry.getExternalWorkflow();
  -                            String processId = 
service.getInheritedExternalWorkflowProcessId(object);
  -
  -                            boolean processStarted = 
workflow.isProcessStarted(processId, object.getObjectKey().toString(), 
languageCode);
  -
  -                            if (!isActiveState || processStarted) {
  -                                if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
  -                                    availableOptions.add( new 
ActionEntry(approvePendingPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  -                                            ACCEPT));
  -                                    availableOptions.add( new 
ActionEntry(approvePendingPages,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  -                                            jahiaWorkflow,
  -                                            
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  -                                            REFUSE));
  -                                }
  +                        } else if (isStagingState) {
  +                            if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
  +                                availableOptions.add( new 
ActionEntry(approvePendingPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  +                                        ACCEPT));
  +                            }
  +                            if 
(jParams.getPage().checkWriteAccess(jParams.getUser())) {
  +                                availableOptions.add(new 
ActionEntry(notifyCompletedPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.NotifyCompletedPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale())));
                               }
  -
  -                            if (processStarted) {
  -                                Collection tempAvailableOptions = 
workflow.getAvailableActions(processId, 
object.getObjectKey().toString(),languageCode, jParams);
  -                                for (Iterator iterator = 
tempAvailableOptions.iterator(); iterator.hasNext();) {
  -                                    String option = (String) iterator.next();
  -                                    availableOptions.add(new 
ActionEntry(entry.getWorkflowName()+"."+entry.getProcessId()+"."+option, 
workflow.getActionName(processId, option), processId, 
workflow.getProcessName(processId)));
  -                                }
  +                        }
  +                    } else if (mode == WorkflowService.EXTERNAL) {
  +                        final ExternalWorkflow workflow = 
entry.getExternalWorkflow();
  +                        final String processId = 
service.getInheritedExternalWorkflowProcessId(object);
  +                        
  +                        final boolean processStarted = 
workflow.isProcessStarted(processId, object.getObjectKey().toString(), 
languageCode);
  +                        
  +                        if (!isActiveState || processStarted) {
  +                            if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
  +                                availableOptions.add( new 
ActionEntry(approvePendingPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  +                                        ACCEPT));
  +                                availableOptions.add( new 
ActionEntry(approvePendingPages,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.ApprovePendingPages.label",
 jParams, jParams.getLocale()),
  +                                        jahiaWorkflow,
  +                                        
JahiaResourceBundle.getEngineResource("org.jahia.engines.workflow.WorkflowEngine.JahiaWorkflow.label",
 jParams, jParams.getLocale()),
  +                                        REFUSE));
                               }
                           }
  -                        if (!availableOptions.isEmpty()) {
  -                            
workflowHelper.addLanguageItem(object.getObjectKey(),languageCode, 
availableOptions);
  +                        
  +                        if (processStarted) {
  +                            final Collection tempAvailableOptions = 
workflow.getAvailableActions(processId, 
object.getObjectKey().toString(),languageCode, jParams);
  +                            final Iterator iterator = 
tempAvailableOptions.iterator();
  +                            while ( iterator.hasNext() ) {
  +                                final String option = (String) 
iterator.next();
  +                                availableOptions.add(new 
ActionEntry(entry.getWorkflowName()+"."+entry.getProcessId()+"."+option, 
workflow.getActionName(processId, option), processId, 
workflow.getProcessName(processId)));
  +                            }
                           }
                       }
  +                    if (!availableOptions.isEmpty()) {
  +                        
workflowHelper.addLanguageItem(object.getObjectKey(),languageCode, 
availableOptions);
  +                    }
                   }
               }
  -
  +            
   //                    Map languagesStates = page.getLanguagesStates(true);
   //                    Set lang = page.getStagingLanguages(false, true);
   //                    String languageCode = siteLanguageSettings.getCode();
  @@ -466,8 +471,9 @@
           return workflowHelper;
       }
   
  -    private String getDefaultParams(boolean includeAcceptRefuseMenu, 
ProcessingContext jParams) {
  -        StringBuffer  res = new StringBuffer();
  +    private String getDefaultParams(final boolean includeAcceptRefuseMenu, 
  +            final ProcessingContext jParams) {
  +        final StringBuffer res = new StringBuffer();
           if (includeAcceptRefuseMenu) {
               res.append("<input type=\"radio\" name=\"acceptRefuse\" 
value=\"accept\" checked>Accept <input type=\"radio\" name=\"acceptRefuse\" 
value=\"refuse\">Refuse<br>");
           }
  @@ -481,7 +487,8 @@
        * @param jParams ;)
        * @throws JahiaException
        */
  -    private void initEngineMap (ProcessingContext jParams, HashMap 
engineMap, List options)
  +    private void initEngineMap (final ProcessingContext jParams, 
  +            final HashMap engineMap, final List options)
               throws JahiaException {
           logger.debug("initEngineMap");
           engineMap.clear();
  @@ -508,38 +515,39 @@
        *
        * @param jParams ;)
        */
  -    private void applyModifications(ProcessingContext jParams, 
WorkflowHelper workflowHelper)
  +    private void applyModifications(final ProcessingContext jParams, 
  +            final WorkflowHelper workflowHelper)
               throws JahiaException {
           // Get the cache instance BEFORE applying any modification in case 
the cache cannot
           // be found for any mysterious reason ;o) THIS SHOULD STAY THE FIRST 
ACTION TO
           // PREVENT THE NECESSITY OF ROLLLING BACK PREVIOUS OPERATIONS IN 
CASE THE CACHE
           // IN NOT AVAILABLE!!
  -        Cache pageChildCache = 
ServicesRegistry.getInstance().getCacheService().getCache(JahiaPageService.PAGE_CHILD_CACHE);
  +        final Cache pageChildCache = 
ServicesRegistry.getInstance().getCacheService().getCache(JahiaPageService.PAGE_CHILD_CACHE);
           if (pageChildCache == null)
               throw new JahiaException ("Internal Cache error", "Could not get 
the cache ["+
                       JahiaPageService.PAGE_CHILD_CACHE +"] instance.",
                       JahiaException.CACHE_ERROR, 
JahiaException.CRITICAL_SEVERITY);
   
  -        JahiaSaveVersion saveVersion = ServicesRegistry.getInstance 
().getJahiaVersionService ().
  +        final JahiaSaveVersion saveVersion = ServicesRegistry.getInstance 
().getJahiaVersionService ().
                   getSiteSaveVersion (jParams.getSiteID ());
   
  -        Map selectedEntries = new HashMap();
  +        final Map selectedEntries = new HashMap();
   
  -        String action  = (String) _lastAction.get(jParams.getSessionID());
  +        final String action  = (String) 
_lastAction.get(jParams.getSessionID());
   
  -        Iterator paramNames = jParams.getParameterNames();
  +        final Iterator paramNames = jParams.getParameterNames();
           while (paramNames.hasNext()) {
  -            String paramName = (String)paramNames.next();
  -            String[] paramValues = jParams.getParameterValues(paramName);
  +            final String paramName = (String)paramNames.next();
  +            final String[] paramValues = 
jParams.getParameterValues(paramName);
               for (int i = 0; i < paramValues.length; i++) {
  -                StringTokenizer paramToken = new StringTokenizer(paramName, 
"|");
  +                final StringTokenizer paramToken = new 
StringTokenizer(paramName, "|");
                   // Look for the checkboxes
                   if (paramToken.hasMoreTokens() && 
"checkbox".equals(paramToken.nextToken())) {
                       try {
  -                        String languageCode = paramToken.nextToken();
  -                        String objectKeyStr = paramToken.nextToken();
  -                        ObjectKey objectKey = 
ObjectKey.getInstance(objectKeyStr);
  -                        String additionalOption = additionalOption = 
paramToken.nextToken();
  +                        final String languageCode = paramToken.nextToken();
  +                        final String objectKeyStr = paramToken.nextToken();
  +                        final ObjectKey objectKey = 
ObjectKey.getInstance(objectKeyStr);
  +                        final String additionalOption = 
paramToken.nextToken();
                           // #ifdef LOCK
   //                        if (jParams.settings().areLocksActivated()) {
   //                            // Ensure that the lock is always our's.
  @@ -552,7 +560,7 @@
   //                            }
   //                        }
                           // #endif
  -                        WorkflowHelperLanguageEntry entry = 
workflowHelper.getLanguageEntry(objectKey, languageCode);
  +                        final WorkflowHelperLanguageEntry entry = 
workflowHelper.getLanguageEntry(objectKey, languageCode);
                           if (entry != null) {
                               Map options = (Map) 
selectedEntries.get(objectKey);
                               if (options == null) {
  @@ -571,25 +579,26 @@
                   }
               }
           }
  -        Map userNotifData = new HashMap();
  +        final Map userNotifData = new HashMap();
           ArrayList recipients = null;
   
  -        List ordered = workflowHelper.getOrderedKeys();
  +        final List ordered = workflowHelper.getOrderedKeys();
           for (int j=ordered.size()-1; j>=0; j--) {
  -            ObjectKey key = (ObjectKey) ordered.get(j);
  +            final ObjectKey key = (ObjectKey) ordered.get(j);
               if (!selectedEntries.containsKey(key)) {
                   continue;
               }
  -            Map options = (Map) selectedEntries.get(key);
  -            for (Iterator additionalIt = options.keySet().iterator(); 
additionalIt.hasNext();) {
  -                String additionalKey = (String) additionalIt.next();
  -                Set languageCodes = (Set) options.get(additionalKey);
  +            final Map options = (Map) selectedEntries.get(key);
  +            final Iterator additionalIt = options.keySet().iterator();
  +            while ( additionalIt.hasNext() ) {
  +                final String additionalKey = (String) additionalIt.next();
  +                final Set languageCodes = (Set) options.get(additionalKey);
   
   //            for (Iterator iterator = selectedEntries.keySet().iterator(); 
iterator.hasNext();) {
   //            ObjectKey key = (ObjectKey) iterator.next();
   //            Set languageCodes = (Set) selectedEntries.get(key);
   
  -                StateModificationContext stateModifContext = new 
StateModificationContext(key, languageCodes);
  +                final StateModificationContext stateModifContext = new 
StateModificationContext(key, languageCodes);
                   stateModifContext.setDescendingInSubPages(false);
                   ContentObject object = null;
   
  @@ -598,16 +607,16 @@
                   } catch (ClassNotFoundException e) {
                   }
   
  -                int mode = service.getInheritedMode(object);
  +                final int mode = service.getInheritedMode(object);
   
                   try {
  -                    ContentObject contentObject = (ContentObject) 
ContentObject.getInstance(key);
  +                    final ContentObject contentObject = (ContentObject) 
ContentObject.getInstance(key);
                       if (mode == WorkflowService.INACTIVE) {
                           if (action.equals(approvePendingPages) && 
additionalKey.equals(ACCEPT)) {
                               
ServicesRegistry.getInstance().getWorkflowService().activate(contentObject, 
languageCodes, saveVersion, jParams, stateModifContext);
                           }
                       } else if (mode == WorkflowService.JAHIA_INTERNAL) {
  -                        String comment = 
jParams.getParameter("commentsInput");
  +                        final String comment = 
jParams.getParameter("commentsInput");
                           PageNotifData pageNotifData = null;
                           if (action.equals(notifyCompletedPages)) {
                               
ServicesRegistry.getInstance().getWorkflowService().changeStagingStatus(contentObject,
 languageCodes,
  @@ -616,8 +625,8 @@
                                   pageNotifData = new 
PageNotifData(jParams.getSiteURL(contentObject.getID(), false, false), comment, 
(ContentPage) contentObject, languageCodes, true, null, null);
                               }
                           } else if (action.equals(approvePendingPages) && 
additionalKey.equals(ACCEPT)) {
  -                            ActivationTestResults activationTestResults = 
ServicesRegistry.getInstance().getWorkflowService().activate(contentObject, 
languageCodes, saveVersion, jParams, stateModifContext);
  -                            boolean workflowSuccessful = 
(activationTestResults.getStatus() != 
ActivationTestResults.FAILED_OPERATION_STATUS ? true : false);
  +                            final ActivationTestResults 
activationTestResults = 
ServicesRegistry.getInstance().getWorkflowService().activate(contentObject, 
languageCodes, saveVersion, jParams, stateModifContext);
  +                            final boolean workflowSuccessful = 
(activationTestResults.getStatus() != 
ActivationTestResults.FAILED_OPERATION_STATUS ? true : false);
                               if (contentObject instanceof ContentPage) {
                                   pageNotifData = new PageNotifData (
                                           jParams.getSiteURL 
(contentObject.getID(), false, false),
  @@ -639,7 +648,7 @@
                               // new system, per user messaging
                               recipients = getRecipients(contentObject, 
jParams.getSiteID(), 0x3);
                               for (int i=0; i < recipients.size(); i++) {
  -                                String curEmail = (String) recipients.get(i);
  +                                final String curEmail = (String) 
recipients.get(i);
                                   Map operationMap = (Map) 
userNotifData.get(curEmail);
                                   if (operationMap == null) {
                                       operationMap = new HashMap();
  @@ -663,14 +672,15 @@
                               }
                           }
                       } else if (mode == WorkflowService.EXTERNAL) {
  -                        ExternalWorkflow workflow = 
workflowHelper.getEntry(key).getExternalWorkflow();
  -                        String processId = 
service.getInheritedExternalWorkflowProcessId(object);
  +                        final ExternalWorkflow workflow = 
workflowHelper.getEntry(key).getExternalWorkflow();
  +                        final String processId = 
service.getInheritedExternalWorkflowProcessId(object);
   
  -                        for (Iterator iterator2 = languageCodes.iterator(); 
iterator2.hasNext();) {
  -                            String language = (String) iterator2.next();
  +                        final Iterator iterator2 = languageCodes.iterator();
  +                        while ( iterator2.hasNext() ) {
  +                            final String language = (String) 
iterator2.next();
                               if 
(jParams.getPage().checkAdminAccess(jParams.getUser())) {
                                   if (approvePendingPages.equals(action) && 
additionalKey.equals(ACCEPT)) {
  -                                    ActivationTestResults res = 
ServicesRegistry.getInstance().getWorkflowService().activate(contentObject, 
languageCodes, saveVersion, jParams, stateModifContext);
  +                                    final ActivationTestResults res = 
ServicesRegistry.getInstance().getWorkflowService().activate(contentObject, 
languageCodes, saveVersion, jParams, stateModifContext);
                                       if (res.getStatus() == 
ActivationTestResults.COMPLETED_OPERATION_STATUS) {
                                           
workflow.abortProcess(processId,key.toString(), language, jParams);
                                       }
  @@ -683,7 +693,7 @@
                                   }
                               }
                               if (action.indexOf('.') > -1) {
  -                                String actionName = 
action.substring(action.lastIndexOf('.')+1);
  +                                final String actionName = 
action.substring(action.lastIndexOf('.')+1);
                                   boolean result = 
workflow.sendAction(processId,key.toString(), language, actionName, jParams);
                                   if (!result) break;
                               }
  @@ -697,7 +707,4 @@
   
           sendMail(jParams, userNotifData);
       }
  -
  -
  -
   }
  

Reply via email to