1 package com.daffodilwoods.rmi.server; 2 3 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata._RowReader; 4 5 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents._SelectIterator; 6 7 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.table.SelectIterator; 8 9 10 import com.daffodilwoods.daffodildb.server.datadictionarysystem._ColumnCharacteristics; 11 import java.rmi.RemoteException ; 12 import java.rmi.server.UnicastRemoteObject ; 13 import com.daffodilwoods.database.resource.DException; 14 15 import com.daffodilwoods.daffodildb.server.sql99.common._KeyColumnInformation; 16 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Datatype; 17 import com.daffodilwoods.daffodildb.server.datasystem.persistentsystem.*; 18 import com.daffodilwoods.rmi.interfaces.*; 19 import com.daffodilwoods.rmi.*; 20 import java.util.ArrayList ; 21 22 import com.daffodilwoods.daffodildb.server.serversystem._Connection; 23 import com.daffodilwoods.daffodildb.client.*; 24 import com.daffodilwoods.daffodildb.server.sql99.common.*; 25 26 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata.AllColumnRowReader; 27 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata._SelectColumnCharacteristics; 28 29 30 public class RmiSelectIteratorServerSide extends UnicastRemoteObject implements _RmiSelectIterator { 31 32 _SelectIterator selectIterator_Interface; 33 _Connection connection; 34 private boolean addedListener; 35 private RmiConnectionServerSide rmiConnection; 36 private int[] dataTypes; 37 38 public RmiSelectIteratorServerSide(_SelectIterator selectIterator0,_RmiConnection rmiConnection1) throws RemoteException { 39 super(); 40 selectIterator_Interface = selectIterator0; 41 rmiConnection = (RmiConnectionServerSide)rmiConnection1; 42 try { 43 if( selectIterator0 != null ) 44 dataTypes = selectIterator0.getDataTypes(); 45 } 46 catch (DException ex) { 47 } 48 } 49 50 void changeSelectIterator(_SelectIterator newIteraor){ 51 selectIterator_Interface = newIteraor; 52 try { 53 if (dataTypes == null ) 54 dataTypes = newIteraor.getDataTypes(); 55 } 56 catch (DException ex) { 57 } 58 } 59 60 public _ColumnCharacteristics getColumnCharacteristics() throws DException, RemoteException { 61 _SelectColumnCharacteristics scc = selectIterator_Interface.getSelectColumnCharacteristics(); 62 int columnCount = scc.getColumnCount(); 63 ColumnInfo[] columnInfo = new ColumnInfo[columnCount]; 64 for (int i = 0; i < columnCount; i++) { 65 columnInfo[i] = new ColumnInfo(); 66 ColumnInfo ci = columnInfo[i]; 67 int columnIndex = i+1; 68 ci.catalogName = scc.getCatalogName(columnIndex); 69 ci.columnLabel = scc.getColumnLabel(columnIndex); 70 ci.isColumnUpdatable = scc.isColumnUpdatable(columnIndex); 71 ci.name = scc.getColumnName(columnIndex); 72 ci.nullable = scc.isNullable(columnIndex); 73 ci.precision = scc.getPrecision(columnIndex); 74 ci.qualifiedTableName = scc.getQualifiedTableName(columnIndex); 75 ci.scale = scc.getScale(columnIndex); 76 ci.schemaName = scc.getSchemaName(columnIndex); 77 ci.size = scc.getSize(columnIndex); 78 ci.tableName = scc.getTableName(columnIndex); 79 ci.type = scc.getColumnType(columnIndex); 80 } 81 return new RmiSelectColumnCharacteristics(columnInfo); 82 } 83 84 public _RowReader getRowReader() throws DException, RemoteException { 85 _RowReader reader = selectIterator_Interface.getRowReader(); 86 if( reader instanceof AllColumnRowReader ){ 87 AllColumnRowReader rr = (AllColumnRowReader)reader; 88 int lengthOfRow = ((Object [])rr.getBlankRow()).length; 89 return new RmiAllColumnRowReader(rr.getSelectedColumnMapping(), 90 rr.getComparator(),rr.getKeyColumnIndexes(),lengthOfRow,rr.getPrimaryConditionColumns()); 91 } 92 else 93 return new RmiRowReader(); 94 } 95 96 public Object fetch(int rowCount,boolean forward,boolean beforeFirstAfterLast) throws DException, RemoteException { 97 long time = System.currentTimeMillis(); 98 if(forward ){ 99 if (beforeFirstAfterLast) 100 selectIterator_Interface.beforeFirst(); 101 } 102 else if( beforeFirstAfterLast ) 103 selectIterator_Interface.afterLast(); 104 Object [] rows = forward ? selectIterator_Interface.fetchForward(rowCount) : selectIterator_Interface.fetchBackward(rowCount); 105 SelectedRows slRows = new SelectedRows(); 106 slRows.setDataTypes(dataTypes); 107 slRows.setRows(rows); 108 109 time = System.currentTimeMillis()- time; 110 if (time > 50) 111 ; 113 114 return slRows; 115 116 } 117 118 public int move(Object key, boolean intBased) throws DException, RemoteException { 119 if(intBased) 120 return selectIterator_Interface.move(key.hashCode()); 121 selectIterator_Interface.moveToRow(key); 122 return 0; 123 } 124 125 public int getRowCount() throws java.rmi.RemoteException , 126 com.daffodilwoods.database.resource.DException { 127 return selectIterator_Interface.getRowCount(); 128 } 129 130 public Object insert(int[] columnIndexes,Object [] columnValues) throws DException,RemoteException { 131 Object row = selectIterator_Interface.insert(columnIndexes,columnValues); 132 return makeSelectRows(row); 133 } 134 135 private SelectedRows makeSelectRows(Object row) { 136 SelectedRows slRows = new SelectedRows(); 137 slRows.setDataTypes(dataTypes); 138 slRows.setRows(new Object []{row}); 139 return slRows; 140 } 141 142 public Object update(Object key,int[] columnIndexes,Object [] values,Object row) throws DException, RemoteException { 143 Object updatedRow = selectIterator_Interface.update(key,columnIndexes,values,row); 144 return makeSelectRows(updatedRow); 145 } 146 147 public void delete(Object key) throws DException,RemoteException { 148 selectIterator_Interface.delete(key); 149 } 150 151 public Object moveToInsertRow() throws DException ,RemoteException { 152 Object row = selectIterator_Interface.moveToInsertRow(); 153 return makeSelectRows(row); 154 } 155 156 public void setConnection(_Connection connection) throws RemoteException { 157 this.connection = connection; 158 } 159 160 public ExecutionPlanForBrowser getExecutionPlanForBrowser() throws DException,RemoteException { 161 return selectIterator_Interface.getExecutionPlanForBrowser(); 162 } 163 164 public void flushInsertedRecord() throws DException,RemoteException { 165 selectIterator_Interface.flushInsertedRecord(); 166 } 167 168 public boolean isUpdatable() throws DException, RemoteException { 169 return selectIterator_Interface.isUpdatable(); 170 } 171 172 String query; 173 public void setQuery(String query) { 174 this.query = query; 175 } 176 } 177 | Popular Tags |