]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.mapping/src/org/simantics/mapping/rule/instructions/IfRuleInstruction.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.mapping / src / org / simantics / mapping / rule / instructions / IfRuleInstruction.java
index c5b30700f970031dda76eb2736635fdd81ac5f76..a5b3a2aba45ec2835252bcb389ead7e75f51267c 100644 (file)
-/*******************************************************************************\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.mapping.rule.instructions;\r
-\r
-import gnu.trove.map.hash.TIntIntHashMap;\r
-import gnu.trove.set.hash.TIntHashSet;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.WriteGraph;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.layer0.utils.triggers.IModification;\r
-import org.simantics.mapping.constraint.instructions.IInstruction;\r
-\r
-public class IfRuleInstruction implements IRuleInstruction {\r
-       IInstruction condition;\r
-       IRuleInstruction rule;\r
-       IRuleInstruction elseRule;      \r
-       \r
-       public IfRuleInstruction(IInstruction condition, IRuleInstruction rule, IRuleInstruction elseRule) {\r
-               this.condition = condition;\r
-               this.rule = rule;\r
-               this.elseRule = elseRule;\r
-       }\r
-       \r
-       public IfRuleInstruction(IInstruction condition, IRuleInstruction rule) {\r
-               this(condition, rule, null);\r
-       }       \r
-       \r
-       @Override\r
-       public IModification execute(ReadGraph g, final Object[] bindings) throws DatabaseException {\r
-               if(DEBUG)\r
-                       System.out.println("IfRuleInstruction: condition");\r
-               Object cont = condition.query(g, bindings);\r
-               if(cont == IInstruction.FAILURE) {\r
-                       if(DEBUG)\r
-                         System.out.println("IfRuleInstruction: else");\r
-                       if(elseRule!=null)\r
-                               return elseRule.execute(g, bindings);\r
-                       else\r
-                               return null;\r
-               }\r
-               do {\r
-                       if(DEBUG)\r
-                               System.out.println("IfRuleInstruction: modification");\r
-                       final IModification modi = rule.execute(g, bindings);\r
-                       if(modi != null) {\r
-                               if(cont==null)\r
-                                       return modi;\r
-                               final Object curCont = condition.next(g, bindings, cont);\r
-                               if(curCont==IInstruction.FAILURE)\r
-                                       return modi;\r
-                               return new IModification() {\r
-                                       @Override\r
-                                       public void perform(WriteGraph g) throws DatabaseException {\r
-                                               modi.perform(g);\r
-                                               Object cont = curCont;\r
-                                               do {\r
-                                                       rule.doExecute(g, bindings);\r
-                                                       if(cont==null)\r
-                                                               break;\r
-                                                       cont = condition.next(g, bindings, cont);\r
-                                               } while(cont != IInstruction.FAILURE);\r
-                                       }                               \r
-                               };      \r
-                       }\r
-                       if(cont==null)\r
-                               break;\r
-                       cont = condition.next(g, bindings, cont);\r
-               } while(cont != IInstruction.FAILURE);\r
-               return null;\r
-       }\r
-       \r
-       @Override\r
-       public void doExecute(WriteGraph g, Object[] bindings) throws DatabaseException {\r
-               Object cont = condition.query(g, bindings);\r
-               if(cont == IInstruction.FAILURE) {\r
-                       if(elseRule!=null) \r
-                               elseRule.doExecute(g, bindings);\r
-                       return;\r
-               }\r
-               do {\r
-                       rule.doExecute(g, bindings);\r
-                       if(cont==null)\r
-                               break;\r
-                       cont = condition.next(g, bindings, cont);\r
-               } while(cont != IInstruction.FAILURE);\r
-       }\r
-       \r
-       @Override\r
-       public void collectVariables(TIntHashSet reads, TIntHashSet writes) {\r
-               condition.collectVariables(reads, writes);\r
-               rule.collectVariables(reads, writes);\r
-               if(elseRule != null)\r
-                       elseRule.collectVariables(reads, writes);\r
-       }\r
-\r
-       @Override\r
-       public void mapVariables(TIntIntHashMap map) {\r
-               condition.mapVariables(map);\r
-               rule.mapVariables(map);\r
-               if(elseRule != null)\r
-                       elseRule.mapVariables(map);\r
-       }\r
-\r
-       @Override\r
-       public void toString(StringBuilder b, int indent) {             \r
-               b.append("if   ");\r
-               condition.toString(b, indent+1);\r
-               \r
-               b.append('\n');         \r
-               for(int i=0;i<indent;++i)\r
-                       b.append(INDENTATION);\r
-               b.append("then ");\r
-               rule.toString(b, indent+1);             \r
-               \r
-               if(elseRule != null) {\r
-                       b.append('\n');\r
-                       for(int i=0;i<indent;++i)\r
-                               b.append(INDENTATION);\r
-                       b.append("else ");\r
-                       elseRule.toString(b, indent+1);\r
-               }\r
-       }\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.mapping.rule.instructions;
+
+import gnu.trove.map.hash.TIntIntHashMap;
+import gnu.trove.set.hash.TIntHashSet;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.layer0.utils.triggers.IModification;
+import org.simantics.mapping.constraint.instructions.IInstruction;
+
+public class IfRuleInstruction implements IRuleInstruction {
+       IInstruction condition;
+       IRuleInstruction rule;
+       IRuleInstruction elseRule;      
+       
+       public IfRuleInstruction(IInstruction condition, IRuleInstruction rule, IRuleInstruction elseRule) {
+               this.condition = condition;
+               this.rule = rule;
+               this.elseRule = elseRule;
+       }
+       
+       public IfRuleInstruction(IInstruction condition, IRuleInstruction rule) {
+               this(condition, rule, null);
+       }       
+       
+       @Override
+       public IModification execute(ReadGraph g, final Object[] bindings) throws DatabaseException {
+               if(DEBUG)
+                       System.out.println("IfRuleInstruction: condition");
+               Object cont = condition.query(g, bindings);
+               if(cont == IInstruction.FAILURE) {
+                       if(DEBUG)
+                         System.out.println("IfRuleInstruction: else");
+                       if(elseRule!=null)
+                               return elseRule.execute(g, bindings);
+                       else
+                               return null;
+               }
+               do {
+                       if(DEBUG)
+                               System.out.println("IfRuleInstruction: modification");
+                       final IModification modi = rule.execute(g, bindings);
+                       if(modi != null) {
+                               if(cont==null)
+                                       return modi;
+                               final Object curCont = condition.next(g, bindings, cont);
+                               if(curCont==IInstruction.FAILURE)
+                                       return modi;
+                               return new IModification() {
+                                       @Override
+                                       public void perform(WriteGraph g) throws DatabaseException {
+                                               modi.perform(g);
+                                               Object cont = curCont;
+                                               do {
+                                                       rule.doExecute(g, bindings);
+                                                       if(cont==null)
+                                                               break;
+                                                       cont = condition.next(g, bindings, cont);
+                                               } while(cont != IInstruction.FAILURE);
+                                       }                               
+                               };      
+                       }
+                       if(cont==null)
+                               break;
+                       cont = condition.next(g, bindings, cont);
+               } while(cont != IInstruction.FAILURE);
+               return null;
+       }
+       
+       @Override
+       public void doExecute(WriteGraph g, Object[] bindings) throws DatabaseException {
+               Object cont = condition.query(g, bindings);
+               if(cont == IInstruction.FAILURE) {
+                       if(elseRule!=null) 
+                               elseRule.doExecute(g, bindings);
+                       return;
+               }
+               do {
+                       rule.doExecute(g, bindings);
+                       if(cont==null)
+                               break;
+                       cont = condition.next(g, bindings, cont);
+               } while(cont != IInstruction.FAILURE);
+       }
+       
+       @Override
+       public void collectVariables(TIntHashSet reads, TIntHashSet writes) {
+               condition.collectVariables(reads, writes);
+               rule.collectVariables(reads, writes);
+               if(elseRule != null)
+                       elseRule.collectVariables(reads, writes);
+       }
+
+       @Override
+       public void mapVariables(TIntIntHashMap map) {
+               condition.mapVariables(map);
+               rule.mapVariables(map);
+               if(elseRule != null)
+                       elseRule.mapVariables(map);
+       }
+
+       @Override
+       public void toString(StringBuilder b, int indent) {             
+               b.append("if   ");
+               condition.toString(b, indent+1);
+               
+               b.append('\n');         
+               for(int i=0;i<indent;++i)
+                       b.append(INDENTATION);
+               b.append("then ");
+               rule.toString(b, indent+1);             
+               
+               if(elseRule != null) {
+                       b.append('\n');
+                       for(int i=0;i<indent;++i)
+                               b.append(INDENTATION);
+                       b.append("else ");
+                       elseRule.toString(b, indent+1);
+               }
+       }
+}