some codeformatting, license for the new classes
[mir.git] / source / mir / config / ConfigChecker.java
index 7d52eb0..71d19c4 100755 (executable)
-package  mir.config;\r
-\r
-import java.util.*;\r
-\r
-public class ConfigChecker {\r
-  public final static int STRING = 0;\r
-  public final static int INTEGER = 1;\r
-  public final static int BOOLEAN = 2;\r
-  public final static int DOUBLE = 3;\r
-  public final static int PATH = 4;\r
-//  public final static int ABSOLUTEPATH = 5;\r
-//  public final static int ABSOLUTEURL = 6;\r
-\r
-  private Node rootNode;\r
-\r
-  public Node getRootNode() {\r
-    return rootNode;\r
-  }\r
-\r
-  public ConfigChecker() {\r
-    super();\r
-\r
-    rootNode = new Node();\r
-  }\r
-\r
-  public void check(ConfigNode aNode) throws ConfigException {\r
-    getRootNode().check(aNode);\r
-  }\r
-\r
-  public class Node {\r
-\r
-    private Map subNodes;\r
-    private Vector constraints;\r
-\r
-    public Node() {\r
-      subNodes = new HashMap();\r
-      constraints = new Vector();\r
-    }\r
-\r
-    public Node getSubNode(String aName) {\r
-      Node subNode = (Node) subNodes.get(aName);\r
-\r
-      if (subNode==null) {\r
-        subNode = new Node();\r
-        subNodes.put(aName, subNode);\r
-      }\r
-\r
-      return subNode;\r
-    }\r
-\r
-    public void addExistenceConstraint(String aPropertyName) {\r
-      constraints.add(new ExistenceConstraint(aPropertyName));\r
-    }\r
-\r
-    public void addTypeConstraint(String aPropertyName, int aType) {\r
-      constraints.add(new TypeConstraint(aPropertyName, aType));\r
-    }\r
-\r
-    public void addExistenceAndTypeConstraint(String aPropertyName, int aType) {\r
-      addExistenceConstraint(aPropertyName);\r
-      addTypeConstraint(aPropertyName, aType);\r
-    }\r
-\r
-    public void check(ConfigNode aNode) throws ConfigException {\r
-      Iterator iterator;\r
-\r
-      iterator=constraints.iterator();\r
-      while (iterator.hasNext()) {\r
-        ((Constraint) iterator.next()).check(aNode);\r
-      }\r
-\r
-      iterator=subNodes.keySet().iterator();\r
-      while (iterator.hasNext()) {\r
-        Map.Entry entry = (Map.Entry) iterator.next();\r
-        ((Node) entry.getValue()).check(aNode.getSubNode((String) entry.getKey()));\r
-      }\r
-\r
-    }\r
-\r
-    private class Constraint {\r
-      protected String propertyName;\r
-\r
-      Constraint(String aPropertyName) {\r
-        propertyName=aPropertyName;\r
-      }\r
-\r
-      public void check(ConfigNode aNode) throws ConfigException {\r
-      };\r
-    }\r
-\r
-    private class ExistenceConstraint extends Constraint {\r
-      ExistenceConstraint(String aPropertyName) {\r
-        super(aPropertyName);\r
-      }\r
-\r
-      public void check(ConfigNode aNode) throws ConfigException {\r
-        aNode.getRequiredStringProperty(propertyName);\r
-      };\r
-    }\r
-\r
-    private class TypeConstraint extends Constraint {\r
-      private int type;\r
-\r
-      TypeConstraint(String aPropertyName, int aType) {\r
-        super(aPropertyName);\r
-\r
-        type=aType;\r
-      }\r
-\r
-      public void check(ConfigNode aNode) throws ConfigException {\r
-        switch(type) {\r
-          case INTEGER:\r
-            aNode.getOptionalIntegerProperty(propertyName, new Integer(0));\r
-            break;\r
-          case STRING:\r
-            aNode.getOptionalStringProperty(propertyName, "");\r
-            break;\r
-          case DOUBLE:\r
-            aNode.getOptionalDoubleProperty(propertyName, new Double(0.0));\r
-            break;\r
-          case BOOLEAN:\r
-            aNode.getOptionalBooleanProperty(propertyName, Boolean.FALSE);\r
-            break;\r
-          default:\r
-            throw new ConfigException("Invalid value for type in type constraint: "+new Integer(type).toString());\r
-        }\r
-      }\r
-    }\r
-  }\r
-}\r
+/*
+ * Copyright (C) 2001, 2002  The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir 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 Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with the com.oreilly.servlet library, any library
+ * licensed under the Apache Software License, The Sun (tm) Java Advanced
+ * Imaging library (JAI), The Sun JIMI library (or with modified versions of
+ * the above that use the same license as the above), and distribute linked
+ * combinations including the two.  You must obey the GNU General Public
+ * License in all respects for all of the code used other than the above
+ * mentioned libraries.  If you modify this file, you may extend this exception
+ * to your version of the file, but you are not obligated to do so.  If you do
+ * not wish to do so, delete this exception statement from your version.
+ */
+package mir.config;
+
+import mir.config.exceptions.ConfigFailure;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Vector;
+
+
+public class ConfigChecker {
+  public final static int STRING = 0;
+  public final static int INTEGER = 1;
+  public final static int BOOLEAN = 2;
+  public final static int DOUBLE = 3;
+  public final static int PATH = 4;
+
+  //  public final static int ABSOLUTEPATH = 5;
+  //  public final static int ABSOLUTEURL = 6;
+  private Node rootNode;
+
+  public ConfigChecker() {
+    super();
+
+    rootNode = new Node();
+  }
+
+  public Node getRootNode() {
+    return rootNode;
+  }
+
+  public void check(ConfigNode aNode) throws ConfigFailure {
+    getRootNode().check(aNode);
+  }
+
+  public class Node {
+    private Map subNodes;
+    private Vector constraints;
+
+    public Node() {
+      subNodes = new HashMap();
+      constraints = new Vector();
+    }
+
+    public Node getSubNode(String aName) {
+      Node subNode = (Node) subNodes.get(aName);
+
+      if (subNode == null) {
+        subNode = new Node();
+        subNodes.put(aName, subNode);
+      }
+
+      return subNode;
+    }
+
+    public void addExistenceConstraint(String aPropertyName) {
+      constraints.add(new ExistenceConstraint(aPropertyName));
+    }
+
+    public void addTypeConstraint(String aPropertyName, int aType) {
+      constraints.add(new TypeConstraint(aPropertyName, aType));
+    }
+
+    public void addExistenceAndTypeConstraint(String aPropertyName, int aType) {
+      addExistenceConstraint(aPropertyName);
+      addTypeConstraint(aPropertyName, aType);
+    }
+
+    public void check(ConfigNode aNode) throws ConfigFailure {
+      Iterator iterator;
+
+      iterator = constraints.iterator();
+
+      while (iterator.hasNext()) {
+        ((Constraint) iterator.next()).check(aNode);
+      }
+
+      iterator = subNodes.keySet().iterator();
+
+      while (iterator.hasNext()) {
+        Map.Entry entry = (Map.Entry) iterator.next();
+        ((Node) entry.getValue()).check(aNode.getSubNode(
+            (String) entry.getKey()));
+      }
+    }
+
+    private class Constraint {
+      protected String propertyName;
+
+      Constraint(String aPropertyName) {
+        propertyName = aPropertyName;
+      }
+
+      public void check(ConfigNode aNode) throws ConfigFailure {
+      }
+    }
+
+    private class ExistenceConstraint extends Constraint {
+      ExistenceConstraint(String aPropertyName) {
+        super(aPropertyName);
+      }
+
+      public void check(ConfigNode aNode) throws ConfigFailure {
+        aNode.getRequiredStringProperty(propertyName);
+      }
+    }
+
+    private class TypeConstraint extends Constraint {
+      private int type;
+
+      TypeConstraint(String aPropertyName, int aType) {
+        super(aPropertyName);
+
+        type = aType;
+      }
+
+      public void check(ConfigNode aNode) throws ConfigFailure {
+        switch (type) {
+        case INTEGER:
+          aNode.getOptionalIntegerProperty(propertyName, new Integer(0));
+
+          break;
+
+        case STRING:
+          aNode.getOptionalStringProperty(propertyName, "");
+
+          break;
+
+        case DOUBLE:
+          aNode.getOptionalDoubleProperty(propertyName, new Double(0.0));
+
+          break;
+
+        case BOOLEAN:
+          aNode.getOptionalBooleanProperty(propertyName, Boolean.FALSE);
+
+          break;
+
+        default:
+          throw new ConfigFailure("Invalid value for type in type constraint: " +
+            new Integer(type).toString());
+        }
+      }
+    }
+  }
+}