+/*
+ * Copyright (C) 2007-2012 Mathieu Baudier
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.argeo.slc.castor.execution;
-import org.argeo.slc.core.execution.PrimitiveSpecAttribute;
-import org.argeo.slc.core.execution.PrimitiveValue;
+import org.argeo.slc.core.execution.PrimitiveAccessor;
+import org.argeo.slc.core.execution.PrimitiveUtils;
import org.exolab.castor.mapping.AbstractFieldHandler;
public class PrimitiveFieldHandler extends AbstractFieldHandler {
if (object == null)
return null;
- Object value = null;
- if (object instanceof PrimitiveSpecAttribute)
- value = ((PrimitiveSpecAttribute) object).getValue();
- else if (object instanceof PrimitiveValue)
- value = ((PrimitiveValue) object).getValue();
- else
- throw new IllegalStateException("Unkown type " + object.getClass());
-
+ Object value = ((PrimitiveAccessor) object).getValue();
return value != null ? value.toString() : null;
}
@Override
public Object newInstance(Object parent, Object[] args)
throws IllegalStateException {
- // TODO Auto-generated method stub
return null;
}
@Override
public Object newInstance(Object parent) throws IllegalStateException {
- // TODO Auto-generated method stub
return null;
}
@Override
public void resetValue(Object object) throws IllegalStateException,
IllegalArgumentException {
- // TODO Auto-generated method stub
-
}
@Override
public void setValue(Object object, Object value)
throws IllegalStateException, IllegalArgumentException {
- // TODO: could probably be more generic
-
- PrimitiveSpecAttribute attr = (PrimitiveSpecAttribute) object;
- String type = attr.getType();
+ PrimitiveAccessor primitiveAccessor = (PrimitiveAccessor) object;
+ String type = primitiveAccessor.getType();
String str = value.toString();
-
- // FIXME: generalize
- if (object instanceof PrimitiveSpecAttribute)
- ((PrimitiveSpecAttribute) object).setValue(convert(type, str));
- else if (object instanceof PrimitiveValue)
- ((PrimitiveValue) object).setValue(convert(type, str));
- else
- throw new IllegalStateException("Unkown type " + object.getClass());
+ primitiveAccessor.setValue(PrimitiveUtils.convert(type, str));
}
- protected Object convert(String type, String str) {
- if (PrimitiveSpecAttribute.TYPE_STRING.equals(type)) {
- return str;
- } else if (PrimitiveSpecAttribute.TYPE_INTEGER.equals(type)) {
- return (Integer.parseInt(str));
- } else if (PrimitiveSpecAttribute.TYPE_LONG.equals(type)) {
- return (Long.parseLong(str));
- } else if (PrimitiveSpecAttribute.TYPE_FLOAT.equals(type)) {
- return (Float.parseFloat(str));
- } else if (PrimitiveSpecAttribute.TYPE_DOUBLE.equals(type)) {
- return (Double.parseDouble(str));
- } else if (PrimitiveSpecAttribute.TYPE_BOOLEAN.equals(type)) {
- return (Boolean.parseBoolean(str));
- } else {
- return str;
- }
- }
}