]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/MappingBase.java
Layer0Utils.addL0Identifier to prevent possible differentiation of code
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / mapping / MappingBase.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.modeling.mapping;
13
14 import org.simantics.db.Resource;
15 import org.simantics.layer0.utils.binaryPredicates.CompositePredicate;
16 import org.simantics.layer0.utils.binaryPredicates.IBinaryPredicate;
17 import org.simantics.layer0.utils.binaryPredicates.Relation;
18 import org.simantics.layer0.utils.predicates.Conjunction;
19 import org.simantics.layer0.utils.predicates.Disjunction;
20 import org.simantics.layer0.utils.predicates.IUnaryPredicate;
21 import org.simantics.layer0.utils.predicates.Negation;
22 import org.simantics.layer0.utils.predicates.Type;
23 import org.simantics.layer0.utils.triggers.Trigger;
24 import org.simantics.mapping.constraint.instructions.AndInstruction;
25 import org.simantics.mapping.constraint.instructions.BinaryPredicateInstruction;
26 import org.simantics.mapping.constraint.instructions.BinaryPredicateObjectQuery;
27 import org.simantics.mapping.constraint.instructions.BinaryPredicateSubjectQuery;
28 import org.simantics.mapping.constraint.instructions.ExistsInstruction;
29 import org.simantics.mapping.constraint.instructions.IInstruction;
30 import org.simantics.mapping.constraint.instructions.NotInstruction;
31 import org.simantics.mapping.constraint.instructions.OrInstruction;
32 import org.simantics.mapping.constraint.instructions.TripletInstruction;
33 import org.simantics.mapping.constraint.instructions.TripletObjectQuery;
34 import org.simantics.mapping.constraint.instructions.TripletPredicateObjectQuery;
35 import org.simantics.mapping.constraint.instructions.TripletSubjectPredicateQuery;
36 import org.simantics.mapping.constraint.instructions.TypedBracketInstruction;
37 import org.simantics.mapping.constraint.instructions.TypedBracketInstruction.CreationInstruction;
38 import org.simantics.mapping.constraint.instructions.UnaryPredicateInstruction;
39 import org.simantics.mapping.rule.instructions.AndRuleInstruction;
40 import org.simantics.mapping.rule.instructions.ClaimRuleInstruction;
41 import org.simantics.mapping.rule.instructions.DenyRuleInstruction;
42 import org.simantics.mapping.rule.instructions.IRuleInstruction;
43 import org.simantics.mapping.rule.instructions.IfRuleInstruction;
44 import org.simantics.mapping.rule.instructions.PrintRuleInstruction;
45 import org.simantics.mapping.rule.instructions.QueryRuleInstruction;
46 import org.simantics.mapping.rule.instructions.UnlessRuleInstruction;
47
48 public abstract class MappingBase extends Trigger {
49         
50         public static IInstruction bf(IBinaryPredicate predicate, int variable0, int variable1) {
51                 return new BinaryPredicateObjectQuery(variable0, variable1, predicate);
52         }
53         
54         public static IInstruction fb(IBinaryPredicate predicate, int variable0, int variable1) {
55         return new BinaryPredicateSubjectQuery(variable0, variable1, predicate);
56     }
57         
58         public static IInstruction bf(Resource relation, int variable0, int variable1) {
59                 return bf(new Relation(relation), variable0, variable1);
60         }
61         
62         public static IInstruction fb(Resource relation, int variable0, int variable1) {
63         return fb(new Relation(relation), variable0, variable1);
64     }
65         
66         public static IInstruction bb(IBinaryPredicate predicate, int variable0, int variable1) {
67                 return new BinaryPredicateInstruction(variable0, variable1, predicate);
68         }
69         
70         public static IInstruction bb(Resource relation, int variable0, int variable1) {
71                 return bb(new Relation(relation), variable0, variable1);
72         }
73         
74         public static IInstruction b(IUnaryPredicate predicate, int variable0) {
75                 return new UnaryPredicateInstruction(variable0, predicate);
76         }
77         
78         public static IInstruction b(Resource type, int variable0) {
79                 return b(new Type(type), variable0);
80         }
81         
82         public static IInstruction statement_ffb(int variable0, int variable1, int variable2) {
83                 return new TripletSubjectPredicateQuery(variable0, variable1, variable2);
84         }
85         
86         public static IInstruction statement_ffb(int variable0, int variable1, int variable2, Resource baseRelation) {
87                 return new TripletSubjectPredicateQuery(variable0, variable1, variable2, baseRelation);
88         }
89         
90         public static IInstruction statement_bff(int variable0, int variable1, int variable2) {
91                 return new TripletPredicateObjectQuery(variable0, variable1, variable2);
92         }
93         
94         public static IInstruction statement_bbf(int variable0, int variable1, int variable2) {
95                 return new TripletObjectQuery(variable0, variable1, variable2);
96         }
97         
98         public static IInstruction statement_bff(int variable0, int variable1, int variable2, Resource baseRelation) {
99                 return new TripletPredicateObjectQuery(variable0, variable1, variable2, baseRelation);
100         }
101         
102         public static IInstruction statement(int variable0, int variable1, int variable2) {
103                 return new TripletInstruction(variable0, variable1, variable2);
104         }
105         
106         public static IInstruction exists(IInstruction constraint, int ... variables) {
107                 return new ExistsInstruction(constraint, variables);
108         }
109         
110         public static IInstruction exists(int ... variables) {
111                 return new ExistsInstruction(and(), variables);
112         }
113         
114         public static IInstruction exists(IInstruction constraint, CreationInstruction ... instrs) {
115                 return new TypedBracketInstruction(constraint, instrs);
116         }
117         
118         public static IInstruction and() {
119                 return new AndInstruction();
120         }
121
122         public static IUnaryPredicate and(IUnaryPredicate ... predicates) {
123         return new Conjunction(predicates);
124     }   
125
126         public static IUnaryPredicate or(IUnaryPredicate ... predicates) {
127         return new Disjunction(predicates);
128     }   
129
130         public static IUnaryPredicate not(IUnaryPredicate predicate) {
131         return new Negation(predicate);
132     }   
133         
134         public static IUnaryPredicate implies(IUnaryPredicate from, IUnaryPredicate to) {
135                 return or(not(from), to);
136         }
137
138         public static IInstruction and(IInstruction ... constraints) {
139                 return new AndInstruction(constraints);
140         }
141         
142         public static IInstruction or(IInstruction ... constraints) {
143         return new OrInstruction(constraints);
144     }   
145         
146         public static IInstruction not(IInstruction constraint) {
147         return new NotInstruction(constraint);
148     }
149         
150         public static IRuleInstruction and(IRuleInstruction ... rules) {
151                 return new AndRuleInstruction(rules);
152         }
153
154         public static IRuleInstruction claim(IInstruction constraint) {
155                 return new ClaimRuleInstruction(constraint);
156         }
157         
158         public static IRuleInstruction claim(IInstruction ... constraints) {
159                 return claim(and(constraints));
160         }
161         
162         public static IRuleInstruction claim(IInstruction constraint, IRuleInstruction continuation) {
163                 return new ClaimRuleInstruction(constraint, continuation);
164         }
165         
166         public static IRuleInstruction deny(IInstruction constraint) {
167                 return new DenyRuleInstruction(constraint);
168         }
169         
170         public static IRuleInstruction if_(IInstruction condition, IRuleInstruction then) {
171                 return new IfRuleInstruction(condition, then);
172         }
173         
174         public static IRuleInstruction if_(IInstruction condition, IRuleInstruction then, IRuleInstruction else_) {
175                 return new IfRuleInstruction(condition, then, else_);
176         }
177
178         public static IRuleInstruction unless(IInstruction condition, IRuleInstruction then) {
179                 return new UnlessRuleInstruction(condition, then);
180         }
181         
182         public static IRuleInstruction query(IRuleInstruction rule) {
183                 return new QueryRuleInstruction(rule);
184         }
185         
186         public static IRuleInstruction print(String text) {
187                 return new PrintRuleInstruction(text);
188         }
189         
190         public static IBinaryPredicate compose(Resource a, Resource b) {
191                 return new CompositePredicate(new Relation(a), new Relation(b)); 
192         }
193         
194         public static IBinaryPredicate compose(Resource a, IBinaryPredicate b) {
195                 return new CompositePredicate(new Relation(a), b); 
196         }
197         
198         public static IBinaryPredicate compose(IBinaryPredicate a, Resource b) {
199                 return new CompositePredicate(a, new Relation(b)); 
200         }
201         
202         public static IBinaryPredicate compose(Resource a, Resource b, Resource c) {
203                 return compose(compose(a, b), c);
204         }
205 }