/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.gui.legacy.action.resource.group.inventory; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.rhq.core.domain.resource.ResourceType; import org.rhq.core.domain.resource.group.GroupCategory; import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.enterprise.gui.legacy.action.BaseValidatorForm; /** */ public class GroupForm extends BaseValidatorForm { //private String typeAndResourceTypeId; private String category; private List<Map<String, Object>> platformTypes; private List<Map<String, Object>> serverTypes; private List<Map<String, Object>> serviceTypes; private List groupTypes; private Integer[] resourceIds; private String resourceTypeName; private Integer resourceTypeId; private boolean recursive; private String name; private String description; private String location; private Integer groupId; /** * @return the number of items of compatible types */ public Integer getCompatibleCount() { if ((platformTypes == null) || (serverTypes == null) || (serviceTypes == null)) { return 0; } return platformTypes.size() + serverTypes.size() + serviceTypes.size(); } /** * @return the number of items of service types */ public Integer getClusterCount() { if (serviceTypes == null) { return 0; } return serviceTypes.size(); } /** * Returns the platformTypes. * * @return List */ public List getPlatformTypes() { return platformTypes; } /** * Returns the number of platformTypes. * * @return List */ public Integer getPlatformTypeCount() { if (platformTypes == null) { return 0; } return platformTypes.size(); } /** * Returns the serverTypes. * * @return List */ public List getServerTypes() { return serverTypes; } /** * Returns the number of serverTypes. * * @return Integer */ public Integer getServerTypeCount() { if (serverTypes == null) { return 0; } return serverTypes.size(); } /** * Returns the serviceTypes. * * @return List */ public List getServiceTypes() { return serviceTypes; } /** * Returns the serviceTypes. * * @return List */ public Integer getServiceTypeCount() { if (serviceTypes == null) { return 0; } return serviceTypes.size(); } /** * Sets the platformTypes. * * @param platformTypes The platformTypes to set */ public void setPlatformTypes(List<ResourceType> platformTypes) { this.platformTypes = getOptionListItemsWithDashes(platformTypes); } /** * Sets the serverTypes. * * @param serverTypes The serverTypes to set */ public void setServerTypes(List<ResourceType> serverTypes) { this.serverTypes = getOptionListItemsWithDashes(serverTypes); } /** * Sets the serviceTypes. * * @param serviceTypes The serviceTypes to set */ public void setServiceTypes(List<ResourceType> serviceTypes) { this.serviceTypes = getOptionListItemsWithDashes(serviceTypes); } private List<Map<String, Object>> getOptionListItemsWithDashes(List<ResourceType> types) { List<Map<String, Object>> items = new ArrayList<Map<String, Object>>(); if (types != null) { Map<String, Integer> typeNameCounts = new HashMap<String, Integer>(); for (ResourceType type : types) { if (!typeNameCounts.containsKey(type.getName())) { typeNameCounts.put(type.getName(), 1); } else { typeNameCounts.put(type.getName(), typeNameCounts.get(type.getName()) + 1); } } for (ResourceType type : types) { // GroupTypeForm needs this data format - a map with "value" and "label" keys Map<String, Object> map = new HashMap<String, Object>(2); map.put("value", type.getId()); Integer count = typeNameCounts.get(type.getName()); map.put("label", "- " + type.getName() + (count > 1 ? (" (" + type.getPlugin() + " Plugin)") : "")); items.add(map); } } return items; } /** * @return List */ public List getGroupTypes() { return groupTypes; } /** * Sets the groupTypes. * * @param groupTypes The groupTypes to set */ public void setGroupTypes(List groupTypes) { this.groupTypes = groupTypes; } public Integer[] getResourceIds() { return resourceIds; } public void setResourceIds(Integer[] resourceIds) { this.resourceIds = resourceIds; } /** * over-ride the validate method. need to do validation. */ @Override public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = super.validate(mapping, request); if (shouldValidate(mapping, request)) { if (errors == null) { errors = new ActionErrors(); } if (category.equals(GroupCategory.COMPATIBLE.name())) { if (resourceTypeId == null) { errors.add("resourceTypeId", new ActionMessage("resource.group.inventory.error." + "ResourceTypeId")); } } } return errors; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public GroupCategory getGroupCategory() { return GroupCategory.valueOf(category); } public void setGroupCategory(GroupCategory category) { this.category = category.name(); } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getResourceTypeId() { return resourceTypeId; } public void setResourceTypeId(Integer resourceTypeId) { this.resourceTypeId = resourceTypeId; } public Integer getGroupId() { return groupId; } public void setGroupId(Integer groupId) { this.groupId = groupId; } public String getResourceTypeName() { return resourceTypeName; } public void setResourceTypeName(String resourceTypeName) { this.resourceTypeName = resourceTypeName; } public void loadResourceGroup(ResourceGroup group) { this.name = group.getName(); this.description = group.getDescription(); this.location = ""; this.groupId = group.getId(); } public void updateResourceGroup(ResourceGroup group) { if (name != null) { group.setName(name); } if (description != null) { group.setDescription(description); } /* if (location != null) { group.setLocation(location); } */ } public boolean isRecursive() { return recursive; } public void setRecursive(boolean recursive) { this.recursive = recursive; } }