/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.descriptor; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.MissingResourceException; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import com.emc.sa.util.Messages; /** */ public class ServiceDescriptor implements ServiceItemContainer, Serializable { private static final long serialVersionUID = 7165847559597979106L; private static Messages MESSAGES = new Messages("com.emc.sa.descriptor.ServiceDescriptors"); /** The ID of the service. */ private String serviceId; /** Allow the descriptors to be put into categories for organization. */ private String category; /** The service title. */ private String title; /** The service description. */ private String description; /** The items in the service. */ private Map<String, ServiceItem> items = new LinkedHashMap<>(); /** * Optional roles to limit the service visibility to (User must have one). No restriction is required as this is * more intended to limit things already restricted by the services that run or asset options required for them. */ private List<String> roles = new ArrayList<>(); /** Indicates if the operation can result in data loss (Warn the user) */ private boolean destructive = false; /** Indicated if the order will display a modal option */ private boolean useModal = false; /** The service modal title. */ private String modalTitle; public String getServiceId() { return serviceId; } public void setServiceId(String serviceId) { this.serviceId = serviceId; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } @Override public Map<String, ServiceItem> getItems() { return items; } public void setItems(Map<String, ServiceItem> items) { this.items = items; } public void addItem(ServiceItem item) { items.put(item.getName(), item); } public List<String> getRoles() { return roles; } public void setRoles(List<String> roles) { this.roles = roles; } public void addRole(String role) { roles.add(role); } public void addRoles(Collection<String> roles) { this.roles.addAll(roles); } public boolean isDestructive() { return destructive; } public void setDestructive(boolean destructive) { this.destructive = destructive; } public boolean isUseModal() { return useModal; } public void setUseModal(boolean useModal) { this.useModal = useModal; } public String getModalTitle() { if (modalTitle == null) { return modalTitle; } return getMessage(modalTitle); } public void setModalTitle(String modalTitle) { this.modalTitle = modalTitle; } public ServiceField getField(String name) { return ServiceField.findField(this, name); } public void removeField(String name) { ServiceField.removeField(this, name); } public List<ServiceField> getFieldList() { return ServiceField.getFieldList(this); } public List<ServiceField> getAllFieldList() { return ServiceField.getAllFieldList(this); } public List<ServiceField> getAssetFields() { return ServiceField.getAssetFields(this); } public Set<String> getAssetTypes() { return ServiceField.getAssetTypes(this); } public Set<String> getAllAssetTypes() { Set<String> allAvailableAssets = new HashSet<>(); for (ServiceField field : getAllFieldList()) { if (field.isAsset()) { allAvailableAssets.add(field.getAssetType()); } } return allAvailableAssets; } @Override public String toString() { ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE); builder.append("serviceId", serviceId); builder.append("title", title); builder.append("description", description); builder.append("category", category); builder.append("destructive", destructive); builder.append("useModal", useModal); builder.append("modalTitle", modalTitle); builder.append("roles", roles); builder.append("items", items); return builder.toString(); } public static String getMessage(String key, Object... args) { try { String message = MESSAGES.get(key, args); if (StringUtils.isNotBlank(message)) { return message; } } catch (MissingResourceException e) { // fall out and return the original key } return key; } }