A subclass of the java.util.Properties class that must be initialized from a file on disk : Properties « Development Class « Java






A subclass of the java.util.Properties class that must be initialized from a file on disk

      
/*
 * | $Id$
 * |*-------------------------------------------------------------------------*|
 * | Copyright (C) 2009 Virginia Tech | | This file is part of CloudSpace. | |
 * CloudSpace is free software; you can redistribute it and/or modify | it under
 * the terms of the GNU General Public License as published | by the Free
 * Software Foundation; either version 3 of the License, or | (at your option)
 * any later version. | | CloudSpace is distributed in the hope that it will be
 * useful, | but WITHOUT ANY WARRANTY; without even the implied warranty of |
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | GNU General
 * Public License for more details. | | You should have received a copy of the
 * GNU General Public License | along with CloudSpace; if not, see
 * <http://www.gnu.org/licenses/>.
 */

//package cloudspace.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

//import org.apache.log4j.Logger;


// -------------------------------------------------------------------------
/**
 * A subclass of the java.util.Properties class that must be initialized from a
 * file on disk, and which always keeps the in-memory property set in sync with
 * the contents on disk.
 * 
 * @author Tony Allevato
 * @author Last changed by $Author$
 * @version $Revision$, $Date$
 */
public class ImmediateProperties extends Properties
{
    // ~ Constructors ..........................................................

    // ----------------------------------------------------------
    /**
     * Initializes a new instance of ImmediateProperties by loading them from
     * the specified file.
     * 
     * @param file
     *            the path to the file that backs this Properties instance.
     */
    public ImmediateProperties( File file )
    {
        super();

        this.backingFile = file;

        FileInputStream stream = null;

        try
        {
            stream = new FileInputStream( backingFile );
            load( stream );
        }
        catch ( FileNotFoundException e )
        {
            // Do nothing; start the property set empty if the file did not
            // exist.
        }
        catch ( IOException e )
        {
           // log.error( "An I/O exception occurred when loading the properties "
          //      + "file at " + backingFile, e );
        }
        finally
        {
            try
            {
                if ( stream != null )
                {
                    stream.close();
                }
            }
            catch ( IOException e )
            {
            //    log.error( "An I/O exception occurred when trying to close the "
            //        + "stream",
            //        e );
            }
        }
    }


    // ~ Methods ...............................................................

    // ----------------------------------------------------------
    /**
     * Removes the specified property from the file.
     * 
     * @param key
     *            the name of the property to remove
     * @return the previous value of the property
     */
    @Override
    public Object remove( Object key )
    {
        Object previousValue = super.remove( key );
        writeToFile();
        return previousValue;
    }


    // ----------------------------------------------------------
    /**
     * Sets the value of the specified property.
     * 
     * @param key
     *            the name of the property to set
     * @param value
     *            the value of the property
     * @return the previous value of the property
     */
    @Override
    public Object put( Object key, Object value )
    {
        Object previousValue = super.put( key, value );
        writeToFile();
        return previousValue;
    }


    // ----------------------------------------------------------
    /**
     * Saves the current properties set to their associated file.
     */
    private void writeToFile()
    {
        FileOutputStream stream = null;

        try
        {
            stream = new FileOutputStream( backingFile );
            store( stream, null );
        }
        catch ( IOException e )
        {
         //   log.error( "An I/O exception occurred when saving the properties",
          //      e );
        }
        finally
        {
            try
            {
                if ( stream != null )
                {
                    stream.close();
                }
            }
            catch ( IOException e )
            {
           //     log.error( "An I/O exception occurred when closing the stream",
           //         e );
            }
        }
    }

    // ~ Instance/static variables .............................................

    /** The path to the file that backs this Properties instance. */
    private File backingFile;

    private static final long serialVersionUID = -6139105936918525923L;

   // private static final Logger log = Logger.getLogger( ImmediateProperties.class );
}

   
    
    
    
    
    
  








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.This class contains a collection of static utility methods for creating, retrieving, saving and loading properties.
28.Simplify routine job with properties
29.Property Manager