1 22 23 package org.xquark.extractor.algebra; 24 25 import java.util.ArrayList ; 26 import java.util.List ; 27 28 29 33 34 public class RestrictionVisitor extends DefaultSimpleVisitor { 35 private static final String RCSRevision = "$Revision: 1.1 $"; 36 private static final String RCSName = "$Name: $"; 37 38 private List _restrictList = new ArrayList (); 39 private boolean grabJoins = false; 40 private boolean blockOnSelect = false; 41 42 public RestrictionVisitor () { 43 } 44 45 public void reinit() { 46 _restrictList.clear(); 47 grabJoins = false; 48 } 49 50 public void reinit(boolean grabJoins, boolean blockOnSelect) { 51 _restrictList.clear(); 52 setGrabJoins(grabJoins); 53 setBlockOnSelect(blockOnSelect); 54 } 55 56 public List getRestrictions(){ 57 return _restrictList; 58 } 59 60 public void visit(UnOpRestrict arg) { 61 if (!(arg.getOperand() instanceof UnOpGroup)) 62 _restrictList.add(arg); 63 super.visit((UnaryOperator)arg); 64 } 65 66 public void visit(Join arg){ 67 if (grabJoins) 68 _restrictList.add(arg); 69 super.visit(arg); 70 } 71 72 public void visit(UnOpProject arg){ 73 if (!blockOnSelect) 74 super.visit((UnaryOperator)arg); 75 } 76 79 public boolean isGrabJoins() { 80 return grabJoins; 81 } 82 83 86 public void setGrabJoins(boolean grabJoins) { 87 this.grabJoins = grabJoins; 88 } 89 90 public void setBlockOnSelect(boolean blockOnSelect) { 91 this.blockOnSelect = blockOnSelect; 92 } 93 94 } | Popular Tags |