]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.castor/src/main/java/org/argeo/slc/castor/execution/PrimitiveFieldHandler.java
Improve execution specs
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.castor / src / main / java / org / argeo / slc / castor / execution / PrimitiveFieldHandler.java
1 package org.argeo.slc.castor.execution;
2
3 import org.argeo.slc.core.execution.PrimitiveSpecAttribute;
4 import org.argeo.slc.core.execution.PrimitiveValue;
5 import org.exolab.castor.mapping.AbstractFieldHandler;
6
7 public class PrimitiveFieldHandler extends AbstractFieldHandler {
8
9 @Override
10 public Object getValue(Object object) throws IllegalStateException {
11 if (object == null)
12 return null;
13
14 Object value = null;
15 if (object instanceof PrimitiveSpecAttribute)
16 value = ((PrimitiveSpecAttribute) object).getValue();
17 else if (object instanceof PrimitiveValue)
18 value = ((PrimitiveValue) object).getValue();
19 else
20 throw new IllegalStateException("Unkown type " + object.getClass());
21
22 return value != null ? value.toString() : null;
23 }
24
25 @Override
26 public Object newInstance(Object parent, Object[] args)
27 throws IllegalStateException {
28 // TODO Auto-generated method stub
29 return null;
30 }
31
32 @Override
33 public Object newInstance(Object parent) throws IllegalStateException {
34 // TODO Auto-generated method stub
35 return null;
36 }
37
38 @Override
39 public void resetValue(Object object) throws IllegalStateException,
40 IllegalArgumentException {
41 // TODO Auto-generated method stub
42
43 }
44
45 @Override
46 public void setValue(Object object, Object value)
47 throws IllegalStateException, IllegalArgumentException {
48 // TODO: could probably be more generic
49
50 PrimitiveSpecAttribute attr = (PrimitiveSpecAttribute) object;
51 String type = attr.getType();
52 String str = value.toString();
53
54 // FIXME: generalize
55 if (object instanceof PrimitiveSpecAttribute)
56 ((PrimitiveSpecAttribute) object).setValue(convert(type, str));
57 else if (object instanceof PrimitiveValue)
58 ((PrimitiveValue) object).setValue(convert(type, str));
59 else
60 throw new IllegalStateException("Unkown type " + object.getClass());
61 }
62
63 protected Object convert(String type, String str) {
64 if (PrimitiveSpecAttribute.TYPE_STRING.equals(type)) {
65 return str;
66 } else if (PrimitiveSpecAttribute.TYPE_INTEGER.equals(type)) {
67 return (Integer.parseInt(str));
68 } else if (PrimitiveSpecAttribute.TYPE_LONG.equals(type)) {
69 return (Long.parseLong(str));
70 } else if (PrimitiveSpecAttribute.TYPE_FLOAT.equals(type)) {
71 return (Float.parseFloat(str));
72 } else if (PrimitiveSpecAttribute.TYPE_DOUBLE.equals(type)) {
73 return (Double.parseDouble(str));
74 } else if (PrimitiveSpecAttribute.TYPE_BOOLEAN.equals(type)) {
75 return (Boolean.parseBoolean(str));
76 } else {
77 return str;
78 }
79 }
80 }