1 package org.simantics.graph.compiler.internal.templates;
\r
3 import java.util.Collection;
\r
5 import org.simantics.graph.compiler.ExternalFileLoader;
\r
6 import org.simantics.graph.query.IGraph;
\r
7 import org.simantics.graph.query.Paths;
\r
8 import org.simantics.graph.store.GraphStore;
\r
9 import org.simantics.ltk.Problem;
\r
11 public enum OrderedSetTemplate implements ITemplate {
\r
16 public void apply(IGraph graph, GraphStore store,
\r
17 int[] parameters, ExternalFileLoader fileLoader, Collection<Problem> problems) {
\r
18 createList(graph.getPaths(), store, parameters);
\r
21 public static void createList(Paths paths, GraphStore store, int[] parameters) {
\r
22 int InverseOf = store.identities.createPathToId(paths.InverseOf);
\r
23 int SubrelationOf = store.identities.createPathToId(paths.SubrelationOf);
\r
24 int HasNext = store.identities.createPathToId(paths.HasNext);
\r
25 int HasPrevious = store.identities.createPathToId(paths.HasPrevious);
\r
27 int relation = parameters[0];
\r
28 store.statements.add(relation, SubrelationOf, HasNext);
\r
29 int inverse = store.identities.newResource();
\r
30 store.statements.add(inverse, SubrelationOf, HasPrevious);
\r
31 store.statements.add(relation, InverseOf, inverse);
\r
33 for(int i=1;i<parameters.length;++i)
\r
34 store.statements.add(parameters[i-1], relation, parameters[i]);
\r
35 store.statements.add(parameters[parameters.length-1], relation, relation);
\r