summaryrefslogtreecommitdiff
path: root/orkbasej/java/net/sf/oreka/OrkObjectFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'orkbasej/java/net/sf/oreka/OrkObjectFactory.java')
-rw-r--r--orkbasej/java/net/sf/oreka/OrkObjectFactory.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/orkbasej/java/net/sf/oreka/OrkObjectFactory.java b/orkbasej/java/net/sf/oreka/OrkObjectFactory.java
new file mode 100644
index 0000000..79c2734
--- /dev/null
+++ b/orkbasej/java/net/sf/oreka/OrkObjectFactory.java
@@ -0,0 +1,66 @@
+/*
+ * Oreka -- A media capture and retrieval platform
+ *
+ * Copyright (C) 2005, orecx LLC
+ *
+ * http://www.orecx.com
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License.
+ * Please refer to http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+package net.sf.oreka;
+/**
+ * The ObjectFactory can be used to instanciate Objects based on class name.
+ * All existing Objects must be registered to the ObjectFactory at startup.
+ */
+public class OrkObjectFactory {
+
+ static OrkObjectFactory instance = null;
+ java.util.HashMap<String, OrkObject> classes;
+
+ private OrkObjectFactory()
+ {
+ classes = new java.util.HashMap<String, OrkObject>();
+ }
+
+ public static OrkObjectFactory instance()
+ {
+ if(instance == null)
+ {
+ instance = new OrkObjectFactory();
+ }
+ return instance;
+ }
+
+ public OrkObject newOrkObject(String className) throws OrkException
+ {
+ className = className.toLowerCase();
+ OrkObject classObject = classes.get(className);
+ OrkObject newInstance = null;
+ if(classObject != null)
+ {
+ try
+ {
+ newInstance = classObject.getClass().newInstance();
+ }
+ catch (Exception e)
+ {
+ throw new OrkException("OrkObjectFactory: Could not instanciate:" + className);
+ }
+ }
+ else
+ {
+ throw new OrkException("OrkObjectFactory: class does not exist:" + className);
+ }
+ return newInstance;
+ }
+
+ public void registerOrkObject(OrkObject object)
+ {
+ classes.put(object.getOrkClassName(), object);
+ }
+
+}