1 package com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition; 2 3 import com.daffodilwoods.database.resource.DException; 4 import com.daffodilwoods.database.sqlinitiator._Order; 5 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 6 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dml. 7 _FullTextIndexInformation; 8 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.set. 9 UnionAllIterator; 10 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator. 11 Rank1FTIterator; 12 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator. 13 Rank2FTIterator; 14 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator. 15 Rank3FTIterator; 16 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator. 17 Rank4FTIterator; 18 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 19 import com.daffodilwoods.daffodildb.server.sql99.common. 20 GeneralPurposeStaticClass; 21 import com.daffodilwoods.daffodildb.server.sql99.common.Datatypes; 22 import com.daffodilwoods.daffodildb.utils.field.FieldBase; 23 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator.AnyKeyWordsIterator; 24 25 44 45 public class OrWords 46 implements _Word { 47 50 WordRepresentation[] words; 51 54 String columnName; 55 56 private _Order order; 57 58 public OrWords(WordRepresentation[] words0) { 59 words = words0; 60 } 61 62 68 public int getType() throws DException { 69 return PredicateConstant.orWords; 70 } 71 72 78 public String getColumn() throws DException { 79 return columnName = words[0].getColumn(); 80 } 81 82 88 public void setColumn(String colName) throws DException { 89 for (int i = 0; i < words.length; i++) { 90 words[i].setColumn(colName); 91 } 92 } 93 94 99 public WordRepresentation[] getWord() throws DException { 100 return words; 101 } 102 103 116 117 public _Iterator execute(Object session) throws DException { 118 int length = words.length; 119 _Iterator tokenIterator[] = new _Iterator[length]; 120 _Iterator locationIterator[] = new _Iterator[length]; 121 _Reference fpkReference[] = new _Reference[length]; 122 FieldBase[] KeyWords = new FieldBase[length]; 123 for (int i = 0; i < length; i++) { 124 tokenIterator[i] = words[i].getTokenIterator(session); 125 locationIterator[i] = words[i].getLocationIterator(session); 126 fpkReference[i] = words[i].getFpkReference(); 127 KeyWords[i] = (FieldBase) words[i].getKeyWords(); 128 129 } 130 _Iterator rank1 = new Rank1FTIterator(tokenIterator, locationIterator, 131 fpkReference, KeyWords); 132 _Iterator rank2 = new Rank2FTIterator(tokenIterator, locationIterator, 133 fpkReference, KeyWords); 134 _Iterator rank3 = new Rank3FTIterator(tokenIterator, locationIterator, 135 fpkReference, KeyWords); 136 _Iterator rank4 = new Rank4FTIterator(tokenIterator, locationIterator, 137 fpkReference, KeyWords); 138 return getUnionIterator(rank1, rank2, rank3, rank4); 139 } 140 141 private _Iterator getUnionIterator(_Iterator rank1, _Iterator rank2, 142 _Iterator rank3, _Iterator rank4) throws 143 DException { 144 int[] appropriateDataType = new int[] { 145 Datatypes.LONGSIZE}; 146 _Reference[] leftReferences = new _Reference[] { 147 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 148 _Reference[] rightReferences = new _Reference[] { 149 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 150 _Reference[] orderLeftColumnDetails = new _Reference[] { 151 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 152 _Reference[] orderRightColumnDetails = new _Reference[] { 153 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 154 UnionAllIterator iter = new UnionAllIterator(rank1, rank2, leftReferences, 155 rightReferences, 156 appropriateDataType, 157 appropriateDataType, 158 orderLeftColumnDetails, 159 orderRightColumnDetails); 160 _Reference[] leftReferences1 = new _Reference[] { 161 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 162 _Reference[] rightReferences1 = new _Reference[] { 163 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 164 _Reference[] orderLeftColumnDetails1 = new _Reference[] { 165 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 166 _Reference[] orderRightColumnDetails1 = new _Reference[] { 167 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 168 UnionAllIterator iter1 = new UnionAllIterator(rank3, rank4, leftReferences1, 169 rightReferences1, 170 appropriateDataType, 171 appropriateDataType, 172 orderLeftColumnDetails1, 173 orderRightColumnDetails1); 174 _Reference[] leftReferences2 = new _Reference[] { 175 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 176 _Reference[] rightReferences2 = new _Reference[] { 177 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 178 _Reference[] orderLeftColumnDetails2 = new _Reference[] { 179 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 180 _Reference[] orderRightColumnDetails2 = new _Reference[] { 181 GeneralPurposeStaticClass.getColumnDetails("documentId")}; 182 return new UnionAllIterator(iter, iter1, leftReferences2, rightReferences2, 183 appropriateDataType, appropriateDataType, 184 orderLeftColumnDetails2, 185 orderRightColumnDetails2); 186 187 } 188 189 public double getCost() throws DException { 190 return 0.0; 191 } 192 193 public double getCost(Object session) throws DException { 194 return 0.0; 195 } 196 197 public double getEstimatedRow() throws DException { 198 return 1; 199 } 200 201 public void setOrder(_Order order) throws DException { 202 this.order = order; 203 } 204 205 public _Order getOrder() throws DException { 206 return order; 207 } 208 209 217 private _Iterator[] getTokenIterator(Object session) throws DException { 218 int length = words.length; 219 _Iterator tokenIterator[] = new _Iterator[length]; 220 for (int i = 0; i < length; i++) { 221 tokenIterator[i] = words[i].getTokenIterator(session); 222 } 223 return tokenIterator; 224 } 225 226 232 private FieldBase[] getKeyWords(Object session) throws DException { 233 int length = words.length; 234 FieldBase[] KeyWords = new FieldBase[length]; 235 for (int i = 0; i < length; i++) { 236 KeyWords[i] = (FieldBase) words[i].getKeyWords(); 237 } 238 return KeyWords; 239 } 240 241 250 public _Iterator executeForSortedResult(Object indexTable) throws DException { 251 _Iterator tokenIterator[] = getTokenIterator(indexTable); 252 FieldBase keyWord[] = getKeyWords(indexTable); 253 AnyKeyWordsIterator iter = new AnyKeyWordsIterator( 254 tokenIterator, keyWord); 255 return iter; 256 } 257 258 } 259 | Popular Tags |