1 package com.daffodilwoods.daffodildb.server.datadictionarysystem; 2 3 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._Iterator; 4 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession; 5 import com.daffodilwoods.daffodildb.server.sql99._Executer; 6 7 8 import com.daffodilwoods.database.resource.*; 9 import com.daffodilwoods.database.general.*; 10 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 11 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents.*; 12 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator._SelectQueryIterator; 13 public class ViewCharacteristics implements _ViewCharacteristics { 14 15 16 private String [] viewColumns; 17 private String viewDefinition; 18 private String check_option; 19 private boolean is_updatable; 20 private boolean is_Insertable_into; 21 22 23 public ViewCharacteristics(QualifiedIdentifier viewName,PreparedStatementGetter preparedStatementGetter,_ColumnCharacteristics columnCharacteristics) throws InitializeException,DException{ 24 String [] breakedTable = breakTableName(viewName); 25 try{ 26 _SelectQueryIterator iterator = getIterator(preparedStatementGetter.getViewsExecuterWithNameCondition(),breakedTable); 27 if(! iterator.first() ) 28 throw new DException("DSE998", new Object []{viewName.getIdentifier()}); 29 Object [] record = (Object [])iterator.getObject(); 30 viewDefinition = (String )record[0]; 31 check_option = (String )record[1]; 32 is_updatable = record[2].toString().equalsIgnoreCase("YES"); 33 is_Insertable_into = record[3].toString().equalsIgnoreCase("YES"); 34 viewColumns = columnCharacteristics.getColumnNames(); 35 } catch (RetrievalException re){ 36 InitializeException ie = new InitializeException("DSE1107",null); 37 ie.setException(re); 38 throw ie; 39 } 40 } 41 42 public String getViewQuery() throws DException { 43 return viewDefinition; 44 } 45 46 public String [] getViewColumns() throws DException { 47 return viewColumns; 48 } 49 public boolean isUpdatable() throws DException { 50 return is_updatable; 51 } 52 public boolean isInsertableInto() throws DException { 53 return is_Insertable_into; 54 } 55 56 public String [] breakTableName(QualifiedIdentifier identifier) throws DException { 57 String [] breakedTable = new String [3]; 58 breakedTable[0] = identifier.catalog; 59 breakedTable[1] = identifier.schema; 60 breakedTable[2] = identifier.name; 61 return breakedTable; 62 } 63 64 65 private _SelectQueryIterator getIterator(_Executer executer,Object [] parameters) throws DException{ 66 return (_SelectQueryIterator) executer.executeForFresh( parameters); 67 } 68 69 } 70 | Popular Tags |