]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/annotations/factories/CompoundRelatedGetSetValueRuleFactory.java
Fix binding instance for CompoundRelatedGetValue method.
[simantics/platform.git] / bundles / org.simantics.objmap2 / src / org / simantics / objmap / graph / annotations / factories / CompoundRelatedGetSetValueRuleFactory.java
index ab5b1c7a9f5943c5f2e180cd6ab9eaba97a16cb0..b98961154ca4cddec50b5a2ddd8efbcc62a1f17a 100644 (file)
@@ -14,10 +14,12 @@ package org.simantics.objmap.graph.annotations.factories;
 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;
@@ -43,6 +45,8 @@ public class CompoundRelatedGetSetValueRuleFactory<Range> implements IGetSetRule
                
 //             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());
@@ -59,7 +63,8 @@ public class CompoundRelatedGetSetValueRuleFactory<Range> implements IGetSetRule
 //        }
                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);
        }
        
@@ -69,42 +74,5 @@ public class CompoundRelatedGetSetValueRuleFactory<Range> implements IGetSetRule
                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;
-        }
-    }
 
 }