All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.catools.common.config.CConfigInfoCollection Maven / Gradle / Ivy

There is a newer version: 1.0.1
Show newest version
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));
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy