KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > fulltext > expression > containsclause


1 package com.daffodilwoods.daffodildb.server.sql99.fulltext.expression;
2
3 import com.daffodilwoods.database.resource.*;
4 import com.daffodilwoods.daffodildb.server.sql99.token.*;
5 import com.daffodilwoods.daffodildb.server.sql99.expression.expressionprimary.
6
    basicidentifierchain;
7 import com.daffodilwoods.daffodildb.server.sql99.common.ColumnDetails;
8 import com.daffodilwoods.daffodildb.server.sql99.expression.
9
    booleanvalueexpression.booleanvalueexpression;
10 import com.daffodilwoods.daffodildb.server.sql99.expression.
11
    booleanvalueexpression.AbstractBooleanValueExpression;
12 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition.
13
    _AllColumnPredicates;
14 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.table.
15
    _IndexPredicateInterface;
16 import com.daffodilwoods.database.sqlinitiator._Order;
17 import com.daffodilwoods.daffodildb.server.sql99.common.TableDetails;
18 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition.
19
    _QualifiedBVE;
20 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition._BVEPlan;
21 import com.daffodilwoods.daffodildb.server.sql99.utils._VariableValues;
22 import com.daffodilwoods.daffodildb.server.sql99.common.ParameterInfo;
23 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference;
24 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession;
25 import java.util.ArrayList JavaDoc;
26 import com.daffodilwoods.daffodildb.server.sql99.utils._VariableValueOperations;
27 import com.daffodilwoods.daffodildb.server.sql99.utils.ByteComparison;
28 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.
29
    AbstractRowValueExpression;
30 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition.
31
    BVESingleTablePlan;
32 import com.daffodilwoods.daffodildb.server.sql99.expression.
33
    booleanvalueexpression.booleanfactor;
34 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition.
35
    BVEPlanMerger;
36 import com.daffodilwoods.daffodildb.server.sql99.expression.
37
    booleanvalueexpression.parenthesizedbooleanvalueexpression;
38 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition.
39
    _FullTextPredicate;
40 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition.
41
    ContainsPredicate;
42 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem.
43
    _IndexTableList;
44 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexTable;
45 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dml.
46
    _FullTextIndexInformation;
47 import com.daffodilwoods.database.resource.DException;
48 import com.daffodilwoods.daffodildb.server.sql99.expression.
49
    booleanvalueexpression.predicates.ExecutionPlanConstants;
50 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.
51
    _SingleTableCondition;
52 import com.daffodilwoods.daffodildb.server.serversystem._Server;
53
54 /**
55  * This class represents clause where fulltext condition specified.
56  * e.g contains(a,'daffodil')
57  * It provides functionality for getting plan and also do
58  * semantic checking of fulltext condition.
59  * <p>Title: </p>
60  * <p>Description: </p>
61  * <p>Copyright: Copyright (c) 2003</p>
62  * <p>Company: </p>
63  * @author not attributable
64  * @version 1.0
65  */

66 public class containsclause
67     extends AbstractBooleanValueExpression
68     implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter,
69     booleanvalueexpression, _SingleTableCondition {
70   /**
71    * It represents right parenthesis of contains clause
72    */

73   public Srightparen_1874859514 _Srightparen_18748595140;
74
75   /**
76    * It represents search pattern that is to be searched.
77    */

78   public searchexpression _searchexpression1;
79
80   /**
81    * It represents ',' that seperate search pattern and column, against which search pattern is
82    * searched
83    */

84   public Scomma94843605 _Scomma948436052;
85
86   /**
87    * It represents column against which search pattern is searched
88    */

89   public basicidentifierchain _basicidentifierchain3;
90
91   /**
92    * It represents left parenthesis ')' of contains clause
93    */

94   public Sleftparen653880241 _Sleftparen6538802414;
95
96   /**
97    * It represents 'Contains' reserved word of Contains Clause.
98    */

99   public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442555;
100
101   /**
102    * It represents table information of column involved in Contains clause
103    */

104   public TableDetails tableDetails;
105
106   public Object JavaDoc run(Object JavaDoc object) throws DException {
107     return null;
108   }
109
110   public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
111     SNONRESERVEDWORD136444255 sNONRESERVEDWORD1364442557 = (
112         SNONRESERVEDWORD136444255) _SNONRESERVEDWORD1364442555.clone();
113     Sleftparen653880241 sleftparen6538802416 = (Sleftparen653880241)
114         _Sleftparen6538802414.clone();
115     basicidentifierchain Basicidentifierchain5 = (basicidentifierchain)
116         _basicidentifierchain3.clone();
117     Scomma94843605 scomma948436054 = (Scomma94843605) _Scomma948436052.clone();
118     searchexpression Searchexpression2 = (searchexpression) _searchexpression1.
119         clone();
120     Srightparen_1874859514 srightparen_18748595140 = (Srightparen_1874859514)
121         _Srightparen_18748595140.clone();
122
123     containsclause Containsclause = new containsclause();
124     Containsclause._SNONRESERVEDWORD1364442555 = sNONRESERVEDWORD1364442557;
125     Containsclause._Sleftparen6538802414 = sleftparen6538802416;
126     Containsclause._basicidentifierchain3 = Basicidentifierchain5;
127     Containsclause._Scomma948436052 = scomma948436054;
128     Containsclause._searchexpression1 = Searchexpression2;
129     Containsclause._Srightparen_18748595140 = srightparen_18748595140;
130     return Containsclause;
131   }
132
133   /**
134    * It is required to get Details of all column involved in Contains clause.
135    * @return columnDetails
136    * @throws DException
137    */

138   public ColumnDetails[] getColumnDetails() throws DException {
139     columnDetails = _basicidentifierchain3.getColumnDetails();
140     setFlagForContainClause(columnDetails);
141     return columnDetails;
142   }
143
144   /**
145    * It is required to set containsclauseflag for columndetails involved in
146    * contains clause.
147    * @param columnDetails
148    */

149   private void setFlagForContainClause(ColumnDetails[] columnDetails) {
150     for (int i = 0; i < columnDetails.length; i++) {
151       columnDetails[i].setContainClauseFlag();
152     }
153   }
154
155   /**
156    * This method is required to do semantic checking of contains clause.In semantic
157    * checking of contains clause we check fulltext index must be created on column
158    * involved in contains clause and search pattern length will be greater than 0
159    * after parsing that.
160    * @param obj
161    * @return
162    * @throws DException
163    */

164   public com.daffodilwoods.daffodildb.server.sql99.utils._Reference[]
165       checkSemantic(com.daffodilwoods.daffodildb.server.serversystem.
166
                    _ServerSession obj) throws DException {
167
168     if (_Server.ISONEDOLLARDB)
169       throw new DException("DSE2054",
170                            new Object JavaDoc[] {new String JavaDoc("Contains Clause")});
171     /*done by sandeep to solve bug--12501.
172      If the tabledetails of the column[0] is null then it will be a unknown references.
173       And since the length of columndetail will be 1 always,so return it as unknown reference.
174      */

175     if (columnDetails[0].getTable() == null)
176       return new _Reference[] {
177           columnDetails[0]};
178
179     _FullTextIndexInformation[] fullTextIndexInfo = obj.getIndexTable(
180         columnDetails[0].getTable().getQualifiedIdentifier()).
181         getFullTextIndexInformation();
182     if (fullTextIndexInfo != null) {
183       for (int i = 0; i < fullTextIndexInfo.length; i++) {
184         if (columnDetails[0].getColumn().equalsIgnoreCase(fullTextIndexInfo[i].
185             getIndexName()))
186           return _searchexpression1.checkSemantic(obj);
187         else {
188           if (fullTextIndexInfo[i].getColumnName().length == 1) {
189             if (columnDetails[0].getColumn().equalsIgnoreCase(fullTextIndexInfo[
190                 i].getColumnName()[0]))
191               return _searchexpression1.checkSemantic(obj);
192           }
193         }
194       }
195       /* Done by Kaushik on 21/08/2004 to solve Bug No. 11628 */
196       throw new DException("DSE6010", null);
197     }
198     throw new DException("DSE0",
199                          new Object JavaDoc[] {"FullTextIndex must exist on column--" +
200                          columnDetails[0].getColumn()});
201   }
202
203   public _IndexPredicateInterface getCost(_Order order, String JavaDoc[] queryColumns,
204                                           Object JavaDoc session,
205                                           TableDetails tableDetails,
206                                           ColumnDetails[] aggregateColumns) throws
207       DException {
208     _FullTextPredicate fullTextpredicate = _searchexpression1.
209         getFulltextPredicates();
210     ContainsPredicate cp = new ContainsPredicate(fullTextpredicate);
211     cp.setColumn(columnDetails[0].getColumn());
212     return cp;
213   }
214
215   /**
216    * This method is required to get plan of contains clause.
217    * @return
218    * @throws DException
219    */

220   public _BVEPlan getExecutionPlan() throws DException {
221     BVESingleTablePlan plan = new BVESingleTablePlan(this,
222         columnDetails[0].getTable());
223     return plan;
224   }
225
226   /**
227    * It is required by Abstarct parent class to initialize the childerns
228    * @return
229    */

230   public AbstractRowValueExpression[] getChilds() {
231     AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] {
232         _basicidentifierchain3};
233     return childs;
234   }
235
236   /**
237    * please see documentation of this method in queryexpression body.
238    * @return
239    * @throws DException
240    */

241   public ParameterInfo[] getParameterInfo() throws DException {
242     ParameterInfo parameterInfo = new ParameterInfo();
243     parameterInfo.setName(columnDetails[0].getStringOfColumn());
244     parameterInfo.setDataType(columnDetails[0].getDatatype());
245     return new ParameterInfo[] {
246         parameterInfo};
247   }
248
249   /**
250    * This method is used to get type of condition.It is required by BVE plan
251    * merger to merge plan with either AND and OR logical Operator.
252    * @return
253    * @throws DException
254    */

255   public int getConditionType() throws DException {
256     return ExecutionPlanConstants.CONTAINS;
257   }
258
259   public String JavaDoc toString() {
260     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
261     sb.append(_SNONRESERVEDWORD1364442555);
262     sb.append(_Sleftparen6538802414);
263     sb.append(_basicidentifierchain3);
264     sb.append(_Scomma948436052);
265     sb.append(_searchexpression1);
266     sb.append(_Srightparen_18748595140);
267     return sb.toString();
268   }
269
270   public booleanvalueexpression getSingleTableCondition() throws DException {
271     return this;
272   }
273
274 }
275
Popular Tags