import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import org.simantics.databoard.binding.Binding;
import org.simantics.db.ReadGraph;
import org.simantics.db.Resource;
import org.simantics.db.exception.DatabaseException;
-import org.simantics.layer0.Layer0;
+import org.simantics.db.layer0.request.PropertyInfo;
+import org.simantics.db.layer0.request.PropertyInfoRequest;
import org.simantics.objmap.bidirectional.IBidirectionalMappingRule;
import org.simantics.objmap.graph.annotations.CompoundRelatedGetValue;
import org.simantics.objmap.graph.annotations.CompoundRelatedSetValue;
// Class<? extends ValueAdapter> adapterClass = getterAnn.adapter();
IRangeAccessor<Range,Object> rangeAccessor = new CompoundGetSetValueAccessor<Range,Object>(getter, setter);
+ PropertyInfo propInfo = g.syncRequest(new PropertyInfoRequest(g.getResource(getterAnn.valRelation())));
+ Binding valueBinding = propInfo.defaultBinding;
// Resource valueType;
// if (adapterClass == IdentityAdapter.class) {
// valueType = dataTypeOfClass(g, getter.getReturnType());
// }
return new ValueRule<Resource,Range>(new CompoundValueAccessor(g.getResource(getterAnn.objRelation()),
g.getResource(getterAnn.objType()),
- g.getResource(getterAnn.valRelation())),
+ g.getResource(getterAnn.valRelation()),
+ valueBinding),
rangeAccessor);
}
CompoundRelatedSetValue setterAnn = (CompoundRelatedSetValue)annotation;
return getterAnn.objRelation().equals(setterAnn.value());
}
-
- public static Resource dataTypeOfClass(ReadGraph g, Class<?> clazz) {
- Layer0 b = Layer0.getInstance(g);
- if(clazz.equals(Double.class) || clazz.equals(double.class))
- return b.Double;
- else if(clazz.equals(String.class))
- return b.String;
- else if(clazz.equals(Integer.class) || clazz.equals(int.class))
- return b.Integer;
- else if(clazz.equals(Float.class) || clazz.equals(float.class))
- return b.Float;
- else if(clazz.equals(Boolean.class) || clazz.equals(boolean.class))
- return b.Boolean;
- else if(clazz.equals(Long.class) || clazz.equals(long.class))
- return b.Long;
- else if(clazz.equals(Byte.class) || clazz.equals(byte.class))
- return b.Byte;
-
- else if(clazz.equals(double[].class))
- return b.DoubleArray;
- else if(clazz.equals(int[].class))
- return b.IntegerArray;
- else if(clazz.equals(byte[].class))
- return b.ByteArray;
- else if(clazz.equals(float[].class))
- return b.FloatArray;
- else if(clazz.equals(boolean[].class))
- return b.BooleanArray;
- else if(clazz.equals(String[].class))
- return b.StringArray;
- else if(clazz.equals(long[].class))
- return b.LongArray;
- else {
- System.out.println("Couldn't find a data type for " + clazz);
- return null;
- }
- }
}