/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.vipr.model.catalog;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "service_field")
public class ServiceFieldRestRep extends ServiceItemRestRep {
public static final String ASSET_TYPE_PREFIX = "assetType.";
private boolean required;
private boolean omitNone;
private String initialValue;
private boolean modalField;
private String select;
private boolean lockable;
private Integer min;
private Integer max;
private String regEx;
private String failureMessage;
private List<Option> options;
@XmlElement(name = "required")
public boolean isRequired() {
return required;
}
public void setRequired(boolean required) {
this.required = required;
}
@XmlElement(name = "omitNone")
public boolean isOmitNone() {
return omitNone;
}
public void setOmitNone(boolean omitNone) {
this.omitNone = omitNone;
}
@XmlElement(name = "initial_value")
public String getInitialValue() {
return initialValue;
}
public void setInitialValue(String initialValue) {
this.initialValue = initialValue;
}
@XmlElement(name = "modalField")
public boolean isModalField() {
return modalField;
}
public void setModalField(boolean modalField) {
this.modalField = modalField;
}
@XmlElement(name = "select")
public String getSelect() {
return select;
}
public void setSelect(String select) {
this.select = select;
}
@XmlElement(name = "lockable")
public boolean isLockable() {
return lockable;
}
public void setLockable(boolean lockable) {
this.lockable = lockable;
}
@XmlElement(name = "min")
public Integer getMin() {
return min;
}
public void setMin(Integer min) {
this.min = min;
}
@XmlElement(name = "max")
public Integer getMax() {
return max;
}
public void setMax(Integer max) {
this.max = max;
}
@XmlElement(name = "regex")
public String getRegEx() {
return regEx;
}
public void setRegEx(String regEx) {
this.regEx = regEx;
}
@XmlElement(name = "failure_message")
public String getFailureMessage() {
return failureMessage;
}
public void setFailureMessage(String failureMessage) {
this.failureMessage = failureMessage;
}
@XmlElement(name = "options")
public List<Option> getOptions() {
if (options == null) {
options = new ArrayList<>();
}
return options;
}
public void setOptions(List<Option> options) {
this.options = options;
}
public boolean isAsset() {
return getType() != null && getType().startsWith(ASSET_TYPE_PREFIX);
}
public String getAssetType() {
if (isAsset()) {
return getType().substring(ASSET_TYPE_PREFIX.length(), getType().length());
}
return null;
}
public static Set<String> getAssetTypes(Collection<? extends ServiceItemRestRep> items) {
Set<String> assetTypes = new HashSet<>();
for (ServiceFieldRestRep assetField : getAssetFields(items)) {
assetTypes.add(assetField.getAssetType());
}
return assetTypes;
}
public static List<ServiceFieldRestRep> getAssetFields(Collection<? extends ServiceItemRestRep> items) {
List<ServiceFieldRestRep> assetFields = new ArrayList<>();
for (ServiceItemRestRep item : items) {
if (item.isField() && ((ServiceFieldRestRep) item).isAsset()) {
assetFields.add((ServiceFieldRestRep) item);
}
}
return assetFields;
}
}