io.github.linuxforhealth.core.config.ConverterConfiguration Maven / Gradle / Ivy
/*
* (C) Copyright IBM Corp. 2020, 2022
*
* SPDX-License-Identifier: Apache-2.0
*/
package io.github.linuxforhealth.core.config;
import java.time.DateTimeException;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.FileBasedConfiguration;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
import org.apache.commons.configuration2.builder.fluent.Parameters;
import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.configuration2.io.ClasspathLocationStrategy;
import org.apache.commons.configuration2.io.CombinedLocationStrategy;
import org.apache.commons.configuration2.io.FileLocationStrategy;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ConverterConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(ConverterConfiguration.class);
private static final String SUPPORTED_HL7_MESSAGES = "supported.hl7.messages";
private static final String BASE_PATH_RESOURCE = "base.path.resource";
private static final String DEFAULT_ZONE_ID = "default.zoneid";
private static final String CONFIG_PROPERTIES = "config.properties";
private static final String ADDITIONAL_CONCEPT_MAPS_FILE = "additional.conceptmap.file";
private static final String ADDITIONAL_RESOURCES_LOCATION = "additional.resources.location";
private static ConverterConfiguration configuration;
private String resourceFolder;
private boolean resourcefromClassPath;
private List supportedMessageTemplates;
private ZoneId zoneId;
private String additionalConceptmapFile;
private String additionalResourcesLocation;
private ConverterConfiguration() {
try {
List subs = Arrays.asList(new ConfigDirectoryLocationStrategy(),
new ClasspathLocationStrategy());
FileLocationStrategy strategy = new CombinedLocationStrategy(subs);
Parameters params = new Parameters();
FileBasedConfigurationBuilder builder = new FileBasedConfigurationBuilder(
PropertiesConfiguration.class)
.configure(
params.properties().setFileName(CONFIG_PROPERTIES)
.setThrowExceptionOnMissing(true).setLocationStrategy(strategy)
.setListDelimiterHandler(new DefaultListDelimiterHandler(',')));
Configuration config = builder.getConfiguration();
String resourceLoc = config.getString(BASE_PATH_RESOURCE, null);
if (StringUtils.isNotBlank(resourceLoc)) {
resourceFolder = resourceLoc;
} else {
resourceFolder = "";
resourcefromClassPath = true;
}
// get list of supported messages, if not found, default to *
List