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

nu.zoom.util.Config Maven / Gradle / Ivy

Go to download

This project contains some utility classes that have been used in various projects throughout the years.

The newest version!
/*
 * Copyright (C) 2004 Johan Maasing johan at zoom.nu Licensed under the Apache
 * License, Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package nu.zoom.util;

import java.util.Properties;
import java.io.*;

/**
 * A properties class that reads/writes the properties from a file.
 * 
    *
  1. First it looks for a system property called 'config.properties' which * names the properties file. This can be specified when invoking the JVM with a * -D option thus:
    * java -Dconfig.properties=/myplace/mypropertyfile.ini myapplication *
  2. *
  3. If that does not work it looks in the user home directory for a file * named zoom.properties (home directory on windows 95/98 is * C:\windows).
  4. *
  5. If that also fails it looks in the current directory for a file named * zoom.properties
  6. *
  7. If that fails it tries to load a resource file named * zoom.properties using the classloader. That is, it looks for * the file in the classpath.
  8. *
  9. If that also fails it will give up and exit . Which means * that the application will stop.
  10. *
* The properties can be made persistant by calling the usual * java.util.Properties.store(OutputStream, String) method. This class also * provides a store method without parameters. If the no-parameters store is * called the properties will be saved to the same file found as described * above. If no file was found the class assumes the file to be called * zoom.properties and to reside in the current directory. Notice * that if the file was loaded from the classpath as a resource the store method * might not be able to write to it, so it will write to a file in the current * directory instead. * * @author $Author: johan $ * @version $Revision: 1.2 $ */ public class Config extends Properties { private static final long serialVersionUID = 1622735858880022226L; private static final String RESOURCE_NAME = "zoom.properties"; private static Config instance = null; private String filename; /** * Constructor for the Config object */ private Config() { super(); } /** * Save the properties to the same place from where they was read. If the * properties was loaded as a resource using the classloader they will be * stored in the current directory. This will mean that they are not * stored in the same place and they will not be loadable as a * resource. */ public void store() throws IOException { FileOutputStream out = new FileOutputStream(filename); super.store(out, "Configuration data"); } /** * Gets the Instance of the Config class. * * @return The Instance value */ public static synchronized Config getInstance() { if (instance == null) { String tmpFilename = null; File file = null; tmpFilename = System.getProperty("config.properties"); if (tmpFilename == null) { tmpFilename = System.getProperty("user.home") + File.separator + RESOURCE_NAME; file = new File(tmpFilename); if (!file.exists()) { tmpFilename = System.getProperty("user.dir") + File.separator + RESOURCE_NAME; } } instance = new Config(); instance.filename = tmpFilename; file = new File(tmpFilename); if (file.exists()) { try { instance.load(new FileInputStream(file)); } catch (IOException exc) { System.err.println("Unable to load configuration."); exc.printStackTrace(); System.exit(-1); } } else { InputStream ins = Config.class.getClassLoader() .getResourceAsStream(RESOURCE_NAME); if (ins != null) { try { instance.load(ins); } catch (IOException exc) { System.err.println("Unable to load configuration."); exc.printStackTrace(); System.exit(-1); } } else { System.err.println("Unable to load configuration."); System.exit(-1); } } } return instance; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy