| 1 2 package com.daffodilwoods.daffodildb.server.sql99.fulltext.dml; 3 4 import com.daffodilwoods.fulltext.common._FullTextModifications; 5 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._IndexTable; 6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._DatabaseUser; 7 import com.daffodilwoods.database.resource.DException; 8 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 9 import com.daffodilwoods.daffodildb.server.sql99.common.ColumnDetails; 10 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Datatype; 11 import com.daffodilwoods.daffodildb.utils.FieldUtility; 12 import com.daffodilwoods.daffodildb.server.datasystem.indexsystem._IndexInformation; 13 import com.daffodilwoods.daffodildb.server.sql99.common.GeneralPurposeStaticClass; 14 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.condition.NonIndexedFilterIterator; 15 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.condition.IndexedFilterIterator; 16 import com.daffodilwoods.daffodildb.server.sql99.utils.ConditionVariableValue; 17 import com.daffodilwoods.daffodildb.server.sql99.utils._VariableValues; 18 import com.daffodilwoods.daffodildb.server.sql99.utils.VariableValues; 19 import com.daffodilwoods.daffodildb.server.datasystem.interfaces._UserTableOperations; 20 import com.daffodilwoods.daffodildb.server.sql99.utils.parser.ConditionParser; 21 import com.daffodilwoods.daffodildb.server.sql99.utils.parser.SessionConditionParser; 22 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.booleanvalueexpression; 23 import com.daffodilwoods.daffodildb.server.sql99.common.TableDetails; 24 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 25 import com.daffodilwoods.database.utility.P; 26 import com.daffodilwoods.daffodildb.server.sql99.common.Datatypes; 27 28 39 public class DaffodilFullTextModifications implements _FullTextModifications{ 40 41 44 private _IndexTable indexTable; 45 49 private _UserTableOperations tableOperations; 50 53 private _Iterator iterator; 54 58 private _Reference[] refDocumentid; 59 60 63 private _Iterator pkIterator; 64 67 private ColumnDetails pkColumnDetails; 68 69 public DaffodilFullTextModifications(_IndexTable indexTable0) throws DException{ 70 indexTable = indexTable0; 71 booleanvalueexpression bve = GeneralPurposeStaticClass.getCondition("documentId = ?",Datatypes.LONG); initializeDocumentIdColumn(bve); 73 _Iterator iter = indexTable.getIterator(getIndex(indexTable.getIndexInformations(),"documentId")); 74 iterator = GeneralPurposeStaticClass.getIndexedFilteredIterator(iter,bve); 75 tableOperations = (_UserTableOperations)iter; 76 initializePKColumn(); 77 } 78 79 84 private void initializePKColumn() throws DException{ 85 pkColumnDetails = new ColumnDetails(); 86 pkColumnDetails.setColumnName(new String []{"pk"}); 87 pkColumnDetails.setDatatype(Datatype.LONG); 88 pkColumnDetails.setSize(Datatype.LONGSIZE); 89 } 90 91 97 private void initializeDocumentIdColumn(booleanvalueexpression bve) throws DException{ 98 refDocumentid = bve.getReferences(null); 99 } 100 101 108 public void insert(_DatabaseUser user,Object [] values) throws DException{ 109 tableOperations.insert(user,values); 110 } 111 112 public void update(_DatabaseUser user,Object oldColumnValue,Object newColumnValue,Object documentId) throws DException{ 113 throw new UnsupportedOperationException ("Method update() yet not implemented"); 114 } 115 116 124 public void delete(_DatabaseUser user,Object documentId) throws DException{ 125 iterator.setConditionVariableValue(refDocumentid,new Object []{documentId},0); 126 boolean flag = iterator.first(); 127 while(flag){ 128 ((_UserTableOperations)iterator).delete(user); 129 flag = iterator.next(); 130 } 131 } 132 133 139 140 public Object getLastPK() throws DException{ 141 if(pkIterator == null){ 142 _IndexInformation[] indexInfo = indexTable.getIndexInformations(); 143 pkIterator = indexTable.getIterator(getIndex(indexInfo,"pk")); 144 } 145 return pkIterator.last() ? pkIterator.getColumnValues(pkColumnDetails) 146 : FieldUtility.getField(Datatype.LONG,new Long (0)); 147 } 148 149 157 private int getIndex(_IndexInformation[] indexInfo,String name) throws DException{ 158 for (int i = 0; i < indexInfo.length; i++) { 159 String [] columns = indexInfo[i].getColumns(); 160 if(columns[0].equalsIgnoreCase(name)) 161 return i; 162 } 163 return -1; 164 } 165 166 } 167 | Popular Tags |