]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.objmap2/src/org/simantics/objmap/graph/schema/MappingSchemas.java
OrderedSet support (graph mappings)
[simantics/3d.git] / org.simantics.objmap2 / src / org / simantics / objmap / graph / schema / MappingSchemas.java
index 0007d2bae54cac80b7f356a1538b78dc8daa070b..b863fbadca0d1b2924433edef63266abfa632b8c 100644 (file)
@@ -28,6 +28,8 @@ import org.simantics.objmap.graph.annotations.HasCollectionAdder;
 import org.simantics.objmap.graph.annotations.HasCollectionRemover;\r
 import org.simantics.objmap.graph.annotations.HasSetter;\r
 import org.simantics.objmap.graph.annotations.OptionalRelatedElements;\r
+import org.simantics.objmap.graph.annotations.OrderedElementsGet;\r
+import org.simantics.objmap.graph.annotations.OrderedSetType;\r
 import org.simantics.objmap.graph.annotations.RelatedElements;\r
 import org.simantics.objmap.graph.annotations.RelatedElementsGet;\r
 import org.simantics.objmap.graph.annotations.RelatedGetObj;\r
@@ -37,6 +39,7 @@ import org.simantics.objmap.graph.annotations.RelatedValue;
 import org.simantics.objmap.graph.annotations.UpdateMethod;\r
 import org.simantics.objmap.graph.annotations.factories.CompoundRelatedGetSetValueRuleFactory;\r
 import org.simantics.objmap.graph.annotations.factories.OptionalRelatedElementsRuleFactory;\r
+import org.simantics.objmap.graph.annotations.factories.OrderedElementsRuleFactory;\r
 import org.simantics.objmap.graph.annotations.factories.RelatedElementsRuleFactory;\r
 import org.simantics.objmap.graph.annotations.factories.RelatedElementsRuleFactory2;\r
 import org.simantics.objmap.graph.annotations.factories.RelatedGetSetObjRuleFactory;\r
@@ -80,6 +83,13 @@ public class MappingSchemas {
                    \r
                    return new DynamicSimpleLinkType<Object>(g.getResource(dynamicType.value()), clazz, rules);\r
            }\r
+           OrderedSetType orderedSetType = clazz.getAnnotation(OrderedSetType.class);\r
+           if (orderedSetType != null) {\r
+               ArrayList<IBidirectionalMappingRule<Resource, Object>> rules = new ArrayList<IBidirectionalMappingRule<Resource, Object>>();\r
+                   collectRulesFromAnnotations(g, clazz, rules);\r
+                   \r
+                   return new OrderedSetSimpleLinkType<Object>(g.getResource(orderedSetType.value()), clazz, rules);\r
+           }\r
            throw new IllegalArgumentException("Class " + clazz.toString() + " does not contain annotations.");\r
        }\r
        \r
@@ -228,6 +238,8 @@ public class MappingSchemas {
        public static ICollectionRuleFactory<Resource,Object> createCollectionRuleFactory(ReadGraph g, Annotation annotation, Method getter) {\r
                if (annotation.annotationType().equals(RelatedElementsGet.class))\r
                        return new RelatedElementsRuleFactory2<Object>();\r
+               if (annotation.annotationType().equals(OrderedElementsGet.class))\r
+                       return new OrderedElementsRuleFactory<Object>();\r
                return null;\r
        }\r
        \r