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

io.github.linuxforhealth.core.config.ConfigDirectoryLocationStrategy Maven / Gradle / Ivy

/*
 * (C) Copyright IBM Corp. 2020
 *
 * SPDX-License-Identifier: Apache-2.0
 */
package io.github.linuxforhealth.core.config;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.configuration2.io.FileLocationStrategy;
import org.apache.commons.configuration2.io.FileLocator;
import org.apache.commons.configuration2.io.FileSystem;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class ConfigDirectoryLocationStrategy implements FileLocationStrategy {

  private static final String CONF_PROP_HOME_SYSTEM_PROP = "hl7converter.config.home";
  private static final String CONF_PROP_HOME_ENV_VAR = "HL7CONVERTER_CONFIG_HOME";
		  
  private static final Logger LOGGER =
      LoggerFactory.getLogger(ConfigDirectoryLocationStrategy.class);

  /** The home directory to be searched for the requested file. */
  private final String confDirectory;


  public ConfigDirectoryLocationStrategy() {
    confDirectory = fetchHomeDirectory();
  }



  public String getConfDirectory() {
    return confDirectory;
  }


  /**
   * {@inheritDoc} This implementation searches in the home directory for a file described by the
   * passed in {@code FileLocator}. If the locator defines a base path and the
   * {@code evaluateBasePath} property is true, a sub directory of the home directory is
   * searched.
   */
  @Override
  public URL locate(final FileSystem fileSystem, final FileLocator locator) {
    if (StringUtils.isNotEmpty(locator.getFileName()) && confDirectory != null) {
        LOGGER.info("Looking for config file in location {} based on config.home system property.",
            confDirectory);
      final File file = new File(confDirectory, locator.getFileName());

      if (file.isFile()) {
        try {
          return file.toURI().toURL();
        } catch (MalformedURLException e) {
          return null;
        }
      }
    }
    return null;
  }



  private static String fetchHomeDirectory() {
	String homeDirectory = System.getenv(CONF_PROP_HOME_ENV_VAR);
	if (homeDirectory==null || homeDirectory.trim().isEmpty())
		return System.getProperty(CONF_PROP_HOME_SYSTEM_PROP);
	return homeDirectory;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy