]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/MappingBase.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / mapping / MappingBase.java
diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/MappingBase.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/MappingBase.java
new file mode 100644 (file)
index 0000000..11b7e25
--- /dev/null
@@ -0,0 +1,205 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.modeling.mapping;\r
+\r
+import org.simantics.db.Resource;\r
+import org.simantics.layer0.utils.binaryPredicates.CompositePredicate;\r
+import org.simantics.layer0.utils.binaryPredicates.IBinaryPredicate;\r
+import org.simantics.layer0.utils.binaryPredicates.Relation;\r
+import org.simantics.layer0.utils.predicates.Conjunction;\r
+import org.simantics.layer0.utils.predicates.Disjunction;\r
+import org.simantics.layer0.utils.predicates.IUnaryPredicate;\r
+import org.simantics.layer0.utils.predicates.Negation;\r
+import org.simantics.layer0.utils.predicates.Type;\r
+import org.simantics.layer0.utils.triggers.Trigger;\r
+import org.simantics.mapping.constraint.instructions.AndInstruction;\r
+import org.simantics.mapping.constraint.instructions.BinaryPredicateInstruction;\r
+import org.simantics.mapping.constraint.instructions.BinaryPredicateObjectQuery;\r
+import org.simantics.mapping.constraint.instructions.BinaryPredicateSubjectQuery;\r
+import org.simantics.mapping.constraint.instructions.ExistsInstruction;\r
+import org.simantics.mapping.constraint.instructions.IInstruction;\r
+import org.simantics.mapping.constraint.instructions.NotInstruction;\r
+import org.simantics.mapping.constraint.instructions.OrInstruction;\r
+import org.simantics.mapping.constraint.instructions.TripletInstruction;\r
+import org.simantics.mapping.constraint.instructions.TripletObjectQuery;\r
+import org.simantics.mapping.constraint.instructions.TripletPredicateObjectQuery;\r
+import org.simantics.mapping.constraint.instructions.TripletSubjectPredicateQuery;\r
+import org.simantics.mapping.constraint.instructions.TypedBracketInstruction;\r
+import org.simantics.mapping.constraint.instructions.TypedBracketInstruction.CreationInstruction;\r
+import org.simantics.mapping.constraint.instructions.UnaryPredicateInstruction;\r
+import org.simantics.mapping.rule.instructions.AndRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.ClaimRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.DenyRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.IRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.IfRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.PrintRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.QueryRuleInstruction;\r
+import org.simantics.mapping.rule.instructions.UnlessRuleInstruction;\r
+\r
+public abstract class MappingBase extends Trigger {\r
+       \r
+       public static IInstruction bf(IBinaryPredicate predicate, int variable0, int variable1) {\r
+               return new BinaryPredicateObjectQuery(variable0, variable1, predicate);\r
+       }\r
+       \r
+       public static IInstruction fb(IBinaryPredicate predicate, int variable0, int variable1) {\r
+        return new BinaryPredicateSubjectQuery(variable0, variable1, predicate);\r
+    }\r
+       \r
+       public static IInstruction bf(Resource relation, int variable0, int variable1) {\r
+               return bf(new Relation(relation), variable0, variable1);\r
+       }\r
+       \r
+       public static IInstruction fb(Resource relation, int variable0, int variable1) {\r
+        return fb(new Relation(relation), variable0, variable1);\r
+    }\r
+       \r
+       public static IInstruction bb(IBinaryPredicate predicate, int variable0, int variable1) {\r
+               return new BinaryPredicateInstruction(variable0, variable1, predicate);\r
+       }\r
+       \r
+       public static IInstruction bb(Resource relation, int variable0, int variable1) {\r
+               return bb(new Relation(relation), variable0, variable1);\r
+       }\r
+       \r
+       public static IInstruction b(IUnaryPredicate predicate, int variable0) {\r
+               return new UnaryPredicateInstruction(variable0, predicate);\r
+       }\r
+       \r
+       public static IInstruction b(Resource type, int variable0) {\r
+               return b(new Type(type), variable0);\r
+       }\r
+       \r
+       public static IInstruction statement_ffb(int variable0, int variable1, int variable2) {\r
+               return new TripletSubjectPredicateQuery(variable0, variable1, variable2);\r
+       }\r
+       \r
+       public static IInstruction statement_ffb(int variable0, int variable1, int variable2, Resource baseRelation) {\r
+               return new TripletSubjectPredicateQuery(variable0, variable1, variable2, baseRelation);\r
+       }\r
+       \r
+       public static IInstruction statement_bff(int variable0, int variable1, int variable2) {\r
+               return new TripletPredicateObjectQuery(variable0, variable1, variable2);\r
+       }\r
+       \r
+       public static IInstruction statement_bbf(int variable0, int variable1, int variable2) {\r
+               return new TripletObjectQuery(variable0, variable1, variable2);\r
+       }\r
+       \r
+       public static IInstruction statement_bff(int variable0, int variable1, int variable2, Resource baseRelation) {\r
+               return new TripletPredicateObjectQuery(variable0, variable1, variable2, baseRelation);\r
+       }\r
+       \r
+       public static IInstruction statement(int variable0, int variable1, int variable2) {\r
+               return new TripletInstruction(variable0, variable1, variable2);\r
+       }\r
+       \r
+       public static IInstruction exists(IInstruction constraint, int ... variables) {\r
+               return new ExistsInstruction(constraint, variables);\r
+       }\r
+       \r
+       public static IInstruction exists(int ... variables) {\r
+               return new ExistsInstruction(and(), variables);\r
+       }\r
+       \r
+       public static IInstruction exists(IInstruction constraint, CreationInstruction ... instrs) {\r
+               return new TypedBracketInstruction(constraint, instrs);\r
+       }\r
+       \r
+       public static IInstruction and() {\r
+               return new AndInstruction();\r
+       }\r
+\r
+       public static IUnaryPredicate and(IUnaryPredicate ... predicates) {\r
+        return new Conjunction(predicates);\r
+    }  \r
+\r
+       public static IUnaryPredicate or(IUnaryPredicate ... predicates) {\r
+        return new Disjunction(predicates);\r
+    }  \r
+\r
+       public static IUnaryPredicate not(IUnaryPredicate predicate) {\r
+        return new Negation(predicate);\r
+    }  \r
+       \r
+       public static IUnaryPredicate implies(IUnaryPredicate from, IUnaryPredicate to) {\r
+               return or(not(from), to);\r
+       }\r
+\r
+       public static IInstruction and(IInstruction ... constraints) {\r
+               return new AndInstruction(constraints);\r
+       }\r
+       \r
+       public static IInstruction or(IInstruction ... constraints) {\r
+        return new OrInstruction(constraints);\r
+    }  \r
+       \r
+       public static IInstruction not(IInstruction constraint) {\r
+        return new NotInstruction(constraint);\r
+    }\r
+       \r
+       public static IRuleInstruction and(IRuleInstruction ... rules) {\r
+               return new AndRuleInstruction(rules);\r
+       }\r
+\r
+       public static IRuleInstruction claim(IInstruction constraint) {\r
+               return new ClaimRuleInstruction(constraint);\r
+       }\r
+       \r
+       public static IRuleInstruction claim(IInstruction ... constraints) {\r
+               return claim(and(constraints));\r
+       }\r
+       \r
+       public static IRuleInstruction claim(IInstruction constraint, IRuleInstruction continuation) {\r
+               return new ClaimRuleInstruction(constraint, continuation);\r
+       }\r
+       \r
+       public static IRuleInstruction deny(IInstruction constraint) {\r
+               return new DenyRuleInstruction(constraint);\r
+       }\r
+       \r
+       public static IRuleInstruction if_(IInstruction condition, IRuleInstruction then) {\r
+               return new IfRuleInstruction(condition, then);\r
+       }\r
+       \r
+       public static IRuleInstruction if_(IInstruction condition, IRuleInstruction then, IRuleInstruction else_) {\r
+               return new IfRuleInstruction(condition, then, else_);\r
+       }\r
+\r
+       public static IRuleInstruction unless(IInstruction condition, IRuleInstruction then) {\r
+               return new UnlessRuleInstruction(condition, then);\r
+       }\r
+       \r
+       public static IRuleInstruction query(IRuleInstruction rule) {\r
+               return new QueryRuleInstruction(rule);\r
+       }\r
+       \r
+       public static IRuleInstruction print(String text) {\r
+               return new PrintRuleInstruction(text);\r
+       }\r
+       \r
+       public static IBinaryPredicate compose(Resource a, Resource b) {\r
+               return new CompositePredicate(new Relation(a), new Relation(b)); \r
+       }\r
+       \r
+       public static IBinaryPredicate compose(Resource a, IBinaryPredicate b) {\r
+               return new CompositePredicate(new Relation(a), b); \r
+       }\r
+       \r
+       public static IBinaryPredicate compose(IBinaryPredicate a, Resource b) {\r
+               return new CompositePredicate(a, new Relation(b)); \r
+       }\r
+       \r
+       public static IBinaryPredicate compose(Resource a, Resource b, Resource c) {\r
+               return compose(compose(a, b), c);\r
+       }\r
+}\r