/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.descriptor;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
public class ServiceFieldGroup extends ServiceItem implements ServiceItemContainer {
private static final long serialVersionUID = 3826977920256643398L;
/** Whether the group is collapsible. */
private boolean collapsible;
/** Whether the group is collapsed initially. */
private boolean collapsed;
/** The items in the group. */
private Map<String, ServiceItem> items = new LinkedHashMap<>();
public ServiceFieldGroup() {
setType(TYPE_GROUP);
}
@Override
public void setType(String type) {
if (!StringUtils.equals(type, TYPE_GROUP)) {
throw new IllegalArgumentException("Invalid type for group: " + type);
}
super.setType(type);
}
public boolean isCollapsible() {
return collapsible;
}
public void setCollapsible(boolean collapsible) {
this.collapsible = collapsible;
}
public boolean isCollapsed() {
return collapsed;
}
public void setCollapsed(boolean collapsed) {
this.collapsed = collapsed;
}
@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<ServiceField> getAssetFields() {
return ServiceField.getAssetFields(this);
}
public Set<String> getAssetTypes() {
return ServiceField.getAssetTypes(this);
}
public ServiceField getField(String name) {
return ServiceField.findField(this, name);
}
public List<ServiceField> getFieldList() {
return ServiceField.getFieldList(this);
}
@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE);
toString(builder);
builder.append("collapsible", collapsible);
builder.append("collapsed", collapsed);
builder.append("items", items);
return builder.toString();
}
}