KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > xquark > extractor > algebra > RestrictionVisitor


1 /*
2  * This file belongs to the XQuark distribution.
3  * Copyright (C) 2003 XQuark Group.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307.
18  * You can also get it at http://www.gnu.org/licenses/lgpl.html
19  *
20  * For more information on this software, see http://www.xquark.org.
21  */

22
23 package org.xquark.extractor.algebra;
24
25 import java.util.ArrayList JavaDoc;
26 import java.util.List JavaDoc;
27
28
29 /**
30  * this class scans(by means of simple scan) a algebre tree and find out all
31  * {@link UnOpRestrict} node that are not having restrictions.
32  */

33
34 public class RestrictionVisitor extends DefaultSimpleVisitor {
35     private static final String JavaDoc RCSRevision = "$Revision: 1.1 $";
36     private static final String JavaDoc RCSName = "$Name: $";
37
38     private List JavaDoc _restrictList = new ArrayList JavaDoc();
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 JavaDoc 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     /**
77      * @return Returns the grabJoins.
78      */

79     public boolean isGrabJoins() {
80         return grabJoins;
81     }
82
83     /**
84      * @param grabJoins The grabJoins to set.
85      */

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