home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / browser / properties.java < prev    next >
Text File  |  1995-08-11  |  3KB  |  114 lines

  1. /*
  2.  * @(#)Properties.java    1.6 95/03/14 Arthur van Hoff
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package browser;
  21.  
  22. import java.io.*;
  23. import java.util.*;
  24.  
  25. /**
  26.  * Persistent properties class. Basically a hashtable that can
  27.  * be saved/loaded from a stream.
  28.  *
  29.  * @see AppletDisplayItem
  30.  * @author Chris Warth
  31.  * @author Arthur van Hoff
  32.  * @version     1.6, 14 Mar 1995
  33.  */
  34.  
  35. public
  36. class Properties extends Hashtable {
  37.     File source;
  38.     boolean changed;
  39.     
  40.     public Properties(String source) {
  41.     this(new File(source));
  42.     }
  43.     public Properties(File source) {
  44.     this.source = source;
  45.     if (source.canRead()) {
  46.         load();
  47.     }
  48.     }
  49.  
  50.     public boolean load() {
  51.     try {
  52.         InputStream in = new BufferedInputStream(
  53.         new FileInputStream(source.getPath()));
  54.         load(in);
  55.         in.close();
  56.         return true;
  57.     } catch (Exception ex) {
  58.         return false;
  59.     }
  60.     }
  61.     public void load(InputStream in) {
  62.     DataInputStream data = new DataInputStream(in);
  63.  
  64.     String line;
  65.     while ((line = data.readLine()) != null) {
  66.         if (line.startsWith("#")) {
  67.         continue;
  68.         }
  69.         int index = line.indexOf('=');
  70.         if (index > 0) {
  71.         put(line.substring(0, index), line.substring(index + 1));
  72.         }
  73.     }
  74.     }
  75.  
  76.     public void save(OutputStream out) {
  77.     PrintStream prnt = new PrintStream(out);
  78.     prnt.println("#" + new Date());
  79.     for (Enumeration e = keys() ; e.hasMoreElements() ;) {
  80.         Object key = e.nextElement();
  81.         prnt.println(key + "=" + get(key));
  82.     }
  83.     }
  84.     public boolean save() {
  85.     if (changed) {
  86.         try {
  87.         String parent = source.getParent();
  88.  
  89.         if (!source.exists()) {
  90.             new File(parent).mkdirs();
  91.         }
  92.         OutputStream out = new BufferedOutputStream(
  93.             new FileOutputStream(source.getPath()));
  94.         save(out);
  95.         out.flush();
  96.         out.close();
  97.         return true;
  98.         } catch (Exception ex) {
  99.         return false;
  100.         }
  101.     }
  102.     return true;
  103.     }
  104.  
  105.     public Object remove(Object key) {
  106.     changed = true;
  107.     return super.remove(key);
  108.     }
  109.     public Object put(Object key, Object value) {
  110.     changed = true;
  111.     return super.put(key, value);
  112.     }
  113. }
  114.