org.catools.common.config.CConfigInfoCollection Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of common.config Show documentation
Show all versions of common.config Show documentation
The general configuration manager for CATools projects
package org.catools.common.config;
import org.apache.commons.lang3.StringUtils;
import org.catools.common.utils.CYamlUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
public class CConfigInfoCollection extends HashSet {
public CConfigInfoCollection() {}
public > CConfigInfo getByName(T config) {
return getByName(config.name());
}
public CConfigInfo getByName(String configName) {
return stream()
.filter(c -> StringUtils.defaultString(c.getName()).equalsIgnoreCase(configName))
.findFirst()
.orElseThrow(() -> new CConfigNotDefinedException(configName));
}
public > boolean getBoolean(T config) {
String prop = getString(config);
return !StringUtils.EMPTY.equals(prop) && Boolean.valueOf(prop).booleanValue();
}
public > boolean getBooleanOrElse(T config, boolean defaultIfNotSet) {
return has(config) ? getBoolean(config) : defaultIfNotSet;
}
public > List getBooleans(T config, String delimiter) {
return getStrings(config, delimiter).stream()
.map(Boolean::valueOf)
.collect(Collectors.toList());
}
public > List getBooleansOrElse(
T config, String delimiter, List defaultIfNotSet) {
return has(config) ? getBooleans(config, delimiter) : defaultIfNotSet;
}
public > double getDouble(T config) {
String prop = getString(config);
return StringUtils.EMPTY.equals(prop) ? 0 : Double.valueOf(prop).doubleValue();
}
public > double getDoubleOrElse(T config, Double defaultIfNotSet) {
return has(config) ? getDouble(config) : defaultIfNotSet;
}
public > int getInteger(T config) {
String prop = getString(config);
return StringUtils.EMPTY.equals(prop) ? 0 : Integer.valueOf(prop).intValue();
}
public > int getIntegerOrElse(T config, Integer defaultIfNotSet) {
return has(config) ? getInteger(config) : defaultIfNotSet;
}
public > List getIntegers(T config, String delimiter) {
return getStrings(config, delimiter).stream()
.map(Integer::valueOf)
.collect(Collectors.toList());
}
public > List getIntegersOrElse(
T config, String delimiter, List defaultIfNotSet) {
return has(config) ? getIntegers(config, delimiter) : defaultIfNotSet;
}
public > String getString(T config) {
return getByName(config).getValue();
}
public > String getStringOrElse(T config, String defaultIfNotSet) {
return has(config) ? getString(config) : defaultIfNotSet;
}
public > List getStrings(T config, String delimiter) {
String prop = getString(config);
return StringUtils.isBlank(prop) ? new ArrayList<>() : Arrays.asList(prop.split(delimiter));
}
public > List getStringsOrElse(
T config, String delimiter, List defaultIfNotSet) {
return has(config) ? getStrings(config, delimiter) : defaultIfNotSet;
}
public > boolean has(T config) {
return has(config.name());
}
public boolean has(String configName) {
return stream()
.filter(c -> StringUtils.defaultString(c.getName()).equalsIgnoreCase(configName))
.findFirst()
.isPresent();
}
public > boolean hasNot(T config) {
return hasNot(config.name());
}
public boolean hasNot(String configName) {
return !has(configName);
}
public CConfigInfoCollection merge(CConfigInfoCollection configInfo) {
configInfo.forEach(
c -> {
if (has(c.getName())) {
getByName(c.getName()).merge(c);
} else {
add(c);
}
});
return this;
}
public CConfigInfoCollection mergeYamlFile(File file) {
return merge(CYamlUtil.readFromFile(file, CConfigInfoCollection.class));
}
}