„Hardcoded configuration“ ist schlechter Stil, daher habe ich mir vorgenommen meine Parameter extern in einer Konfigurationsdatei zu halten und eine kleine Helferklasse im Java zu schreiben die mir die Daten einliest.
die nutzung ist denkbar einfach, nach dem Import der Klasse kann man mit 2 einfachen Kommandos die Konfig Datei laden und einen Parameter einlesen.
Beispiel:
import de.oberdorf_itc.textproc.ConfigFile; [..] ConfigFile prop = new ConfigFile(); [..] // read in the configuration file prop.getProperties("/home/cybcon/etc/my_config.properties"); // get the parameter String value = prop.getValue("myAttribute"); [..]
die Konfigurationsdatei könnte wie folgt aussehen:
myAttribute=This is the attributes value
Hier noch der Quellcode der Klasse „ConfigFile“:
package de.oberdorf_itc.textproc; /** * Import Java libraries */ import java.io.IOException; import java.io.FileNotFoundException; import java.io.File; import java.util.Properties; import java.io.FileInputStream; /** * * This java class can be used to load configuration files and read * the values. * * @author Michael Oberdorf IT-Consulting * @version 0.100 * */ public class ConfigFile { static Properties prop = new Properties(); /** * Method to load a configuration file * * @param configFile (String) * @return Properties * @throws IOException * */ public Properties getProperties(String configFile) throws IOException { // Do some error handling if (configFile == null) { throw new IOException("File not given."); } File FH = new File(configFile); if(!FH.exists() || !FH.isFile()) { throw new FileNotFoundException("File not found exception for: " + configFile); } else { if (!FH.canRead()) { throw new IOException("No Permission to read file: " + configFile); } } // Cleanup FileHandle FH = null; // get the input stream from file contents FileInputStream inputStream = new FileInputStream(configFile); prop.load(inputStream); inputStream.close(); // return properties return prop; } /** * Method to read an attributes value from the configuration file * * @param attribute (String) * @return String * @throws IOException * */ public String getValue(String attribute) throws IOException { if (attribute == null) { throw new IOException("No attribute given"); } return prop.getProperty(attribute); } }
Pingback: Der Listener, das unbekannte Wesen und andere Fortschritte | Cybcon's Blog