Mimetypes available for transform action in the UI are now defined in an overrideable bean

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2216 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2006-01-26 13:46:46 +00:00
parent b36a235769
commit 9160578c9a
5 changed files with 70 additions and 54 deletions

View File

@@ -18,6 +18,7 @@ package org.alfresco.web.bean.wizard;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -41,7 +42,6 @@ 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;
@@ -99,6 +99,7 @@ public abstract class BaseActionWizard extends AbstractWizardBean
protected DictionaryService dictionaryService;
protected MimetypeService mimetypeService;
protected List<SelectItem> actions;
private List<String> transformMimetypes;
protected List<SelectItem> transformers;
protected List<SelectItem> imageTransformers;
protected List<SelectItem> aspects;
@@ -108,6 +109,16 @@ public abstract class BaseActionWizard extends AbstractWizardBean
protected Map<String, Serializable> currentActionProperties;
protected List<SelectItem> objectTypes;
/**
* Set the available mimetypes to act as targets of transformations
*
* @param mimetypes a list of valid mimetypes
*/
public void setTransformMimetypes(List<String> mimetypes)
{
this.transformMimetypes = mimetypes;
}
/**
* Initialises the wizard
*/
@@ -615,60 +626,40 @@ public abstract class BaseActionWizard extends AbstractWizardBean
*/
public List<SelectItem> getTransformers()
{
if (this.transformers == null)
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;
}
// check that the mimetypes are available
if (this.transformMimetypes == null)
{
logger.warn("'transformMimetypes' property was not set");
this.transformMimetypes = Collections.emptyList();
}
this.transformers = new ArrayList<SelectItem>(10);
Map<String, String> displaysByMimetype = this.mimetypeService.getDisplaysByMimetype();
for (String mimetype : this.transformMimetypes)
{
// get the display label
String label = displaysByMimetype.get(mimetype);
if (label == null)
{
// unrecognized mimetype
logger.warn("Unrecognized mimetype given to 'transformMimetypes': " + mimetype);
// just ignore it
continue;
}
// create UI object
SelectItem item = new SelectItem(mimetype, label);
// add to collection
this.transformers.add(item);
}
// sort
QuickSort sorter = new QuickSort(this.transformers, "label", true, IDataContainer.SORT_CASEINSENSITIVE);
sorter.sort();
return this.transformers;
}

View File

@@ -488,6 +488,10 @@
<property-name>rulesBean</property-name>
<value>#{RulesBean}</value>
</managed-property>
<managed-property>
<property-name>transformMimetypes</property-name>
<value>#{webClientTransformMimetypes}</value>
</managed-property>
</managed-bean>
<managed-bean>
@@ -525,6 +529,10 @@
<property-name>mimetypeService</property-name>
<value>#{MimetypeService}</value>
</managed-property>
<managed-property>
<property-name>transformMimetypes</property-name>
<value>#{webClientTransformMimetypes}</value>
</managed-property>
</managed-bean>
<managed-bean>

View File

@@ -57,9 +57,9 @@
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:alfresco/application-context.xml
classpath:alfresco/web-client-application-context.xml
classpath:web-services-application-context.xml
classpath:alfresco/application-context.xml
</param-value>
<description>Spring config file locations</description>
</context-param>