1 package com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.condition; 2 3 import com.daffodilwoods.database.resource.DException; 4 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 5 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dml._FullTextIndexInformation; 6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexTable; 7 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem._IndexInformation; 8 import com.daffodilwoods.database.sqlinitiator._Order; 9 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.set.UnionAllIterator; 10 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator.Rank1FTIterator; 11 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator.Rank2FTIterator; 12 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator.Rank3FTIterator; 13 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 14 import com.daffodilwoods.daffodildb.server.sql99.common.GeneralPurposeStaticClass; 15 import com.daffodilwoods.daffodildb.server.sql99.common.Datatypes; 16 import com.daffodilwoods.daffodildb.utils.GetByteComparator; 17 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator; 18 import com.daffodilwoods.daffodildb.utils.field.FieldBase; 19 import com.daffodilwoods.daffodildb.server.sql99.fulltext.dql.iterator.AllKeyWordsIterator; 20 21 39 40 public class AndWords implements _Word{ 41 44 WordRepresentation[] words; 45 48 String columnName; 49 50 private _Order order; 51 52 public AndWords(WordRepresentation[] words0) { 53 words = words0; 54 } 55 61 public int getType() throws DException{ 62 return PredicateConstant.andWords; 63 } 64 70 public String getColumn() throws DException{ 71 return columnName = words[0].getColumn(); 72 } 73 79 public void setColumn(String colName) throws DException{ 80 for(int i =0;i<words.length;i++){ 81 words[i].setColumn(colName); 82 } 83 } 84 85 public WordRepresentation[] getWord(){ 86 return words; 87 } 88 100 public _Iterator execute(Object session)throws DException{ 101 int length = words.length; 102 _Iterator tokenIterator[] = new _Iterator[length]; 103 _Iterator locationIterator[] = new _Iterator[length]; 104 _Reference fpkReference[] = new _Reference[length]; 105 FieldBase[] KeyWords = new FieldBase[length]; 106 for (int i = 0; i < length; i++) { 107 tokenIterator[i] = words[i].getTokenIterator(session); 108 locationIterator[i] = words[i].getLocationIterator(session); 109 fpkReference[i] = words[i].getFpkReference(); 110 KeyWords[i] = (FieldBase)words[i].getKeyWords(); 111 } 112 _Iterator rank1 = new Rank1FTIterator(tokenIterator,locationIterator,fpkReference,KeyWords); 113 _Iterator rank2 = new Rank2FTIterator(tokenIterator,locationIterator,fpkReference,KeyWords); 114 _Iterator rank3 = new Rank3FTIterator(tokenIterator,locationIterator,fpkReference,KeyWords); 115 return getUnionIterator(rank1, rank2, rank3); 116 } 117 130 private _Iterator getUnionIterator(_Iterator rank1,_Iterator rank2,_Iterator rank3) throws DException{ 131 int[] appropriateDataType = new int[]{Datatypes.LONGSIZE}; 132 _Reference[] leftReferences = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 133 _Reference[] rightReferences = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 134 _Reference[] orderLeftColumnDetails = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 135 _Reference[] orderRightColumnDetails = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 136 UnionAllIterator iter = new UnionAllIterator(rank1,rank2,leftReferences,rightReferences,appropriateDataType,appropriateDataType,orderLeftColumnDetails,orderRightColumnDetails); 137 _Reference[] leftReferences1 = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 138 _Reference[] rightReferences1 = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 139 _Reference[] orderLeftColumnDetails1 = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 140 _Reference[] orderRightColumnDetails1 = new _Reference[]{GeneralPurposeStaticClass.getColumnDetails("documentId")}; 141 return new UnionAllIterator(iter,rank3,leftReferences1,rightReferences1,appropriateDataType,appropriateDataType,orderLeftColumnDetails1,orderRightColumnDetails1); 142 } 143 144 145 public double getCost() throws DException { 146 return 0.0; 147 } 148 public double getCost(Object session) throws DException { 149 return 0.0; 150 } 151 public double getEstimatedRow() throws DException { 152 return 1; 153 } 154 public void setOrder(_Order order) throws DException { 155 this.order = order; 156 } 157 public _Order getOrder() throws DException { 158 return order; 159 } 160 168 private _Iterator[] getTokenIterator(Object session) throws DException { 169 int length = words.length; 170 _Iterator tokenIterator[] = new _Iterator[length]; 171 FieldBase[] KeyWords = new FieldBase[length]; 172 for(int i = 0;i<length;i++){ 173 tokenIterator[i] = words[i].getTokenIterator(session); 174 } 175 return tokenIterator; 176 } 177 183 private FieldBase[] getKeyWords(Object session)throws DException { 184 int length = words.length; 185 FieldBase[] KeyWords = new FieldBase[length]; 186 for(int i = 0;i<length;i++){ 187 KeyWords[i] = (FieldBase)words[i].getKeyWords(); 188 } 189 return KeyWords; 190 } 191 192 201 202 public _Iterator executeForSortedResult(Object indexTable) throws DException{ 203 _Iterator tokenIterator[] = getTokenIterator(indexTable); 204 FieldBase keyWord[] = getKeyWords(indexTable); 205 AllKeyWordsIterator iter = new AllKeyWordsIterator(tokenIterator,keyWord); 206 return iter; 207 } 208 209 } 210 | Popular Tags |