1 21 package org.apache.derby.impl.sql.compile; 22 23 import org.apache.derby.iapi.error.StandardException; 24 import org.apache.derby.iapi.sql.compile.Visitable; 25 import org.apache.derby.iapi.sql.compile.Visitor; 26 27 33 class SubstituteExpressionVisitor implements Visitor 34 { 35 private ValueNode source; 36 private ValueNode target; 37 private Class skipOverClass; 38 39 SubstituteExpressionVisitor( 40 ValueNode s, ValueNode t, Class skipThisClass) 41 { 42 source = s; 43 target = t; 44 skipOverClass = skipThisClass; 45 } 46 47 public Visitable visit(Visitable node) throws StandardException 48 { 49 if (!(node instanceof ValueNode)) 50 { 51 return node; 52 } 53 54 ValueNode nd = (ValueNode)node; 55 if (nd.isEquivalent(source)) 56 { 57 return target; 58 } 59 else 60 { 61 return node; 62 } 63 } 64 65 public boolean stopTraversal() 66 { 67 return false; 68 } 69 70 public boolean skipChildren(Visitable node) 71 { 72 return (skipOverClass == null) ? 73 false: 74 skipOverClass.isInstance(node); 75 } 76 } 77 | Popular Tags |