mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
110768: Merged V4.2-BUG-FIX (4.2.6) to 5.0.N (5.0.3) 110604: Merged V4.1-BUG-FIX (4.1.11) to V4.2-BUG-FIX (4.2.6) 110200: Merged DEV to V4.1-BUG-FIX (4.1.11) 109557: MNT-6350: 'New Rule' page: 'Deep Copy' check-box is not localized - Caching mechanism for the actions' parameters labels has been implemented. Labels for action's parameters will be loaded into RAM for the configured set of locales for each parameter of each definition of the action. Affected tests have been changed., 110327: MNT-6350: 'New Rule' page: 'Deep Copy' check-box is not localized - Changed locale setting to fix build failure. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@110913 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
227 lines
7.2 KiB
Java
227 lines
7.2 KiB
Java
/*
|
|
* Copyright (C) 2005-2015 Alfresco Software Limited.
|
|
*
|
|
* This file is part of Alfresco
|
|
*
|
|
* Alfresco is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Alfresco is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package org.alfresco.repo.action;
|
|
|
|
import java.text.MessageFormat;
|
|
import java.util.*;
|
|
|
|
import org.springframework.extensions.surf.util.I18NUtil;
|
|
import org.alfresco.service.cmr.action.ParameterDefinition;
|
|
import org.alfresco.service.cmr.action.ParameterizedItem;
|
|
import org.alfresco.service.cmr.action.ParameterizedItemDefinition;
|
|
import org.alfresco.service.cmr.rule.RuleServiceException;
|
|
|
|
/**
|
|
* Rule item abstract base.
|
|
* <p>
|
|
* Helper base class used by the action exector and condition evaluator implementations.
|
|
*
|
|
* @author Roy Wetherall
|
|
*/
|
|
public abstract class ParameterizedItemAbstractBase extends CommonResourceAbstractBase
|
|
{
|
|
/**
|
|
* Error messages
|
|
*/
|
|
private static final String ERR_MAND_PROP = "A value for the mandatory parameter {0} has not been set on the rule item {1}";
|
|
|
|
/**
|
|
* Look-up constants
|
|
*/
|
|
private static final String TITLE = "title";
|
|
private static final String DESCRIPTION = "description";
|
|
protected static final String DISPLAY_LABEL = "display-label";
|
|
|
|
/**
|
|
* Indicates whether or not ad-hoc properties can be provided. Default so false.
|
|
*/
|
|
protected boolean adhocPropertiesAllowed = false;
|
|
|
|
/**
|
|
* Action service
|
|
*/
|
|
protected RuntimeActionService runtimeActionService;
|
|
|
|
private Set<Locale> locales = new HashSet<Locale>();
|
|
|
|
/**
|
|
* @return Return a short title and description string
|
|
*/
|
|
public String toString()
|
|
{
|
|
StringBuilder sb = new StringBuilder(60);
|
|
sb.append("ParameterizedItem")
|
|
.append("[ title='").append(getTitleKey()).append("'")
|
|
.append(", description='").append(getDescriptionKey()).append("'")
|
|
.append("]");
|
|
return sb.toString();
|
|
}
|
|
|
|
public void setLocales(Set<Locale> locales)
|
|
{
|
|
this.locales = locales;
|
|
}
|
|
|
|
/**
|
|
* Gets a list containing the parameter definitions for this rule item.
|
|
*
|
|
* @return the list of parameter definitions
|
|
*/
|
|
protected List<ParameterDefinition> getParameterDefintions()
|
|
{
|
|
List<ParameterDefinition> result = new ArrayList<ParameterDefinition>();
|
|
addParameterDefinitions(result);
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Adds the parameter definitions to the list
|
|
*
|
|
* @param paramList the parameter definitions list
|
|
*/
|
|
protected abstract void addParameterDefinitions(List<ParameterDefinition> paramList);
|
|
|
|
/**
|
|
* Gets a list containing the parameter definitions for this rule item.
|
|
*
|
|
* @return the map of parameter definitions with locales
|
|
*/
|
|
protected Map<Locale, List<ParameterDefinition>> getLocalizedParameterDefinitions()
|
|
{
|
|
List<ParameterDefinition> paramList = new LinkedList<ParameterDefinition>();
|
|
addParameterDefinitions(paramList);
|
|
Map<Locale, List<ParameterDefinition>> result = new HashMap<Locale, List<ParameterDefinition>>();
|
|
result.put(Locale.ROOT, paramList);
|
|
Locale currentLocale = Locale.getDefault();
|
|
try
|
|
{
|
|
for (Locale locale : locales)
|
|
{
|
|
Locale.setDefault(locale);
|
|
List<ParameterDefinition> definitions = new LinkedList<ParameterDefinition>();
|
|
result.put(locale, definitions);
|
|
for (ParameterDefinition definition : paramList)
|
|
{
|
|
String paramDisplayLabel = getParamDisplayLabel(definition.getName());
|
|
definitions.add(
|
|
new ParameterDefinitionImpl(
|
|
definition.getName(),
|
|
definition.getType(),
|
|
definition.isMandatory(),
|
|
paramDisplayLabel,
|
|
definition.isMultiValued()
|
|
));
|
|
}
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
Locale.setDefault(currentLocale);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* Sets the action service
|
|
*
|
|
* @param runtimeActionService the action service
|
|
*/
|
|
public void setRuntimeActionService(RuntimeActionService runtimeActionService)
|
|
{
|
|
this.runtimeActionService = runtimeActionService;
|
|
}
|
|
|
|
/**
|
|
* Gets the title I18N key
|
|
*
|
|
* @return the title key
|
|
*/
|
|
protected String getTitleKey()
|
|
{
|
|
return this.name + "." + TITLE;
|
|
}
|
|
|
|
/**
|
|
* Gets the description I18N key
|
|
*
|
|
* @return the description key
|
|
*/
|
|
protected String getDescriptionKey()
|
|
{
|
|
return this.name + "." + DESCRIPTION;
|
|
}
|
|
|
|
/**
|
|
* Setter for Spring injection of adhocPropertiesAllowed property
|
|
*
|
|
* @param allowed boolean
|
|
*/
|
|
public void setAdhocPropertiesAllowed(boolean allowed)
|
|
{
|
|
this.adhocPropertiesAllowed = allowed;
|
|
}
|
|
|
|
/**
|
|
* Indicates whether adhoc property definitions are allowed or not
|
|
*
|
|
* @return true if they are, by default false
|
|
*/
|
|
protected boolean getAdhocPropertiesAllowed()
|
|
{
|
|
// By default adhoc properties are not allowed
|
|
return this.adhocPropertiesAllowed;
|
|
}
|
|
|
|
/**
|
|
* Gets the parameter definition display label from the properties file.
|
|
*
|
|
* @param paramName the name of the parameter
|
|
* @return the diaplay label of the parameter
|
|
*/
|
|
protected String getParamDisplayLabel(String paramName)
|
|
{
|
|
return I18NUtil.getMessage(this.name + "." + paramName + "." + DISPLAY_LABEL);
|
|
}
|
|
|
|
/**
|
|
* Checked whether all the mandatory parameters for the rule item have been assigned.
|
|
*
|
|
* @param ruleItem the rule item
|
|
* @param ruleItemDefinition the rule item definition
|
|
*/
|
|
protected void checkMandatoryProperties(ParameterizedItem ruleItem, ParameterizedItemDefinition ruleItemDefinition)
|
|
{
|
|
List<ParameterDefinition> definitions = ruleItemDefinition.getParameterDefinitions();
|
|
for (ParameterDefinition definition : definitions)
|
|
{
|
|
if (definition.isMandatory() == true)
|
|
{
|
|
// Check that a value has been set for the mandatory parameter
|
|
if (ruleItem.getParameterValue(definition.getName()) == null)
|
|
{
|
|
// Error since a mandatory parameter has a null value
|
|
throw new RuleServiceException(
|
|
MessageFormat.format(ERR_MAND_PROP, new Object[]{definition.getName(), ruleItemDefinition.getName()}));
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|