ConfigParameter.java
上传用户:huihesys
上传日期:2007-01-04
资源大小:3877k
文件大小:4k
源码类别:

WEB邮件程序

开发平台:

C/C++

  1. /* $Id: ConfigParameter.java,v 1.3 2000/04/06 08:02:01 wastl Exp $ */
  2. package net.wastl.webmail.config;
  3. import java.util.*;
  4. /*
  5.  * ConfigParameter.java
  6.  *
  7.  * Created: Sep 1999
  8.  *
  9.  * Copyright (C) 1999-2000 Sebastian Schaffert
  10.  * 
  11.  * This program is free software; you can redistribute it and/or
  12.  * modify it under the terms of the GNU General Public License
  13.  * as published by the Free Software Foundation; either version 2
  14.  * of the License, or (at your option) any later version.
  15.  * 
  16.  * This program is distributed in the hope that it will be useful,
  17.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.  * GNU General Public License for more details.
  20.  * 
  21.  * You should have received a copy of the GNU General Public License
  22.  * along with this program; if not, write to the Free Software
  23.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  24.  */
  25. /**
  26.  * An abstraction for a configuration parameter.
  27.  * Subclasses must implement a method that checks whether a specific value is correct for this 
  28.  * parameter.
  29.  *
  30.  * ConfigParameters may have ConfigurationListeners that work much like the Listeners in the 
  31.  * Java AWT. All listeners get informed if the value of the parameter has changed.
  32.  *
  33.  * Each ConfigParameter has a corresponding (unique) key, a default value (if not yet changed
  34.  * by the user) and a short description for the administrator about what the parameter means.
  35.  *
  36.  * This is a scheme only, however, ConfigParameters just describe the behaviour of certain
  37.  * keys in the WebMail configuration, they don't actually store the value itself.
  38.  */
  39. public abstract class ConfigParameter {
  40.     protected String key;
  41.     protected Object def_value;
  42.     protected String desc;
  43.     protected Vector listeners;
  44.     protected String group;
  45.     /**
  46.      * Create a new parameter.
  47.      * @param name Unique key of this parameter
  48.      * @param def Default value for this parameter
  49.      * @param desc Description for this parameter
  50.      */
  51.     public ConfigParameter(String name, Object def, String desc) {
  52. key=name;
  53. this.def_value=def;
  54. this.desc=desc;
  55. group="default";
  56. listeners=new Vector();
  57.     }
  58.     
  59.     public void setGroup(String g) {
  60. group=g;
  61.     }
  62.     /**
  63.      * Return the key of this parameter.
  64.      */
  65.     public String getKey() {
  66. return key;
  67.     }
  68.     
  69.     /**
  70.      * Return the default value of this parameter.
  71.      */
  72.     public Object getDefault() {
  73. return def_value;
  74.     }
  75.     public void setDefault(Object value) {
  76. def_value=value;
  77.     }
  78.     
  79.     /**
  80.      * Return the description for this parameter.
  81.      */
  82.     public String getDescription() {
  83. return desc;
  84.     }
  85.     /**
  86.      * Add a ConfigurationListener for this object that will be informed if the parameter's
  87.      * value changes.
  88.      */
  89.     public void addConfigurationListener(ConfigurationListener l) {
  90. listeners.addElement(l);
  91.     }
  92.     /**
  93.      * Get a list of all configuration listeners.
  94.      */
  95.     public Enumeration getConfigurationListeners() {
  96. return listeners.elements();
  97.     }
  98.     /**
  99.      * Put through some sort of filter.
  100.      * This method is called when a String value for this parameter is set.
  101.      * Subclasses should implement this, if they want to change the behaviour
  102.      * @see CryptedStringConfigParameter
  103.      */
  104.     public String filter(String s) {
  105. return s;
  106.     }
  107.     
  108.     /**
  109.      * Check whether the value that is passed as the parameter is a valid value for this
  110.      * ConfigParameter
  111.      * @see ChoiceConfigParameter
  112.      */
  113.     public abstract boolean isPossibleValue(Object value);
  114.     public String getType() {
  115. return "undefined";
  116.     }
  117.     public String getGroup() {
  118. return group;
  119.     }
  120. }