Property Manager : Properties « Development Class « Java






Property Manager

        
//package abc.util;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.*;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Properties;

public final class PropertyManager {

  private final static String DEFAULT_PROPERTIES_FILE = "ressources" + File.separator + "default.properties";
  private final static String APP_PROPERTIES_FILE = "ressources" + File.separator + "app.properties";

  private Properties defaultProps = new Properties();
  private Properties appProps = null;

  private Hashtable listeners = null;


  private static Object lock = new Object();
  private static PropertyManager instance  = null;

  private PropertyManager() {
  }

  public static PropertyManager getInstance() throws IOException {
  if (instance == null) {
    synchronized (lock) {
      if (instance == null) {
        instance = new PropertyManager();
        instance.loadProperties();
      }
    }
  }
  return (instance);

  }

  private void loadProperties()  throws IOException {

    // create and load default properties
    FileInputStream in = new FileInputStream(DEFAULT_PROPERTIES_FILE);
    defaultProps.load(in);
    in.close();

    // create application properties with default
    appProps = new Properties(defaultProps);

    try {
    // user/application properties
      in = new FileInputStream(APP_PROPERTIES_FILE);
      appProps.load(in);
      in.close();
    } catch (Throwable th) {
    // TODO: log something
  }

  }

  public void storeProperties() throws IOException {

    FileOutputStream out = new FileOutputStream(DEFAULT_PROPERTIES_FILE);
    defaultProps.store(out, "---Default properties---");
    out.close();


    out = new FileOutputStream(APP_PROPERTIES_FILE);
    appProps.store(out, "---App/User properties---");
    out.close();

  }

  public String getProperty(String key) {
  String val = null;
  if (key != null) {
    if (appProps != null)
      val = (String)appProps.getProperty(key);
    if (val == null) {
      val = defaultProps.getProperty(key);
    }
  }
  return (val);

  }

  /**
   * Sets Application/User String properties; default property values cannot be set.
   */
  public void setProperty(String key, String val) {

  ArrayList list  = null;
  Object oldValue = null;

  oldValue = getProperty(key);

  appProps.setProperty(key, val);
  if (listeners.containsKey(key)) {
    list = (ArrayList)listeners.get(key);
    int len = list.size();
    if (len > 0) {
    PropertyChangeEvent evt = new PropertyChangeEvent(this, key, oldValue, val);
    for (int i=0; i < len; i++) {
      if (list.get(i) instanceof PropertyChangeListener)
      ((PropertyChangeListener)list.get(i)).propertyChange(evt);
    }
    }
  }

  }

  public boolean addListener (String key, PropertyChangeListener listener) {
  boolean added = false;
  ArrayList list = null;
  if (listeners == null)
    listeners = new Hashtable();

  if (!listeners.contains(key)) {
    list = new ArrayList();
    added = list.add(listener);
    listeners.put(key, list);
    } else {
    list = (ArrayList)listeners.get(key);
    added = list.add(listener);
  }
  return (added);
  }

  public void removeListener (PropertyChangeListener listener) {
  if (listeners != null && listeners.size() > 0)
    listeners.remove(listener);
  }
  
}

   
    
    
    
    
    
    
    
  








Related examples in the same category

1.Read a set of properties from the received input stream, strip off any excess white space that exists in those property values,
2.Copy a set of properties from one Property to another.
3.Sorts property list and print out each key=value pair prepended with specific indentation.
4.Sorts a property list and turns the sorted list into a string.
5.A utility class for replacing properties in strings.
6.Property Loader
7.Property access utility methods
8.Represents a persistent set of properties
9.Converts specified map to java.util.Properties
10.A java.util.Properties class that will check a file or URL for changes periodically
11.Encapsulates java.util.Properties to add java primitives and some other java classes
12.Load and save properties to files.
13.Adds new properties to an existing set of properties
14.Extracts a specific property key subset from the known properties
15.Observable Properties
16.Merge Properties Into Map
17.XML configuration management
18.JDOM based XML properties
19.XML Properties
20.Converts Unicode into something that can be embedded in a java properties file
21.Create Properties from String array
22.Task to overwrite Properties
23.Gets strong-type-value property from a standard Properties
24.The properties iterator iterates over a set of enumerated properties.
25.An utility class to ease up using property-file resource bundles.
26.Sorted Properties
27.A subclass of the java.util.Properties class that must be initialized from a file on disk
28.This class contains a collection of static utility methods for creating, retrieving, saving and loading properties.
29.Simplify routine job with properties