summaryrefslogtreecommitdiff
path: root/orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2005-10-20 13:40:58 +0000
committerHenri Herscher <henri@oreka.org>2005-10-20 13:40:58 +0000
commit7e1d63dd9fd149e4934bf77095c8610fac786b04 (patch)
tree5fe486a1b0300c3b84fb559107a868e5cc2c95da /orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java
parent467768fc956fc3e5a253373f26c71c681b31b6b8 (diff)
First checkin
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@2 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java')
-rw-r--r--orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java239
1 files changed, 239 insertions, 0 deletions
diff --git a/orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java b/orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java
new file mode 100644
index 0000000..f4b0d54
--- /dev/null
+++ b/orkbasej/java/net/sf/oreka/serializers/OrkSerializer.java
@@ -0,0 +1,239 @@
+/*
+ * 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.serializers;
+
+import net.sf.oreka.*;
+
+/**
+ *
+ * Base class for all serializers.
+ * Serializers have to implement their own serialize and deserialize methods
+ * since the data can be read from and written to many different formats
+ *
+ * Enum and Boolean value are case insensitive (all enum values must be defined
+ * lower case in the project, otherwise they won't be recognized at all)
+ *
+ */
+public abstract class OrkSerializer {
+
+ boolean deserialize = false;
+ String classKey = "class";
+
+ public void setClassKey(String classKey)
+ {
+ this.classKey = classKey;
+ }
+
+ public int intValue(String key, int value, boolean required) throws OrkException
+ {
+ if (deserialize)
+ {
+ return getInt(key, value, required);
+ }
+ else
+ {
+ addInt(key, value);
+ return value;
+ }
+ }
+
+ public double doubleValue(String key, double value, boolean required) throws OrkException
+ {
+ if (deserialize)
+ {
+ return getDouble(key, value, required);
+ }
+ else
+ {
+ addDouble(key, value);
+ return value;
+ }
+ }
+
+ public String stringValue(String key, String value, boolean required ) throws OrkException
+ {
+ if (deserialize)
+ {
+ return getString(key, value, required);
+ }
+ else
+ {
+ addString(key, value);
+ return value;
+ }
+ }
+
+ public boolean booleanValue(String key, boolean value, boolean required ) throws OrkException
+ {
+ if (deserialize)
+ {
+ return getBoolean(key, value, required);
+ }
+ else
+ {
+ addBoolean(key, value);
+ return value;
+ }
+ }
+
+ public Enum enumValue(String key, Enum value, boolean required ) throws OrkException
+ {
+ if (deserialize)
+ {
+ return getEnum(key, value, required);
+ }
+ else
+ {
+ addEnum(key, value);
+ return value;
+ }
+ }
+
+ public abstract OrkObject objectValue(String key, OrkObject value, boolean required ) throws OrkException;
+
+ public abstract void addClassName(String value);
+
+ void addInt(String key, int value)
+ {
+ String valueString = String.valueOf(value);
+ addString(key, valueString);
+ }
+
+ void addDouble(String key, double value)
+ {
+ String valueString = String.valueOf(value);
+ addString(key, valueString);
+ }
+
+ void addBoolean(String key, boolean value)
+ {
+ if(value)
+ {
+ addString(key, "true");
+ }
+ else
+ {
+ addString(key, "false");
+ }
+ }
+
+ void addEnum(String key, Enum value)
+ {
+ addString(key, value.name());
+ }
+
+ abstract void addString(String key, String value);
+
+ int getInt(String key, int oldValue, boolean required) throws OrkException
+ {
+ int value = 0;
+ String stringValue = getString(key, null, required);
+
+ if (stringValue == null)
+ {
+ value = oldValue;
+ }
+ else
+ {
+ try
+ {
+ value = Integer.valueOf(stringValue);
+ }
+ catch (Exception e)
+ {
+ throw (new OrkException("Serializer: value:" + stringValue + " not an int for key:" + key));
+ }
+ }
+ return value;
+ }
+
+ double getDouble(String key, double oldValue, boolean required) throws OrkException
+ {
+ double value = 0.0;
+ String stringValue = getString(key, null, required);
+
+ if (stringValue == null)
+ {
+ value = oldValue;
+ }
+ else
+ {
+ try
+ {
+ value = Double.valueOf(stringValue);
+ }
+ catch (Exception e)
+ {
+ throw (new OrkException("Serializer: value:" + stringValue + " not a double for key:" + key));
+ }
+ }
+ return value;
+ }
+
+ boolean getBoolean(String key, boolean oldValue, boolean required) throws OrkException
+ {
+ boolean value;
+ String stringValue = getString(key, null, required);
+
+ if (stringValue == null)
+ {
+ value = oldValue;
+ }
+ else
+ {
+ stringValue = stringValue.toLowerCase();
+
+ if( stringValue.equals("true") || stringValue.equals("yes") || stringValue.equals("1") )
+ {
+ value = true;
+ }
+ else if( stringValue.equals("false") || stringValue.equals("no") || stringValue.equals("0") )
+ {
+ value = false;
+ }
+ else
+ {
+ throw(new OrkException("Serializer: Invalid boolean value:" + stringValue + " for key:" + key));
+ }
+ }
+ return value;
+ }
+
+ Enum getEnum(String key, Enum oldValue, boolean required) throws OrkException
+ {
+ Enum value = null;
+ String stringValue = getString(key, null, required);
+
+ if (stringValue == null)
+ {
+ value = oldValue;
+ }
+ else
+ {
+ stringValue = stringValue.toLowerCase();
+ Class valueClass = oldValue.getClass();
+ try
+ {
+ value = Enum.valueOf(valueClass, stringValue);
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw (new OrkException("Serializer: Invalid enum value:" + stringValue + " for parameter:" + key));
+ }
+ }
+ return value;
+ }
+
+ abstract String getString(String key, String oldValue, boolean required ) throws OrkException;
+}