X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.objmap2%2Fsrc%2Forg%2Fsimantics%2Fobjmap%2Fstructural%2Fschema%2FMappingSchemas.java;h=3f9169ec9f569bdbb57b42a5d8804114066ad87d;hb=c2bc02ab23627234920e89e364c2b4b2e7657249;hp=758db0e029e53ca2608ae7bcecf9e8e5aef980d4;hpb=289aaab900078ef56efc8779e4b15830e472149e;p=simantics%2F3d.git diff --git a/org.simantics.objmap2/src/org/simantics/objmap/structural/schema/MappingSchemas.java b/org.simantics.objmap2/src/org/simantics/objmap/structural/schema/MappingSchemas.java index 758db0e0..3f9169ec 100644 --- a/org.simantics.objmap2/src/org/simantics/objmap/structural/schema/MappingSchemas.java +++ b/org.simantics.objmap2/src/org/simantics/objmap/structural/schema/MappingSchemas.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.Collection; import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.objmap.bidirectional.IBidirectionalMappingRule; import org.simantics.objmap.graph.annotations.GraphType; @@ -26,6 +25,7 @@ import org.simantics.objmap.graph.annotations.HasCollectionAdder; import org.simantics.objmap.graph.annotations.HasCollectionRemover; import org.simantics.objmap.graph.annotations.HasSetter; import org.simantics.objmap.graph.annotations.OptionalRelatedElements; +import org.simantics.objmap.graph.annotations.OrderedSetType; import org.simantics.objmap.graph.annotations.RelatedElements; import org.simantics.objmap.graph.annotations.RelatedElementsGet; import org.simantics.objmap.graph.annotations.RelatedGetObj; @@ -33,6 +33,18 @@ import org.simantics.objmap.graph.annotations.RelatedGetValue; import org.simantics.objmap.graph.annotations.RelatedOrderedSetElements; import org.simantics.objmap.graph.annotations.RelatedValue; import org.simantics.objmap.graph.annotations.UpdateMethod; +import org.simantics.objmap.graph.annotations.meta.IsClassRule; +import org.simantics.objmap.graph.annotations.meta.IsCollectionRule; +import org.simantics.objmap.graph.annotations.meta.IsFieldRule; +import org.simantics.objmap.graph.annotations.meta.IsGetSetRule; +import org.simantics.objmap.graph.annotations.meta.IsMethodRule; +import org.simantics.objmap.graph.rules.factory.IClassRuleFactory; +import org.simantics.objmap.graph.rules.factory.ICollectionRuleFactory; +import org.simantics.objmap.graph.rules.factory.IFieldRuleFactory; +import org.simantics.objmap.graph.rules.factory.IGetSetRuleFactory; +import org.simantics.objmap.graph.rules.factory.IMethodRuleFactory; +import org.simantics.objmap.structural.IStructuralObject; +import org.simantics.objmap.structural.StructuralResource; import org.simantics.objmap.structural.annotations.StructuralRelatedElementsGet; import org.simantics.objmap.structural.annotations.StructuralRelatedGetObj; import org.simantics.objmap.structural.annotations.TypeRelatedElementsGet; @@ -51,18 +63,6 @@ import org.simantics.objmap.structural.annotations.factories.TypeRelatedElements import org.simantics.objmap.structural.annotations.factories.TypeRelatedGetSetObjRuleFactory; import org.simantics.objmap.structural.annotations.factories.TypeRelatedGetSetValueRuleFactory; import org.simantics.objmap.structural.annotations.factories.UpdateMethodFactory; -import org.simantics.objmap.graph.annotations.meta.IsClassRule; -import org.simantics.objmap.graph.annotations.meta.IsCollectionRule; -import org.simantics.objmap.graph.annotations.meta.IsFieldRule; -import org.simantics.objmap.graph.annotations.meta.IsGetSetRule; -import org.simantics.objmap.graph.annotations.meta.IsMethodRule; -import org.simantics.objmap.graph.rules.factory.IClassRuleFactory; -import org.simantics.objmap.graph.rules.factory.ICollectionRuleFactory; -import org.simantics.objmap.graph.rules.factory.IFieldRuleFactory; -import org.simantics.objmap.graph.rules.factory.IGetSetRuleFactory; -import org.simantics.objmap.graph.rules.factory.IMethodRuleFactory; -import org.simantics.objmap.structural.IStructuralObject; -import org.simantics.objmap.structural.StructuralResource; public class MappingSchemas { @@ -76,12 +76,20 @@ public class MappingSchemas { public static SimpleLinkType fromAnnotations(ReadGraph g, Class clazz) throws DatabaseException, InstantiationException, IllegalAccessException { GraphType graphType = clazz.getAnnotation(GraphType.class); - ArrayList> rules = new ArrayList>(); - collectRulesFromAnnotations(g, clazz, rules); - - return new SimpleLinkType( - g.getResource(graphType.value()), - clazz, rules); + if (graphType != null) { + ArrayList> rules = new ArrayList>(); + collectRulesFromAnnotations(g, clazz, rules); + + return new SimpleLinkType(g.getResource(graphType.value()), clazz, rules); + } + OrderedSetType orderedSetType = clazz.getAnnotation(OrderedSetType.class); + if (orderedSetType != null) { + ArrayList> rules = new ArrayList>(); + collectRulesFromAnnotations(g, clazz, rules); + + return new OrderedSetSimpleLinkType(g.getResource(orderedSetType.value()), clazz, rules); + } + throw new IllegalArgumentException("Class " + clazz.toString() + " does not contain annotations."); } public static void collectRulesFromAnnotations(ReadGraph g, Class clazz, Collection> rules) throws DatabaseException, InstantiationException, IllegalAccessException {