]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.mapping/src/org/simantics/mapping/constraint/instructions/TripletInstruction.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.mapping / src / org / simantics / mapping / constraint / instructions / TripletInstruction.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.mapping.constraint.instructions;\r
13 \r
14 import org.simantics.db.ReadGraph;\r
15 import org.simantics.db.Resource;\r
16 import org.simantics.db.WriteGraph;\r
17 import org.simantics.db.common.utils.NameUtils;\r
18 import org.simantics.db.exception.DatabaseException;\r
19 import org.simantics.mapping.IContextualModification;\r
20 \r
21 public class TripletInstruction extends Instruction3 {\r
22         \r
23         public TripletInstruction(int variable0, int variable1, int variable2) {\r
24                 super(variable0, variable1, variable2);\r
25         }\r
26 \r
27         @Override\r
28         public IContextualModification claim(ReadGraph g, Object[] bindings) throws DatabaseException {\r
29                 Resource r0 = (Resource)bindings[variable0];\r
30                 Resource r1 = (Resource)bindings[variable1];\r
31                 Resource r2 = (Resource)bindings[variable2];\r
32 //              ITask task = ThreadLogger.getInstance().begin("g");\r
33                 if(!g.hasStatement(r0, r1, r2)) {\r
34 //                      task.finish();          \r
35                         return new IContextualModification() {\r
36 \r
37                                 @Override\r
38                                 public void perform(WriteGraph g, Object[] bindings) throws DatabaseException {\r
39                                         Resource r0 = (Resource)bindings[variable0];\r
40                                         Resource r1 = (Resource)bindings[variable1];\r
41                                         Resource r2 = (Resource)bindings[variable2];\r
42                                         if(DEBUG_MODI)\r
43                         System.out.println("claim(" +\r
44                                 NameUtils.getSafeName(g, r0) + ", " +\r
45                                 NameUtils.getSafeName(g, r1) + ", " +\r
46                                 NameUtils.getSafeName(g, r2) + ")"\r
47                                 );\r
48                                         if(!DISABLE_MODI)\r
49                                                 g.claim(r0, r1, r2);\r
50                                 }\r
51                         \r
52                         };\r
53                 }\r
54 //              task.finish();\r
55                 return null;\r
56         }\r
57         \r
58         @Override\r
59         public void doClaim(WriteGraph g, Object[] bindings) throws DatabaseException {\r
60                 Resource r0 = (Resource)bindings[variable0];\r
61                 Resource r1 = (Resource)bindings[variable1];\r
62                 Resource r2 = (Resource)bindings[variable2];\r
63                 if(DEBUG) {\r
64                 System.out.println("@ claim(" +\r
65                     NameUtils.getSafeName(g, r0) + ", " +\r
66                     NameUtils.getSafeName(g, r1) + ", " +\r
67                     NameUtils.getSafeName(g, r2) + ")");\r
68                 }\r
69                 if(DEBUG_MODI)\r
70             System.out.println("claim(" +\r
71                     NameUtils.getSafeName(g, r0) + ", " +\r
72                     NameUtils.getSafeName(g, r1) + ", " +\r
73                     NameUtils.getSafeName(g, r2) + ")"\r
74                     );\r
75 //              ITask task = ThreadLogger.getInstance().begin("g");     \r
76                 if(!DISABLE_MODI)\r
77                         g.claim(r0, r1, r2);\r
78 //              task.finish();\r
79         }\r
80 \r
81         @Override\r
82         public IContextualModification deny(ReadGraph g, Object[] bindings) throws DatabaseException {\r
83                 Resource r0 = (Resource)bindings[variable0];\r
84                 Resource r1 = (Resource)bindings[variable1];\r
85                 Resource r2 = (Resource)bindings[variable2];\r
86                 if(g.hasStatement(r0, r1, r2))\r
87                         return new IContextualModification() {\r
88 \r
89                                 @Override\r
90                                 public void perform(WriteGraph g, Object[] bindings) throws DatabaseException {\r
91                                         Resource r0 = (Resource)bindings[variable0];\r
92                                         Resource r1 = (Resource)bindings[variable1];\r
93                                         Resource r2 = (Resource)bindings[variable2];\r
94                                         if(DEBUG_MODI)\r
95                         System.out.println("deny(" +\r
96                                 NameUtils.getSafeName(g, r0) + ", " +\r
97                                 NameUtils.getSafeName(g, r1) + ", " +\r
98                                 NameUtils.getSafeName(g, r2) + ")"\r
99                                 );\r
100                                         if(!DISABLE_MODI)\r
101                                                 g.denyStatement(r0, r1, r2);\r
102                                 }\r
103                         \r
104                         };\r
105                 return null;\r
106         }\r
107         \r
108         @Override\r
109         public void doDeny(WriteGraph g, Object[] bindings) throws DatabaseException {\r
110                 Resource r0 = (Resource)bindings[variable0];\r
111                 Resource r1 = (Resource)bindings[variable1];\r
112                 Resource r2 = (Resource)bindings[variable2];\r
113                 if(DEBUG) {\r
114                 System.out.println("deny(" +\r
115                         NameUtils.getSafeName(g, r0) + ", " +\r
116                         NameUtils.getSafeName(g, r1) + ", " +\r
117                         NameUtils.getSafeName(g, r2) + ")");\r
118                 }\r
119                 if(DEBUG_MODI)\r
120             System.out.println("deny(" +\r
121                     NameUtils.getSafeName(g, r0) + ", " +\r
122                     NameUtils.getSafeName(g, r1) + ", " +\r
123                     NameUtils.getSafeName(g, r2) + ")"\r
124                     );\r
125                 if(!DISABLE_MODI)\r
126                         g.denyStatement(r0, r1, r2);            \r
127         }\r
128 \r
129         @Override\r
130         public Object next(ReadGraph g, Object[] bindings, Object continuation) throws DatabaseException {\r
131                 return IInstruction.FAILURE;\r
132         }\r
133 \r
134         @Override\r
135         public Object query(ReadGraph g, Object[] bindings) throws DatabaseException {\r
136                 Resource r0 = (Resource)bindings[variable0];\r
137                 Resource r1 = (Resource)bindings[variable1];\r
138                 Resource r2 = (Resource)bindings[variable2];\r
139                 if(DEBUG) {\r
140                 System.out.print("hasStatement(" +\r
141                     NameUtils.getSafeName(g, r0) + ", " +\r
142                     NameUtils.getSafeName(g, r1) + ", " +\r
143                     NameUtils.getSafeName(g, r2) + ")");\r
144                 }\r
145                 if(g.hasStatement(r0, r1, r2)) {\r
146                     if(DEBUG)\r
147                         System.out.println(" -> true");\r
148                         return null;\r
149                 }\r
150                 else {\r
151                     if(DEBUG)\r
152                         System.out.println(" -> false");\r
153                         return IInstruction.FAILURE;\r
154                 }\r
155         }\r
156 \r
157         @Override\r
158         public void toString(StringBuilder b, int indent) {\r
159                 b.append('<');\r
160                 b.append(variable0);\r
161                 b.append(',');\r
162                 b.append(variable1);\r
163                 b.append(',');\r
164                 b.append(variable2);\r
165                 b.append('>');\r
166         }\r
167 }\r