package rmblworx.tools.timey; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; /* * Copyright 2014-2015 Christian Raue * MIT License http://opensource.org/licenses/mit-license.php */ /** * Zugriff auf Attribute der Anwendung. * * @author Christian Raue {@literal <christian.raue@gmail.com>} */ class ApplicationProperties { /** * Name des Attributs für die Versionskennung. */ static final String PROP_APP_VERSION = "application.version"; /** * Name der Datei. */ private static final String PROPERTY_FILENAME = "app.properties"; /** * Logger. */ private static Logger log = LoggerFactory.getLogger(ApplicationProperties.class); /** * Stream zum Auslesen der Attribute. */ private InputStream inputStream; /** * Attribute. */ private Properties properties; /** * Standardkonstruktor. */ public ApplicationProperties() { } /** * Konstruktor für Testzwecke. * * @param properties Attribute. * @param inputStream Stream zum Auslesen der Attribute. * @param logger Logger. */ ApplicationProperties(final Properties properties, final InputStream inputStream, final Logger logger) { this.properties = properties; this.inputStream = inputStream; log = logger; } /** * @return Versionskennung oder {@code null}, wenn sie nicht ermittelt werden kann. */ public String getVersion() { try { if (inputStream == null) { inputStream = new ClassPathResource(PROPERTY_FILENAME).getInputStream(); } if (properties == null) { properties = new Properties(); } properties.load(inputStream); return properties.getProperty(PROP_APP_VERSION); } catch (final IOException e) { log.error("Error while trying to read the property file: " + e.getLocalizedMessage()); return null; } finally { TimeyUtils.closeQuietly(inputStream); } } }