/*
* Copyright 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.customconfigcontroller;
import java.util.Set;
import com.emc.storageos.customconfigcontroller.exceptions.CustomConfigControllerException;
/**
* This class defines a set of predefined values constraint.
* It would validate if the given setting is one of the predefined values.
*
* @see controller-custom-config-info.xml
*
*/
public class PredefinedValuesConstraint extends CustomConfigConstraint{
private static final long serialVersionUID = 1L;
private Set<String> predefinedValues;
private String defaultValue;
@Override
public String applyConstraint(String value, String systemType) {
if (predefinedValues.contains(value)) {
return value;
} else {
return defaultValue;
}
}
@Override
public void validate(String value, String systemType) {
if(!predefinedValues.contains(value)) {
throw CustomConfigControllerException.exceptions.predefinedValueConstraintViolated(value, getValidValues());
}
}
public Set<String> getPredefinedValues() {
return predefinedValues;
}
public void setPredefinedValues(Set<String> predefinedValues) {
this.predefinedValues = predefinedValues;
}
public String getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
private String getValidValues() {
StringBuilder builder = new StringBuilder();
for (String value : predefinedValues) {
builder.append(value);
builder.append(" ");
}
return builder.toString();
}
}