]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.castor/src/main/java/org/argeo/slc/castor/structure/tree/TreeSPathFieldHandler.java
Introduce org.argeo.slc.support.castor
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.castor / src / main / java / org / argeo / slc / castor / structure / tree / TreeSPathFieldHandler.java
diff --git a/runtime/org.argeo.slc.support.castor/src/main/java/org/argeo/slc/castor/structure/tree/TreeSPathFieldHandler.java b/runtime/org.argeo.slc.support.castor/src/main/java/org/argeo/slc/castor/structure/tree/TreeSPathFieldHandler.java
new file mode 100644 (file)
index 0000000..ad117ff
--- /dev/null
@@ -0,0 +1,41 @@
+package org.argeo.slc.castor.structure.tree;
+
+import org.exolab.castor.mapping.AbstractFieldHandler;
+import org.exolab.castor.mapping.MapItem;
+
+import org.argeo.slc.core.structure.tree.TreeSPath;
+
+public class TreeSPathFieldHandler extends AbstractFieldHandler {
+
+       @Override
+       public Object getValue(Object object) throws IllegalStateException {
+               MapItem part = (MapItem) object;
+               return ((TreeSPath) part.getKey()).getAsUniqueString();
+       }
+
+       @Override
+       public Object newInstance(Object parent) throws IllegalStateException {
+               return null;
+       }
+
+       @Override
+       public Object newInstance(Object parent, Object[] args)
+                       throws IllegalStateException {
+               return null;
+       }
+
+       @Override
+       public void resetValue(Object object) throws IllegalStateException,
+                       IllegalArgumentException {
+               MapItem part = (MapItem) object;
+               part.setKey(null);
+       }
+
+       @Override
+       public void setValue(Object object, Object value)
+                       throws IllegalStateException, IllegalArgumentException {
+               MapItem part = (MapItem) object;
+               part.setKey(TreeSPath.parseToCreatePath(value.toString()));
+       }
+
+}