Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/memoire/fu/FuPreferences.java


1   /**
2    * @modification $Date: 2002/12/16 18:56:26 $
3    * @statut       unstable
4    * @file         FuPreferences.java
5    * @version      0.36
6    * @author       Guillaume Desnoix
7    * @email        guillaume@desnoix.com
8    * @license      GNU General Public License 2 (GPL2)
9    * @copyright    1998-2001 Guillaume Desnoix
10   */
11  
12  package com.memoire.fu;
13  
14  import com.memoire.fu.*;
15  
16  import java.beans.*;
17  import java.io.*;
18  import java.util.*;
19  
20  /**
21   * A class to manage user preferences in a file of properties.
22   */
23  
24  public class FuPreferences
25  {
26    public static final FuPreferences FU=new FuPreferences();
27  
28    protected Properties values_;
29    protected Vector     listeners_;
30      
31    // Constructeur "interdit"
32    
33    protected FuPreferences()
34    {
35      values_   =new Properties();
36      listeners_=new Vector();
37  
38      readIniFile();
39    }
40  
41    public final String getRoot()
42    {
43      Class  c=getClass();
44      String f=c.getName();
45  
46      int i=f.lastIndexOf('.');
47      if(i>=0) f=f.substring(i+1);
48  
49      if(f.endsWith("Preferences")) f=f.substring(0,f.length()-11);
50      f=f.toLowerCase();
51  
52      return f;
53    }
54  
55    protected String getPath()
56    {
57      String f=getRoot();
58      String p=FuLib.getUserHome();
59  
60      if(!"".equals(p)) p+=File.separator;
61  
62           if(FuLib.isWindows()) f=p+f+".ini";
63      else if(FuLib.isUnix   ()) f=p+"."+f+"rc";
64      else                       f=p+f+".preferences";
65  
66      // System.err.println("getPath -> "+f);
67      return f;
68    }
69  
70    public final synchronized void readIniFile()
71    {
72      // System.err.println(getRoot()+": reading preferences");
73  
74      try
75      {
76        values_.load(new FileInputStream(getPath()));
77      }
78      catch(Throwable th) //IOException ex
79      {
80        // System.err.println(getPath()+" not found");
81        // th.printStackTrace();
82      }
83      addDefaultValues();
84    }
85    
86    public final synchronized void writeIniFile()
87    {
88      // System.err.println(getRoot()+": writing preferences");
89  
90      removeDefaultValues();
91      try
92      {
93        values_.save(new FileOutputStream(getPath()),
94        "Preferences for "+getRoot());
95      }
96      catch(Throwable th) //IOException ex
97      {
98        System.err.println("Couldn't write "+getPath());
99        th.printStackTrace();
100     }
101     addDefaultValues();
102   }
103 
104   protected void addDefaultValues() { }
105   protected void removeDefaultValues() { }
106 
107 
108   // Basic
109   public final Enumeration keys()
110   {
111     return values_.keys();
112   }
113 
114   public final int size()
115   {
116     return values_.size();
117   }
118 
119   /**
120    * @deprecated use getStringProperty instead
121    */
122   public final String get(String _key)
123   {
124     return values_.getProperty(_key);
125   }
126 
127   /**
128     @deprecated use removeProperty instead
129   */
130   public final void remove(String _key)
131   {
132     String old=get(_key);
133     values_.remove(_key);
134     firePropertyChange(_key,old,null);
135   }
136 
137   /**
138     @deprecated use putStringProperty instead
139   */
140   public final void put(String _key, String _value)
141   {
142     String old=get(_key);
143     if(_value==null) values_.remove(_key);
144     else             values_.put(_key,_value);
145     firePropertyChange(_key,old,_value);
146   }
147 
148   protected void firePropertyChange(String _p, String _o, String _n)
149   {
150     PropertyChangeEvent e=new PropertyChangeEvent(this,_p,_o,_n);
151     Enumeration         l=listeners_.elements();
152     while(l.hasMoreElements())
153       ((PropertyChangeListener)l.nextElement()).propertyChange(e);
154   }
155 
156   public void addPropertyChangeListener(PropertyChangeListener _l)
157   { listeners_.addElement(_l); }
158 
159   public void removePropertyChangeListener(PropertyChangeListener _l)
160   { listeners_.removeElement(_l); }
161 
162   // GET
163   
164   /*
165   public final String getProperty(String _key)
166     { return getProperty(_key,""); }
167 
168   public final String getProperty(String _key, String _default)
169   {
170     String r=get(_key);
171     if(r==null) r=_default;
172     return r;
173   }
174   */
175 
176   /**
177     @deprecated use getStringProperty instead
178   */
179   public final String getProperty(String _key)
180     { return getStringProperty(_key); }
181 
182   /**
183     @deprecated use getStringProperty instead
184   */
185   public final String getProperty(String _key, String _default)
186     { return getStringProperty(_key, _default); }
187   
188   public final String getStringProperty(String _key)
189     { return getStringProperty(_key,""); }
190 
191   public final String getStringProperty(String _key, String _default)
192   {
193     String r=get(_key);
194     if(r==null) r=_default;
195     return r;
196   }
197   
198   public final boolean getBooleanProperty(String _key)
199     { return getBooleanProperty(_key,false); }
200 
201   public final boolean getBooleanProperty(String _key, boolean _default)
202   {
203     String  s=get(_key);
204     boolean r=_default;
205 
206     if("false".equals(s)) r=false;
207     if("true" .equals(s)) r=true;
208     if("no"   .equals(s)) r=false;
209     if("yes"  .equals(s)) r=true;
210     if("0"    .equals(s)) r=false;
211     if("1"    .equals(s)) r=true;
212 
213     return r;
214   }
215 
216   public final int getIntegerProperty(String _key)
217     { return getIntegerProperty(_key,0); }
218 
219   public final int getIntegerProperty(String _key, int _default)
220   {
221     String  s=get(_key);
222     int     r=_default;
223 
224     try { r=Integer.parseInt(s); }
225     catch(Exception ex) { }
226 
227     return r;
228   }
229 
230   public final double getDoubleProperty(String _key)
231     { return getDoubleProperty(_key,0.); }
232 
233   public final double getDoubleProperty(String _key, double _default)
234   {
235     String s=get(_key);
236     double r=_default;
237 
238     try { r=new Double(s).doubleValue(); } // Double.parseDouble
239     catch(Exception ex) { }
240 
241     return r;
242   }
243 
244   // PUT
245 
246   public void putStringProperty(String _key, String _value)
247   {
248     put(_key,_value);
249   }
250 
251   public void putBooleanProperty(String _key, boolean _value)
252   {
253     put(_key,""+_value);
254   }
255 
256   public void putIntegerProperty(String _key, int _value)
257   {
258     put(_key,""+_value);
259   }
260 
261   public void putDoubleProperty(String _key, double _value)
262   {
263     put(_key,""+_value);
264   }
265 
266   // REMOVE
267 
268   public final void removeProperty(String _key)
269   {
270     if(_key!=null) remove(_key);
271   }
272 }
273