mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Moving to root below branch label
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2005 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
921
source/java/org/alfresco/web/bean/wizard/BaseActionWizard.java
Normal file
921
source/java/org/alfresco/web/bean/wizard/BaseActionWizard.java
Normal file
@@ -0,0 +1,921 @@
|
||||
/*
|
||||
* Copyright (C) 2005 Alfresco, Inc.
|
||||
*
|
||||
* Licensed under the Mozilla Public License version 1.1
|
||||
* with a permitted attribution clause. You may obtain a
|
||||
* copy of the License at
|
||||
*
|
||||
* http://www.alfresco.org/legal/license.txt
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the
|
||||
* License.
|
||||
*/
|
||||
package org.alfresco.web.bean.wizard;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.faces.context.FacesContext;
|
||||
import javax.faces.model.SelectItem;
|
||||
|
||||
import org.alfresco.config.Config;
|
||||
import org.alfresco.config.ConfigElement;
|
||||
import org.alfresco.config.ConfigService;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.action.executer.AddFeaturesActionExecuter;
|
||||
import org.alfresco.repo.action.executer.CheckInActionExecuter;
|
||||
import org.alfresco.repo.action.executer.CheckOutActionExecuter;
|
||||
import org.alfresco.repo.action.executer.CopyActionExecuter;
|
||||
import org.alfresco.repo.action.executer.ImageTransformActionExecuter;
|
||||
import org.alfresco.repo.action.executer.ImporterActionExecuter;
|
||||
import org.alfresco.repo.action.executer.LinkCategoryActionExecuter;
|
||||
import org.alfresco.repo.action.executer.MailActionExecuter;
|
||||
import org.alfresco.repo.action.executer.MoveActionExecuter;
|
||||
import org.alfresco.repo.action.executer.SimpleWorkflowActionExecuter;
|
||||
import org.alfresco.repo.action.executer.SpecialiseTypeActionExecuter;
|
||||
import org.alfresco.repo.action.executer.TransformActionExecuter;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
import org.alfresco.service.cmr.action.ActionDefinition;
|
||||
import org.alfresco.service.cmr.action.ActionService;
|
||||
import org.alfresco.service.cmr.dictionary.AspectDefinition;
|
||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||
import org.alfresco.service.cmr.repository.MimetypeService;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.alfresco.web.app.Application;
|
||||
import org.alfresco.web.bean.repository.Node;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.data.IDataContainer;
|
||||
import org.alfresco.web.data.QuickSort;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.web.jsf.FacesContextUtils;
|
||||
|
||||
/**
|
||||
* Base handler class containing common code used by the New Space Wizard and New Action Wizard
|
||||
*
|
||||
* @author gavinc kevinr
|
||||
*/
|
||||
public abstract class BaseActionWizard extends AbstractWizardBean
|
||||
{
|
||||
// parameter names for actions
|
||||
public static final String PROP_CATEGORY = "category";
|
||||
public static final String PROP_ASPECT = "aspect";
|
||||
public static final String PROP_DESTINATION = "destinationLocation";
|
||||
public static final String PROP_APPROVE_STEP_NAME = "approveStepName";
|
||||
public static final String PROP_APPROVE_ACTION = "approveAction";
|
||||
public static final String PROP_APPROVE_FOLDER = "approveFolder";
|
||||
public static final String PROP_REJECT_STEP_PRESENT = "rejectStepPresent";
|
||||
public static final String PROP_REJECT_STEP_NAME = "rejectStepName";
|
||||
public static final String PROP_REJECT_ACTION = "rejectAction";
|
||||
public static final String PROP_REJECT_FOLDER = "rejectFolder";
|
||||
public static final String PROP_CHECKIN_DESC = "checkinDescription";
|
||||
public static final String PROP_CHECKIN_MINOR = "checkinMinorChange";
|
||||
public static final String PROP_TRANSFORMER = "transformer";
|
||||
public static final String PROP_IMAGE_TRANSFORMER = "imageTransformer";
|
||||
public static final String PROP_TRANSFORM_OPTIONS = "transformOptions";
|
||||
public static final String PROP_ENCODING = "encoding";
|
||||
public static final String PROP_MESSAGE = "message";
|
||||
public static final String PROP_SUBJECT = "subject";
|
||||
public static final String PROP_TO = "to";
|
||||
public static final String PROP_OBJECT_TYPE = "objecttype";
|
||||
|
||||
private static final Log logger = LogFactory.getLog(BaseActionWizard.class);
|
||||
private static final String IMPORT_ENCODING = "UTF-8";
|
||||
|
||||
// new rule/action wizard specific properties
|
||||
protected boolean multiActionMode = false;
|
||||
protected String action;
|
||||
protected ActionService actionService;
|
||||
protected DictionaryService dictionaryService;
|
||||
protected MimetypeService mimetypeService;
|
||||
protected List<SelectItem> actions;
|
||||
protected List<SelectItem> transformers;
|
||||
protected List<SelectItem> imageTransformers;
|
||||
protected List<SelectItem> aspects;
|
||||
protected List<SelectItem> users;
|
||||
protected List<SelectItem> encodings;
|
||||
protected Map<String, String> actionDescriptions;
|
||||
protected Map<String, Serializable> currentActionProperties;
|
||||
protected List<SelectItem> objectTypes;
|
||||
|
||||
/**
|
||||
* Initialises the wizard
|
||||
*/
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
|
||||
this.action = "add-features";
|
||||
this.users = null;
|
||||
this.actions = null;
|
||||
this.actionDescriptions = null;
|
||||
|
||||
this.currentActionProperties = new HashMap<String, Serializable>(3);
|
||||
|
||||
// default the approve and reject actions
|
||||
this.currentActionProperties.put(PROP_APPROVE_ACTION, "move");
|
||||
this.currentActionProperties.put(PROP_REJECT_STEP_PRESENT, "yes");
|
||||
this.currentActionProperties.put(PROP_REJECT_ACTION, "move");
|
||||
|
||||
// default the checkin minor change
|
||||
this.currentActionProperties.put(PROP_CHECKIN_MINOR, new Boolean(true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the param map for the current Action instance
|
||||
*
|
||||
* @return param map
|
||||
*/
|
||||
protected Map<String, Serializable> buildActionParams()
|
||||
{
|
||||
// set up parameters maps for the action
|
||||
Map<String, Serializable> actionParams = new HashMap<String, Serializable>();
|
||||
|
||||
if (this.action.equals(AddFeaturesActionExecuter.NAME))
|
||||
{
|
||||
QName aspect = Repository.resolveToQName((String)this.currentActionProperties.get(PROP_ASPECT));
|
||||
actionParams.put(AddFeaturesActionExecuter.PARAM_ASPECT_NAME, aspect);
|
||||
}
|
||||
else if (this.action.equals(CopyActionExecuter.NAME))
|
||||
{
|
||||
// add the destination space id to the action properties
|
||||
NodeRef destNodeRef = (NodeRef)this.currentActionProperties.get(PROP_DESTINATION);
|
||||
actionParams.put(CopyActionExecuter.PARAM_DESTINATION_FOLDER, destNodeRef);
|
||||
|
||||
// add the type and name of the association to create when the copy
|
||||
// is performed
|
||||
actionParams.put(CopyActionExecuter.PARAM_ASSOC_TYPE_QNAME,
|
||||
ContentModel.ASSOC_CONTAINS);
|
||||
actionParams.put(CopyActionExecuter.PARAM_ASSOC_QNAME,
|
||||
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "copy"));
|
||||
}
|
||||
else if (this.action.equals(MoveActionExecuter.NAME))
|
||||
{
|
||||
// add the destination space id to the action properties
|
||||
NodeRef destNodeRef = (NodeRef)this.currentActionProperties.get(PROP_DESTINATION);
|
||||
actionParams.put(MoveActionExecuter.PARAM_DESTINATION_FOLDER, destNodeRef);
|
||||
|
||||
// add the type and name of the association to create when the move
|
||||
// is performed
|
||||
actionParams.put(MoveActionExecuter.PARAM_ASSOC_TYPE_QNAME,
|
||||
ContentModel.ASSOC_CONTAINS);
|
||||
actionParams.put(MoveActionExecuter.PARAM_ASSOC_QNAME,
|
||||
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "move"));
|
||||
}
|
||||
else if (this.action.equals(SimpleWorkflowActionExecuter.NAME))
|
||||
{
|
||||
// add the approve step name
|
||||
actionParams.put(SimpleWorkflowActionExecuter.PARAM_APPROVE_STEP,
|
||||
(String)this.currentActionProperties.get(PROP_APPROVE_STEP_NAME));
|
||||
|
||||
// add whether the approve step will copy or move the content
|
||||
boolean approveMove = true;
|
||||
String approveAction = (String)this.currentActionProperties.get(PROP_APPROVE_ACTION);
|
||||
if (approveAction != null && approveAction.equals("copy"))
|
||||
{
|
||||
approveMove = false;
|
||||
}
|
||||
|
||||
actionParams.put(SimpleWorkflowActionExecuter.PARAM_APPROVE_MOVE, Boolean.valueOf(approveMove));
|
||||
|
||||
// add the destination folder of the content
|
||||
NodeRef approveDestNodeRef = null;
|
||||
Object approveDestNode = this.currentActionProperties.get(PROP_APPROVE_FOLDER);
|
||||
if (approveDestNode instanceof NodeRef)
|
||||
{
|
||||
approveDestNodeRef = (NodeRef)approveDestNode;
|
||||
}
|
||||
else if (approveDestNode instanceof String)
|
||||
{
|
||||
approveDestNodeRef = new NodeRef((String)approveDestNode);
|
||||
}
|
||||
actionParams.put(SimpleWorkflowActionExecuter.PARAM_APPROVE_FOLDER, approveDestNodeRef);
|
||||
|
||||
// determine whether we have a reject step or not
|
||||
boolean requireReject = true;
|
||||
String rejectStepPresent = (String)this.currentActionProperties.get(PROP_REJECT_STEP_PRESENT);
|
||||
if (rejectStepPresent != null && rejectStepPresent.equals("no"))
|
||||
{
|
||||
requireReject = false;
|
||||
}
|
||||
|
||||
if (requireReject)
|
||||
{
|
||||
// add the reject step name
|
||||
actionParams.put(SimpleWorkflowActionExecuter.PARAM_REJECT_STEP,
|
||||
(String)this.currentActionProperties.get(PROP_REJECT_STEP_NAME));
|
||||
|
||||
// add whether the reject step will copy or move the content
|
||||
boolean rejectMove = true;
|
||||
String rejectAction = (String)this.currentActionProperties.get(PROP_REJECT_ACTION);
|
||||
if (rejectAction != null && rejectAction.equals("copy"))
|
||||
{
|
||||
rejectMove = false;
|
||||
}
|
||||
|
||||
actionParams.put(SimpleWorkflowActionExecuter.PARAM_REJECT_MOVE, Boolean.valueOf(rejectMove));
|
||||
|
||||
// add the destination folder of the content
|
||||
NodeRef rejectDestNodeRef = null;
|
||||
Object rejectDestNode = this.currentActionProperties.get(PROP_REJECT_FOLDER);
|
||||
if (rejectDestNode instanceof NodeRef)
|
||||
{
|
||||
rejectDestNodeRef = (NodeRef)rejectDestNode;
|
||||
}
|
||||
else if (rejectDestNode instanceof String)
|
||||
{
|
||||
rejectDestNodeRef = new NodeRef((String)rejectDestNode);
|
||||
}
|
||||
actionParams.put(SimpleWorkflowActionExecuter.PARAM_REJECT_FOLDER, rejectDestNodeRef);
|
||||
}
|
||||
}
|
||||
else if (this.action.equals(LinkCategoryActionExecuter.NAME))
|
||||
{
|
||||
// add the classifiable aspect
|
||||
actionParams.put(LinkCategoryActionExecuter.PARAM_CATEGORY_ASPECT,
|
||||
ContentModel.ASPECT_GEN_CLASSIFIABLE);
|
||||
|
||||
// put the selected category in the action params
|
||||
NodeRef catNodeRef = (NodeRef)this.currentActionProperties.get(PROP_CATEGORY);
|
||||
actionParams.put(LinkCategoryActionExecuter.PARAM_CATEGORY_VALUE,
|
||||
catNodeRef);
|
||||
}
|
||||
else if (this.action.equals(CheckOutActionExecuter.NAME))
|
||||
{
|
||||
// specify the location the checked out working copy should go
|
||||
// add the destination space id to the action properties
|
||||
NodeRef destNodeRef = (NodeRef)this.currentActionProperties.get(PROP_DESTINATION);
|
||||
actionParams.put(CheckOutActionExecuter.PARAM_DESTINATION_FOLDER, destNodeRef);
|
||||
|
||||
// add the type and name of the association to create when the
|
||||
// check out is performed
|
||||
actionParams.put(CheckOutActionExecuter.PARAM_ASSOC_TYPE_QNAME,
|
||||
ContentModel.ASSOC_CONTAINS);
|
||||
actionParams.put(CheckOutActionExecuter.PARAM_ASSOC_QNAME,
|
||||
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "checkout"));
|
||||
}
|
||||
else if (this.action.equals(CheckInActionExecuter.NAME))
|
||||
{
|
||||
// add the description for the checkin to the action params
|
||||
actionParams.put(CheckInActionExecuter.PARAM_DESCRIPTION,
|
||||
this.currentActionProperties.get(PROP_CHECKIN_DESC));
|
||||
|
||||
// add the minor change flag
|
||||
actionParams.put(CheckInActionExecuter.PARAM_MINOR_CHANGE,
|
||||
this.currentActionProperties.get(PROP_CHECKIN_MINOR));
|
||||
}
|
||||
else if (this.action.equals(TransformActionExecuter.NAME))
|
||||
{
|
||||
// add the transformer to use
|
||||
actionParams.put(TransformActionExecuter.PARAM_MIME_TYPE,
|
||||
this.currentActionProperties.get(PROP_TRANSFORMER));
|
||||
|
||||
// add the destination space id to the action properties
|
||||
NodeRef destNodeRef = (NodeRef)this.currentActionProperties.get(PROP_DESTINATION);
|
||||
actionParams.put(TransformActionExecuter.PARAM_DESTINATION_FOLDER, destNodeRef);
|
||||
|
||||
// add the type and name of the association to create when the copy
|
||||
// is performed
|
||||
actionParams.put(TransformActionExecuter.PARAM_ASSOC_TYPE_QNAME,
|
||||
ContentModel.ASSOC_CONTAINS);
|
||||
actionParams.put(TransformActionExecuter.PARAM_ASSOC_QNAME,
|
||||
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "copy"));
|
||||
}
|
||||
else if (this.action.equals(ImageTransformActionExecuter.NAME))
|
||||
{
|
||||
// add the transformer to use
|
||||
actionParams.put(ImageTransformActionExecuter.PARAM_MIME_TYPE,
|
||||
this.currentActionProperties.get(PROP_IMAGE_TRANSFORMER));
|
||||
|
||||
// add the options
|
||||
actionParams.put(ImageTransformActionExecuter.PARAM_CONVERT_COMMAND,
|
||||
this.currentActionProperties.get(PROP_TRANSFORM_OPTIONS));
|
||||
|
||||
// add the destination space id to the action properties
|
||||
NodeRef destNodeRef = (NodeRef)this.currentActionProperties.get(PROP_DESTINATION);
|
||||
actionParams.put(TransformActionExecuter.PARAM_DESTINATION_FOLDER, destNodeRef);
|
||||
|
||||
// add the type and name of the association to create when the copy
|
||||
// is performed
|
||||
actionParams.put(TransformActionExecuter.PARAM_ASSOC_TYPE_QNAME,
|
||||
ContentModel.ASSOC_CONTAINS);
|
||||
actionParams.put(TransformActionExecuter.PARAM_ASSOC_QNAME,
|
||||
QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "copy"));
|
||||
}
|
||||
else if (this.action.equals(MailActionExecuter.NAME))
|
||||
{
|
||||
// add the actual email text to send
|
||||
actionParams.put(MailActionExecuter.PARAM_TEXT,
|
||||
this.currentActionProperties.get(PROP_MESSAGE));
|
||||
|
||||
// add the person it's going to
|
||||
actionParams.put(MailActionExecuter.PARAM_TO,
|
||||
this.currentActionProperties.get(PROP_TO));
|
||||
|
||||
// add the subject for the email
|
||||
actionParams.put(MailActionExecuter.PARAM_SUBJECT,
|
||||
this.currentActionProperties.get(PROP_SUBJECT));
|
||||
}
|
||||
else if (this.action.equals(ImporterActionExecuter.NAME))
|
||||
{
|
||||
// add the encoding
|
||||
actionParams.put(ImporterActionExecuter.PARAM_ENCODING, IMPORT_ENCODING);
|
||||
|
||||
// add the destination for the import
|
||||
NodeRef destNodeRef = (NodeRef)this.currentActionProperties.get(PROP_DESTINATION);
|
||||
actionParams.put(ImporterActionExecuter.PARAM_DESTINATION_FOLDER, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(SpecialiseTypeActionExecuter.NAME) == true)
|
||||
{
|
||||
// add the specialisation type
|
||||
String objectType = (String)this.currentActionProperties.get(PROP_OBJECT_TYPE);
|
||||
actionParams.put(SpecialiseTypeActionExecuter.PARAM_TYPE_NAME, QName.createQName(objectType));
|
||||
}
|
||||
|
||||
return actionParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* Populate the actionProperties member variable with correct props for the current action
|
||||
* using the supplied property map.
|
||||
*
|
||||
* @param actionProps Map to retrieve props appropriate to the current action from
|
||||
*/
|
||||
protected void populateActionFromProperties(Map<String, Serializable> actionProps)
|
||||
{
|
||||
if (this.action.equals(AddFeaturesActionExecuter.NAME))
|
||||
{
|
||||
QName aspect = (QName)actionProps.get(AddFeaturesActionExecuter.PARAM_ASPECT_NAME);
|
||||
this.currentActionProperties.put(PROP_ASPECT, aspect.toString());
|
||||
}
|
||||
else if (this.action.equals(CopyActionExecuter.NAME))
|
||||
{
|
||||
NodeRef destNodeRef = (NodeRef)actionProps.get(CopyActionExecuter.PARAM_DESTINATION_FOLDER);
|
||||
this.currentActionProperties.put(PROP_DESTINATION, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(MoveActionExecuter.NAME))
|
||||
{
|
||||
NodeRef destNodeRef = (NodeRef)actionProps.get(MoveActionExecuter.PARAM_DESTINATION_FOLDER);
|
||||
this.currentActionProperties.put(PROP_DESTINATION, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(SimpleWorkflowActionExecuter.NAME))
|
||||
{
|
||||
String approveStep = (String)actionProps.get(SimpleWorkflowActionExecuter.PARAM_APPROVE_STEP);
|
||||
Boolean approveMove = (Boolean)actionProps.get(SimpleWorkflowActionExecuter.PARAM_APPROVE_MOVE);
|
||||
NodeRef approveFolderNode = (NodeRef)actionProps.get(
|
||||
SimpleWorkflowActionExecuter.PARAM_APPROVE_FOLDER);
|
||||
|
||||
String rejectStep = (String)actionProps.get(SimpleWorkflowActionExecuter.PARAM_REJECT_STEP);
|
||||
Boolean rejectMove = (Boolean)actionProps.get(SimpleWorkflowActionExecuter.PARAM_REJECT_MOVE);
|
||||
NodeRef rejectFolderNode = (NodeRef)actionProps.get(
|
||||
SimpleWorkflowActionExecuter.PARAM_REJECT_FOLDER);
|
||||
|
||||
this.currentActionProperties.put(PROP_APPROVE_STEP_NAME, approveStep);
|
||||
this.currentActionProperties.put(PROP_APPROVE_ACTION, approveMove ? "move" : "copy");
|
||||
this.currentActionProperties.put(PROP_APPROVE_FOLDER, approveFolderNode);
|
||||
|
||||
if (rejectStep == null && rejectMove == null && rejectFolderNode == null)
|
||||
{
|
||||
this.currentActionProperties.put(PROP_REJECT_STEP_PRESENT, "no");
|
||||
}
|
||||
else
|
||||
{
|
||||
this.currentActionProperties.put(PROP_REJECT_STEP_PRESENT, "yes");
|
||||
this.currentActionProperties.put(PROP_REJECT_STEP_NAME, rejectStep);
|
||||
this.currentActionProperties.put(PROP_REJECT_ACTION, rejectMove ? "move" : "copy");
|
||||
this.currentActionProperties.put(PROP_REJECT_FOLDER, rejectFolderNode);
|
||||
}
|
||||
}
|
||||
else if (this.action.equals(LinkCategoryActionExecuter.NAME))
|
||||
{
|
||||
NodeRef catNodeRef = (NodeRef)actionProps.get(LinkCategoryActionExecuter.PARAM_CATEGORY_VALUE);
|
||||
this.currentActionProperties.put(PROP_CATEGORY, catNodeRef);
|
||||
}
|
||||
else if (this.action.equals(CheckOutActionExecuter.NAME))
|
||||
{
|
||||
NodeRef destNodeRef = (NodeRef)actionProps.get(CheckOutActionExecuter.PARAM_DESTINATION_FOLDER);
|
||||
this.currentActionProperties.put(PROP_DESTINATION, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(CheckInActionExecuter.NAME))
|
||||
{
|
||||
String checkDesc = (String)actionProps.get(CheckInActionExecuter.PARAM_DESCRIPTION);
|
||||
this.currentActionProperties.put(PROP_CHECKIN_DESC, checkDesc);
|
||||
|
||||
Boolean minorChange = (Boolean)actionProps.get(CheckInActionExecuter.PARAM_MINOR_CHANGE);
|
||||
this.currentActionProperties.put(PROP_CHECKIN_MINOR, minorChange);
|
||||
}
|
||||
else if (this.action.equals(TransformActionExecuter.NAME))
|
||||
{
|
||||
String transformer = (String)actionProps.get(TransformActionExecuter.PARAM_MIME_TYPE);
|
||||
this.currentActionProperties.put(PROP_TRANSFORMER, transformer);
|
||||
|
||||
NodeRef destNodeRef = (NodeRef)actionProps.get(CopyActionExecuter.PARAM_DESTINATION_FOLDER);
|
||||
this.currentActionProperties.put(PROP_DESTINATION, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(ImageTransformActionExecuter.NAME))
|
||||
{
|
||||
String transformer = (String)actionProps.get(TransformActionExecuter.PARAM_MIME_TYPE);
|
||||
this.currentActionProperties.put(PROP_IMAGE_TRANSFORMER, transformer);
|
||||
|
||||
String options = (String)actionProps.get(ImageTransformActionExecuter.PARAM_CONVERT_COMMAND);
|
||||
this.currentActionProperties.put(PROP_TRANSFORM_OPTIONS, options != null ? options : "");
|
||||
|
||||
NodeRef destNodeRef = (NodeRef)actionProps.get(CopyActionExecuter.PARAM_DESTINATION_FOLDER);
|
||||
this.currentActionProperties.put(PROP_DESTINATION, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(MailActionExecuter.NAME))
|
||||
{
|
||||
String subject = (String)actionProps.get(MailActionExecuter.PARAM_SUBJECT);
|
||||
this.currentActionProperties.put(PROP_SUBJECT, subject);
|
||||
|
||||
String message = (String)actionProps.get(MailActionExecuter.PARAM_TEXT);
|
||||
this.currentActionProperties.put(PROP_MESSAGE, message);
|
||||
|
||||
String to = (String)actionProps.get(MailActionExecuter.PARAM_TO);
|
||||
this.currentActionProperties.put(PROP_TO, to);
|
||||
}
|
||||
else if (this.action.equals(ImporterActionExecuter.NAME))
|
||||
{
|
||||
NodeRef destNodeRef = (NodeRef)actionProps.get(ImporterActionExecuter.PARAM_DESTINATION_FOLDER);
|
||||
this.currentActionProperties.put(PROP_DESTINATION, destNodeRef);
|
||||
}
|
||||
else if (this.action.equals(SpecialiseTypeActionExecuter.NAME) == true)
|
||||
{
|
||||
QName specialiseType = (QName)actionProps.get(SpecialiseTypeActionExecuter.PARAM_TYPE_NAME);
|
||||
this.currentActionProperties.put(PROP_OBJECT_TYPE, specialiseType.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the selected action
|
||||
*/
|
||||
public String getAction()
|
||||
{
|
||||
return this.action;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param action Sets the selected action
|
||||
*/
|
||||
public void setAction(String action)
|
||||
{
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the action service
|
||||
*
|
||||
* @param actionRegistration the action service
|
||||
*/
|
||||
public void setActionService(ActionService actionService)
|
||||
{
|
||||
this.actionService = actionService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the dictionary service
|
||||
*
|
||||
* @param dictionaryService the dictionary service
|
||||
*/
|
||||
public void setDictionaryService(DictionaryService dictionaryService)
|
||||
{
|
||||
this.dictionaryService = dictionaryService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the mimetype service
|
||||
*
|
||||
* @param mimetypeService The mimetype service
|
||||
*/
|
||||
public void setMimetypeService(MimetypeService mimetypeService)
|
||||
{
|
||||
this.mimetypeService = mimetypeService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the list of selectable actions
|
||||
*/
|
||||
public List<SelectItem> getActions()
|
||||
{
|
||||
if (this.actions == null)
|
||||
{
|
||||
List<ActionDefinition> ruleActions = this.actionService.getActionDefinitions();
|
||||
this.actions = new ArrayList<SelectItem>();
|
||||
for (ActionDefinition ruleActionDef : ruleActions)
|
||||
{
|
||||
this.actions.add(new SelectItem(ruleActionDef.getName(), ruleActionDef.getTitle()));
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.actions, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
|
||||
return this.actions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns a map of all the action descriptions
|
||||
*/
|
||||
public Map<String, String> getActionDescriptions()
|
||||
{
|
||||
if (this.actionDescriptions == null)
|
||||
{
|
||||
List<ActionDefinition> ruleActions = this.actionService.getActionDefinitions();
|
||||
this.actionDescriptions = new HashMap<String, String>();
|
||||
for (ActionDefinition ruleActionDef : ruleActions)
|
||||
{
|
||||
this.actionDescriptions.put(ruleActionDef.getName(), ruleActionDef.getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
return this.actionDescriptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Gets the action settings
|
||||
*/
|
||||
public Map<String, Serializable> getActionProperties()
|
||||
{
|
||||
return this.currentActionProperties;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of encodings the import and export actions can use
|
||||
*
|
||||
* @return List of SelectItem objects representing the available encodings
|
||||
*/
|
||||
public List<SelectItem> getEncodings()
|
||||
{
|
||||
if (this.encodings == null)
|
||||
{
|
||||
ConfigService svc = (ConfigService)FacesContextUtils.getRequiredWebApplicationContext(
|
||||
FacesContext.getCurrentInstance()).getBean(Application.BEAN_CONFIG_SERVICE);
|
||||
Config wizardCfg = svc.getConfig("Action Wizards");
|
||||
if (wizardCfg != null)
|
||||
{
|
||||
ConfigElement encodingsCfg = wizardCfg.getConfigElement("encodings");
|
||||
if (encodingsCfg != null)
|
||||
{
|
||||
FacesContext context = FacesContext.getCurrentInstance();
|
||||
this.encodings = new ArrayList<SelectItem>();
|
||||
for (ConfigElement child : encodingsCfg.getChildren())
|
||||
{
|
||||
String id = child.getAttribute("name");
|
||||
|
||||
// look for a client localized string
|
||||
String label = null;
|
||||
String msgId = child.getAttribute("displayLabelId");
|
||||
if (msgId != null)
|
||||
{
|
||||
label = Application.getMessage(context, msgId);
|
||||
}
|
||||
|
||||
// if there wasn't an externalized string look for one in the config
|
||||
if (label == null)
|
||||
{
|
||||
label = child.getAttribute("displayLabel");
|
||||
}
|
||||
|
||||
this.encodings.add(new SelectItem(id, label));
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.encodings, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find encodings configuration element");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find Action Wizards configuration section");
|
||||
}
|
||||
}
|
||||
|
||||
return this.encodings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the transformers that are available
|
||||
*
|
||||
* @return List of SelectItem objects representing the available transformers
|
||||
*/
|
||||
public List<SelectItem> getTransformers()
|
||||
{
|
||||
if (this.transformers == null)
|
||||
{
|
||||
ConfigService svc = (ConfigService)FacesContextUtils.getRequiredWebApplicationContext(
|
||||
FacesContext.getCurrentInstance()).getBean(Application.BEAN_CONFIG_SERVICE);
|
||||
Config wizardCfg = svc.getConfig("Action Wizards");
|
||||
if (wizardCfg != null)
|
||||
{
|
||||
ConfigElement transformersCfg = wizardCfg.getConfigElement("transformers");
|
||||
if (transformersCfg != null)
|
||||
{
|
||||
FacesContext context = FacesContext.getCurrentInstance();
|
||||
Map<String, String> mimeTypes = this.mimetypeService.getDisplaysByMimetype();
|
||||
this.transformers = new ArrayList<SelectItem>();
|
||||
for (ConfigElement child : transformersCfg.getChildren())
|
||||
{
|
||||
String id = child.getAttribute("name");
|
||||
|
||||
// look for a client localized string
|
||||
String label = null;
|
||||
String msgId = child.getAttribute("displayLabelId");
|
||||
if (msgId != null)
|
||||
{
|
||||
label = Application.getMessage(context, msgId);
|
||||
}
|
||||
|
||||
// if there wasn't an externalized string look for one in the config
|
||||
if (label == null)
|
||||
{
|
||||
label = child.getAttribute("displayLabel");
|
||||
}
|
||||
|
||||
// if there wasn't a client based label get it from the mime type service
|
||||
if (label == null)
|
||||
{
|
||||
label = mimeTypes.get(id);
|
||||
}
|
||||
|
||||
this.transformers.add(new SelectItem(id, label));
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.transformers, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find transformers configuration element");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find Action Wizards configuration section");
|
||||
}
|
||||
}
|
||||
|
||||
return this.transformers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the image transformers that are available
|
||||
*
|
||||
* @return List of SelectItem objects representing the available image transformers
|
||||
*/
|
||||
public List<SelectItem> getImageTransformers()
|
||||
{
|
||||
if (this.imageTransformers == null)
|
||||
{
|
||||
ConfigService svc = (ConfigService)FacesContextUtils.getRequiredWebApplicationContext(
|
||||
FacesContext.getCurrentInstance()).getBean(Application.BEAN_CONFIG_SERVICE);
|
||||
Config wizardCfg = svc.getConfig("Action Wizards");
|
||||
if (wizardCfg != null)
|
||||
{
|
||||
ConfigElement transformersCfg = wizardCfg.getConfigElement("image-transformers");
|
||||
if (transformersCfg != null)
|
||||
{
|
||||
FacesContext context = FacesContext.getCurrentInstance();
|
||||
Map<String, String> mimeTypes = this.mimetypeService.getDisplaysByMimetype();
|
||||
this.imageTransformers = new ArrayList<SelectItem>();
|
||||
for (ConfigElement child : transformersCfg.getChildren())
|
||||
{
|
||||
String id = child.getAttribute("name");
|
||||
|
||||
// look for a client localized string
|
||||
String label = null;
|
||||
String msgId = child.getAttribute("displayLabelId");
|
||||
if (msgId != null)
|
||||
{
|
||||
label = Application.getMessage(context, msgId);
|
||||
}
|
||||
|
||||
// if there wasn't an externalized string look for one in the config
|
||||
if (label == null)
|
||||
{
|
||||
label = child.getAttribute("displayLabel");
|
||||
}
|
||||
|
||||
// if there wasn't a client based label get it from the mime type service
|
||||
if (label == null)
|
||||
{
|
||||
label = mimeTypes.get(id);
|
||||
}
|
||||
|
||||
this.imageTransformers.add(new SelectItem(id, label));
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.imageTransformers, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find image-transformers configuration element");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find Action Wizards configuration section");
|
||||
}
|
||||
}
|
||||
|
||||
return this.imageTransformers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the aspects that are available
|
||||
*
|
||||
* @return List of SelectItem objects representing the available aspects
|
||||
*/
|
||||
public List<SelectItem> getAspects()
|
||||
{
|
||||
if (this.aspects == null)
|
||||
{
|
||||
ConfigService svc = (ConfigService)FacesContextUtils.getRequiredWebApplicationContext(
|
||||
FacesContext.getCurrentInstance()).getBean(Application.BEAN_CONFIG_SERVICE);
|
||||
Config wizardCfg = svc.getConfig("Action Wizards");
|
||||
if (wizardCfg != null)
|
||||
{
|
||||
ConfigElement aspectsCfg = wizardCfg.getConfigElement("aspects");
|
||||
if (aspectsCfg != null)
|
||||
{
|
||||
FacesContext context = FacesContext.getCurrentInstance();
|
||||
this.aspects = new ArrayList<SelectItem>();
|
||||
for (ConfigElement child : aspectsCfg.getChildren())
|
||||
{
|
||||
QName idQName = Repository.resolveToQName(child.getAttribute("name"));
|
||||
|
||||
// look for a client localized string
|
||||
String label = null;
|
||||
String msgId = child.getAttribute("displayLabelId");
|
||||
if (msgId != null)
|
||||
{
|
||||
label = Application.getMessage(context, msgId);
|
||||
}
|
||||
|
||||
// if there wasn't an externalized string look for one in the config
|
||||
if (label == null)
|
||||
{
|
||||
label = child.getAttribute("displayLabel");
|
||||
}
|
||||
|
||||
// if there wasn't a client based label try and get it from the dictionary
|
||||
if (label == null)
|
||||
{
|
||||
AspectDefinition aspectDef = this.dictionaryService.getAspect(idQName);
|
||||
if (aspectDef != null)
|
||||
{
|
||||
label = aspectDef.getTitle();
|
||||
}
|
||||
else
|
||||
{
|
||||
label = idQName.getLocalName();
|
||||
}
|
||||
}
|
||||
|
||||
this.aspects.add(new SelectItem(idQName.toString(), label));
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.aspects, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find aspects configuration element");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find Action Wizards configuration section");
|
||||
}
|
||||
}
|
||||
|
||||
return this.aspects;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns a list of object types to allow the user to select from
|
||||
*/
|
||||
public List<SelectItem> getObjectTypes()
|
||||
{
|
||||
if (this.objectTypes == null)
|
||||
{
|
||||
FacesContext context = FacesContext.getCurrentInstance();
|
||||
|
||||
// add the well known object type to start with
|
||||
this.objectTypes = new ArrayList<SelectItem>(5);
|
||||
this.objectTypes.add(new SelectItem(ContentModel.TYPE_CONTENT.toString(),
|
||||
Application.getMessage(context, "content")));
|
||||
|
||||
// add any configured content sub-types to the list
|
||||
ConfigService svc = (ConfigService)FacesContextUtils.getRequiredWebApplicationContext(
|
||||
FacesContext.getCurrentInstance()).getBean(Application.BEAN_CONFIG_SERVICE);
|
||||
Config wizardCfg = svc.getConfig("Custom Content Types");
|
||||
if (wizardCfg != null)
|
||||
{
|
||||
ConfigElement typesCfg = wizardCfg.getConfigElement("content-types");
|
||||
if (typesCfg != null)
|
||||
{
|
||||
for (ConfigElement child : typesCfg.getChildren())
|
||||
{
|
||||
QName idQName = Repository.resolveToQName(child.getAttribute("name"));
|
||||
TypeDefinition typeDef = this.dictionaryService.getType(idQName);
|
||||
|
||||
if (typeDef != null &&
|
||||
this.dictionaryService.isSubClass(typeDef.getName(), ContentModel.TYPE_CONTENT))
|
||||
{
|
||||
// look for a client localized string
|
||||
String label = null;
|
||||
String msgId = child.getAttribute("displayLabelId");
|
||||
if (msgId != null)
|
||||
{
|
||||
label = Application.getMessage(context, msgId);
|
||||
}
|
||||
|
||||
// if there wasn't an externalized string look for one in the config
|
||||
if (label == null)
|
||||
{
|
||||
label = child.getAttribute("displayLabel");
|
||||
}
|
||||
|
||||
// if there wasn't a client based label try and get it from the dictionary
|
||||
if (label == null)
|
||||
{
|
||||
label = typeDef.getTitle();
|
||||
}
|
||||
|
||||
// finally, just use the localname
|
||||
if (label == null)
|
||||
{
|
||||
label = idQName.getLocalName();
|
||||
}
|
||||
|
||||
this.objectTypes.add(new SelectItem(idQName.toString(), label));
|
||||
}
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.objectTypes, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find 'content-types' configuration element");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.warn("Could not find 'Custom Content Types' configuration section");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return this.objectTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the List of users in the system wrapped in SelectItem objects
|
||||
*/
|
||||
public List<SelectItem> getUsers()
|
||||
{
|
||||
if (this.users == null)
|
||||
{
|
||||
List<Node> userNodes = Repository.getUsers(
|
||||
FacesContext.getCurrentInstance(),
|
||||
this.nodeService,
|
||||
this.searchService);
|
||||
this.users = new ArrayList<SelectItem>();
|
||||
for (Node user : userNodes)
|
||||
{
|
||||
String email = (String)user.getProperties().get("email");
|
||||
if (email != null && email.length() > 0)
|
||||
{
|
||||
this.users.add(new SelectItem(email, (String)user.getProperties().get("fullName")));
|
||||
}
|
||||
}
|
||||
|
||||
// make sure the list is sorted by the label
|
||||
QuickSort sorter = new QuickSort(this.users, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
|
||||
sorter.sort();
|
||||
}
|
||||
|
||||
return this.users;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user