/**
* This file is part of Graylog.
*
* Graylog 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, either version 3 of the License, or
* (at your option) any later version.
*
* Graylog 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 Graylog. If not, see <http://www.gnu.org/licenses/>.
*/
package org.graylog2.plugin.configuration.fields;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
public class ListField extends AbstractConfigurationField {
public static final String FIELD_TYPE = "list";
public enum Attribute {
ALLOW_CREATE,
}
private List<String> defaultValue;
private Map<String, String> values;
private List<String> attributes;
public ListField(String name, String humanName, List<String> defaultValue, String description, Optional isOptional) {
this(name, humanName, defaultValue, Collections.emptyMap(), description, isOptional);
}
public ListField(String name, String humanName, List<String> defaultValue, Map<String, String> values, String description, Optional isOptional, Attribute... attributes) {
super(FIELD_TYPE, name, humanName, description, isOptional);
this.defaultValue = defaultValue;
this.values = values;
this.attributes = Arrays.stream(attributes)
.map(attribute -> attribute.toString().toLowerCase(Locale.ENGLISH))
.collect(Collectors.toList());
}
@Override
public Object getDefaultValue() {
return defaultValue;
}
@Override
public void setDefaultValue(Object defaultValue) {
if (defaultValue instanceof List) {
final List<?> defaultValueList = (List<?>) defaultValue;
this.defaultValue = defaultValueList.stream()
.filter(o -> o instanceof String)
.map(String::valueOf)
.collect(Collectors.toList());
}
}
@Override
public Map<String, Map<String, String>> getAdditionalInformation() {
return Collections.singletonMap("values", values);
}
@Override
public List<String> getAttributes() {
return attributes;
}
}