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
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.mapping.constraint.instructions;
\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
21 public class TripletInstruction extends Instruction3 {
\r
23 public TripletInstruction(int variable0, int variable1, int variable2) {
\r
24 super(variable0, variable1, variable2);
\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
35 return new IContextualModification() {
\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
43 System.out.println("claim(" +
\r
44 NameUtils.getSafeName(g, r0) + ", " +
\r
45 NameUtils.getSafeName(g, r1) + ", " +
\r
46 NameUtils.getSafeName(g, r2) + ")"
\r
49 g.claim(r0, r1, r2);
\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
64 System.out.println("@ claim(" +
\r
65 NameUtils.getSafeName(g, r0) + ", " +
\r
66 NameUtils.getSafeName(g, r1) + ", " +
\r
67 NameUtils.getSafeName(g, r2) + ")");
\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
75 // ITask task = ThreadLogger.getInstance().begin("g");
\r
77 g.claim(r0, r1, r2);
\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
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
95 System.out.println("deny(" +
\r
96 NameUtils.getSafeName(g, r0) + ", " +
\r
97 NameUtils.getSafeName(g, r1) + ", " +
\r
98 NameUtils.getSafeName(g, r2) + ")"
\r
101 g.denyStatement(r0, r1, r2);
\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
114 System.out.println("deny(" +
\r
115 NameUtils.getSafeName(g, r0) + ", " +
\r
116 NameUtils.getSafeName(g, r1) + ", " +
\r
117 NameUtils.getSafeName(g, r2) + ")");
\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
126 g.denyStatement(r0, r1, r2);
\r
130 public Object next(ReadGraph g, Object[] bindings, Object continuation) throws DatabaseException {
\r
131 return IInstruction.FAILURE;
\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
140 System.out.print("hasStatement(" +
\r
141 NameUtils.getSafeName(g, r0) + ", " +
\r
142 NameUtils.getSafeName(g, r1) + ", " +
\r
143 NameUtils.getSafeName(g, r2) + ")");
\r
145 if(g.hasStatement(r0, r1, r2)) {
\r
147 System.out.println(" -> true");
\r
152 System.out.println(" -> false");
\r
153 return IInstruction.FAILURE;
\r
158 public void toString(StringBuilder b, int indent) {
\r
160 b.append(variable0);
\r
162 b.append(variable1);
\r
164 b.append(variable2);
\r