package com.aggrepoint.winlet.plugin;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.aggrepoint.utils.CollectionUtils;
import com.aggrepoint.winlet.CodeValue;
public class NameValueListUnit<T extends NameValue> implements ListUnit<T> {
List<T> list;
List<CodeValue> cvList;
Map<String, T> map;
Map<String, String> cvMap;
public NameValueListUnit(T[] items) {
list = Arrays.asList(items);
cvList = list.stream().map(p -> new CodeValue(p.name(), p.value()))
.collect(Collectors.toList());
map = CollectionUtils.toHashMap(list, T::name);
cvMap = CollectionUtils.toHashMap(list, T::name, T::value);
}
@Override
public List<T> getList() {
return list;
}
@Override
public List<CodeValue> getCodeValueList() {
return cvList;
}
@Override
public Map<String, T> getMap() {
return map;
}
@Override
public Map<String, String> getCodeValueMap() {
return cvMap;
}
}