package org.rhq.enterprise.gui.inventory.group;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.gui.configuration.propset.ConfigurationSet;
import org.rhq.core.gui.configuration.propset.ConfigurationSetMember;
import org.rhq.enterprise.server.util.LookupUtil;
/**
* Helper methods shared by various group plugin config managed beans.
*
* @author Ian Springer
*/
public class GroupPluginConfigurationUtility
{
public static ConfigurationSet buildConfigurationSet(Subject subject, ResourceGroup group,
Map<Integer, Configuration> configs) {
List<ConfigurationSetMember> configurationSetMembers = new ArrayList<ConfigurationSetMember>(configs.size());
for (Integer resourceId : configs.keySet()) {
String label = GroupPluginConfigurationUtility.createResourceHierarchyLabel(resourceId);
Configuration configuration = configs.get(resourceId);
ConfigurationSetMember configurationSetMember = new ConfigurationSetMember(label, configuration);
configurationSetMembers.add(configurationSetMember);
}
ConfigurationDefinition definition = getConfigurationDefinition(subject, group);
ConfigurationSet configurationSet = new ConfigurationSet(definition, configurationSetMembers);
return configurationSet;
}
private static String createResourceHierarchyLabel(Integer resourceId) {
List<Resource> resourceLineage = LookupUtil.getResourceManager().getResourceLineage(resourceId);
String previousName = resourceLineage.get(0).getName();
StringBuilder label = new StringBuilder(previousName);
for (int i = 1; i < resourceLineage.size(); i++) {
Resource resource = resourceLineage.get(i);
String name = resource.getName();
name = (name.startsWith(previousName)) ? name.substring(previousName.length()) : name;
label.append(" > ").append(name);
}
return label.toString();
}
public static ConfigurationDefinition getConfigurationDefinition(Subject subject, ResourceGroup group) {
Integer resourceTypeId = group.getResourceType().getId();
ConfigurationDefinition configurationDefinition = LookupUtil.getConfigurationManager()
.getPluginConfigurationDefinitionForResourceType(subject, resourceTypeId);
return configurationDefinition;
}
}