diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/capability/capabilities.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/capability/capabilities.get.json.ftl index 89ea2a8a26..a6c3061bbf 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/capability/capabilities.get.json.ftl +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/capability/capabilities.get.json.ftl @@ -4,19 +4,21 @@ <#if groupedCapabilities??> "groupedCapabilities": [ - <#assign keys = groupedCapabilities?keys> - <#list keys as key> + <#list groupedCapabilities?keys as groupedCapabilityKey> { - "${key}": - <#assign capabilitiesMap = groupedCapabilities[key]> - <#assign capabilitiesKeys = capabilitiesMap?keys> + "${groupedCapabilityKey}": { - <#list capabilitiesKeys as capabilitiesKey> - "${capabilitiesKey}": "${capabilitiesMap[capabilitiesKey]}" - <#if capabilitiesKey_has_next>, - + <#assign groupedCapability = groupedCapabilities[groupedCapabilityKey]> + groupTitle: "${groupedCapability.groupTitle}", + capabilities: + { + <#assign capabilities = groupedCapability.capabilities> + <#list capabilities?keys as capabilityKey> + "${capabilityKey}": "${capabilities[capabilityKey]}"<#if capabilityKey_has_next>, + + } } - }<#if key_has_next>, + }<#if groupedCapabilityKey_has_next>, ] <#else> diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityService.java index 7906e3f111..fde2e1b60d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityService.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityService.java @@ -95,12 +95,4 @@ public interface CapabilityService * @return */ AccessStatus getCapabilityAccessState(NodeRef nodeRef, String capabilityName); - - /** - * Gets all the capabilities grouped by their ids. The map key is the group id of a capability and the - * value is another map with the key being the capability name and the value being the capability title - * - * @return Map of capabilities grouped by their ids - */ - Map> getGroupedCapabilities(); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java index 2a31a808ef..3da9e05e7d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/CapabilityServiceImpl.java @@ -28,7 +28,6 @@ import java.util.Set; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.security.AccessStatus; import org.alfresco.util.ParameterCheck; -import org.apache.commons.lang.StringUtils; /** * @author Roy Wetherall @@ -170,35 +169,4 @@ public class CapabilityServiceImpl implements CapabilityService } return result; } - - /** - * @see org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService#getGroupedCapabilities() - */ - @Override - public Map> getGroupedCapabilities() - { - Map> groupedCapabilities = new HashMap>(capabilities.size()); - for (Capability capability : getCapabilities(true)) - { - String groupTitle = capability.getGroupTitle(); - if (StringUtils.isNotBlank(groupTitle)) - { - String capabilityName = capability.getName(); - String capabilityTitle = capability.getTitle(); - - if (groupedCapabilities.containsKey(groupTitle)) - { - groupedCapabilities.get(groupTitle).put(capabilityName, capabilityTitle); - } - else - { - Map capabilityList = new HashMap(13); - capabilityList.put(capabilityName, capabilityTitle); - groupedCapabilities.put(groupTitle, capabilityList); - } - } - } - - return groupedCapabilities; - } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/capability/CapabilitiesGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/capability/CapabilitiesGet.java index 8144f15ca6..8e38839355 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/capability/CapabilitiesGet.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/capability/CapabilitiesGet.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpServletResponse; @@ -96,7 +97,33 @@ public class CapabilitiesGet extends DeclarativeWebScript Map model = new HashMap(1); if (grouped == true) { - model.put("groupedCapabilities", capabilityService.getGroupedCapabilities()); + // Construct the map which is needed to build the model + Map groupedCapabilitiesMap = new HashMap(13); + + Set capabilities = capabilityService.getCapabilities(); + for (Capability capability : capabilities) + { + String capabilityGroupTitle = capability.getGroupTitle(); + if (StringUtils.isNotBlank(capabilityGroupTitle)) + { + String capabilityGroupId = capability.getGroupId(); + String capabilityName = capability.getName(); + String capabilityTitle = capability.getTitle(); + + if (groupedCapabilitiesMap.containsKey(capabilityGroupId)) + { + groupedCapabilitiesMap.get(capabilityGroupId).addCapability(capabilityName, capabilityTitle); + } + else + { + GroupedCapabilities groupedCapabilities = new GroupedCapabilities(capabilityGroupId, capabilityGroupTitle, capabilityName, capabilityTitle); + groupedCapabilities.addCapability(capabilityName, capabilityTitle); + groupedCapabilitiesMap.put(capabilityGroupId, groupedCapabilities); + } + } + } + + model.put("groupedCapabilities", groupedCapabilitiesMap); } else { @@ -123,4 +150,56 @@ public class CapabilitiesGet extends DeclarativeWebScript return model; } + + /** + * Class to represent grouped capabilities for use in a Freemarker template + * + */ + public class GroupedCapabilities + { + private String capabilityGroupId; + private String capabilityGroupTitle; + private String capabilityName; + private String capabilityTitle; + private Map capabilities; + + public GroupedCapabilities(String capabilityGroupId, String capabilityGroupTitle, String capabilityName, String capabilityTitle) + { + this.capabilityGroupId = capabilityGroupId; + this.capabilityGroupTitle = capabilityGroupTitle; + this.capabilityName = capabilityName; + this.capabilityTitle = capabilityTitle; + this.capabilities = new HashMap(5); + } + + public String getGroupId() + { + return this.capabilityGroupId; + } + + public String getGroupTitle() + { + return this.capabilityGroupTitle; + } + + public String getCapabilityName() + { + return this.capabilityName; + } + + public String getCapabilityTitle() + { + return this.capabilityTitle; + } + + public Map getCapabilities() + { + return this.capabilities; + } + + public void addCapability(String capabilityName, String capabilityTitle) + { + this.capabilities.put(capabilityName, capabilityTitle); + } + } } \ No newline at end of file