package pl.touk.sputnik.configuration;
import static com.google.common.io.Resources.getResource;
import static org.apache.commons.lang3.Validate.notBlank;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Properties;
import lombok.extern.slf4j.Slf4j;
import com.google.common.base.Charsets;
import com.google.common.io.CharSource;
import com.google.common.io.Resources;
@Slf4j
public class ConfigurationBuilder {
public static Configuration initFromFile(String configurationFilename) {
notBlank(configurationFilename, "You need to provide filename with configuration properties");
log.info("Initializing configuration properties from file {}", configurationFilename);
try (FileReader resourceReader = new FileReader(configurationFilename)){
Properties properties = new Properties();
properties.load(resourceReader);
return initFromProperties(properties);
} catch (IOException e) {
log.error("Configuration initialization failed", e);
throw new RuntimeException("Configuration file " + configurationFilename + " cannot be loaded");
}
}
public static Configuration initFromResource(String configurationResource) {
notBlank(configurationResource, "You need to provide url with configuration properties");
log.info("Initializing configuration properties from url {}", configurationResource);
CharSource charSource = Resources.asCharSource(getResource(configurationResource), Charsets.UTF_8);
try (Reader resourceStream = charSource.openStream()) {
Properties properties = new Properties();
properties.load(resourceStream);
return initFromProperties(properties);
} catch (IOException e) {
log.error("Configuration initialization failed", e);
throw new RuntimeException(e);
}
}
public static Configuration initFromProperties(Properties properties) {
return new Configuration(properties);
}
}