KickJava   Java API By Example, From Geeks To Geeks.

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


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.dql.plan.condition._AllColumnPredicates;
6 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition._FullTextPredicate;
7 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition.PredicateMerger;
8 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference;
9 import com.daffodilwoods.daffodildb.server.sql99.common.GeneralPurposeStaticClass;
10 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
11
12 /**
13  * searchtermSampersand1079887221searchfactor represents combination of two search
14  * pattern which are combined with OR Operator.
15  * It provides functionality to get a plan which is self executable. This plan helps in
16  * obtaining the desired documents in which either one or both SearchPattern is present.
17  * <p>Title: </p>
18  * <p>Description: </p>
19  * <p>Copyright: Copyright (c) 2003</p>
20  * <p>Company: </p>
21  * @author not attributable
22  * @version 1.0
23  */

24
25
26 public class searchexpressionSverticalbar_37763991searchterm implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter, searchexpression {
27   /**
28    * It represents first serach pattern.
29    */

30   public searchterm _searchterm0;
31   /**
32    * It represents operator for Oring,which is '|'
33    */

34   public Sverticalbar_37763991 _Sverticalbar_377639911;
35   /**
36    * It represents second serach pattern
37    */

38   public searchexpression _searchexpression2;
39
40   public boolean leftPlanFlag,rightPlanFlag;
41
42   public Object JavaDoc run(Object JavaDoc object) throws DException {
43     return null;
44   }
45
46   public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
47     searchexpression Searchexpression2 = (searchexpression) _searchexpression2.clone();
48     Sverticalbar_37763991 sverticalbar_377639911 = (Sverticalbar_37763991)
49         _Sverticalbar_377639911.clone();
50     searchterm Searchterm0 = (searchterm) _searchterm0.clone();
51
52     searchexpressionSverticalbar_37763991searchterm
53         SearchexpressionSverticalbar_37763991searchterm = new
54         searchexpressionSverticalbar_37763991searchterm();
55     SearchexpressionSverticalbar_37763991searchterm._searchexpression2 =
56         Searchexpression2;
57     SearchexpressionSverticalbar_37763991searchterm._Sverticalbar_377639911 =
58         sverticalbar_377639911;
59     SearchexpressionSverticalbar_37763991searchterm._searchterm0 = Searchterm0;
60     return SearchexpressionSverticalbar_37763991searchterm;
61   }
62
63   /**
64    * GetFullTextPredicate used to get plan of search Pattern.firstly It get plan
65    * of first and second search pattern then merges both plan with OR logical
66    * operator.Resultant plan may be optimized or not.
67    * optimized plan:-plan is optimized if it will provide resultset based on
68    * Rank Iterator.
69    * @return _fulltextPredicate
70    * @throws DException
71    */

72
73   public _FullTextPredicate getFulltextPredicates() throws DException{
74     _FullTextPredicate leftPredicate= null,rightPredicate =null;
75     _FullTextPredicate resultantPredicate= null;
76     if(leftPlanFlag && rightPlanFlag){
77       leftPredicate = _searchexpression2.getFulltextPredicates();
78       rightPredicate = _searchterm0.getFulltextPredicates();
79      resultantPredicate =PredicateMerger.mergePredicateWithOr(leftPredicate,rightPredicate);
80     return resultantPredicate;
81     }
82     else if(leftPlanFlag)
83       return _searchexpression2.getFulltextPredicates();
84     else if(rightPlanFlag)
85         return _searchterm0.getFulltextPredicates();
86     else
87       throw new DException("DSE0",new Object JavaDoc[]{"Illegal way of get plan "});
88
89   }
90
91   /**
92    * CheckSemantic check Whether search pattern is valid or invalid
93    * @param obj
94    * @return _References[]
95    * @throws DException
96    */

97  public _Reference[] checkSemantic(com.daffodilwoods.daffodildb.server.serversystem._ServerSession obj) throws DException {
98    _Reference[] joinReferences = null;
99    _Reference[] leftReferences = null;
100    _Reference[] rightReferences = null;
101     try {
102       leftReferences = _searchexpression2.checkSemantic(obj);
103       leftPlanFlag = true;
104     }
105     catch (DException ex) {
106       leftPlanFlag = false;
107     }
108     finally{
109       try{
110         rightReferences = _searchterm0.checkSemantic(obj);
111         rightPlanFlag = true;
112       }catch(DException ex ){
113         rightPlanFlag =false;
114       }
115
116     }
117     if(leftPlanFlag && rightPlanFlag){
118      joinReferences = GeneralPurposeStaticClass.getJointReferences(leftReferences,rightReferences);
119     return joinReferences;
120     }
121     else if(leftPlanFlag)
122       return leftReferences;
123     else if(rightPlanFlag)
124       return rightReferences;
125     else
126       /* Done by vibha to solve bug no 12180*/
127       throw new DException("DSE6002",new Object JavaDoc[]{});
128  }
129
130  public String JavaDoc toString()
131  {
132      StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
133      sb.append(" ");
134      sb.append(_searchexpression2);
135      sb.append(" ");
136      sb.append(_Sverticalbar_377639911);
137      sb.append(" ");
138      sb.append(_searchterm0);
139      return sb.toString();
140  }
141
142
143 }
144
Popular Tags