1 package com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors; 2 3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 4 import com.daffodilwoods.daffodildb.server.serversystem.*; 5 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem.*; 6 import com.daffodilwoods.daffodildb.server.sql99.dql.listenerevents.*; 7 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*; 8 import com.daffodilwoods.daffodildb.server.sql99.utils.parser.*; 9 import com.daffodilwoods.database.general.*; 10 import com.daffodilwoods.database.resource.*; 11 12 public class IndexColumnDescriptor extends Descriptor { 13 public String table_catalog; 14 public String table_schema; 15 public String table_name; 16 public String indexname; 17 public String columnName; 18 public Object orderType; 19 public Integer ordinalPosition; 20 private QualifiedIdentifier indexTableName; 21 22 public IndexColumnDescriptor(QualifiedIdentifier indexTableName0) throws DException { 23 indexTableName = indexTableName0; 24 } 25 26 public void loadDataFromRecord(_SelectIterator iter) throws DException { 27 Object [] values = (Object []) iter.getObject(); 28 columnName = (String ) values[0]; 29 orderType = values[1]; 30 } 31 32 public void save(_ServerSession serverSession) throws DException { 33 Object [] columnValues = new Object [] { 34 table_catalog, table_schema, 35 table_name, indexname, columnName, orderType, ordinalPosition}; 36 try { 37 SqlSchemaConstants.insert(serverSession, indexTableName, null, 38 columnValues); 39 } catch (PrimaryConstraintException de) { 40 DException tde = new DException("DSE1143", new Object [] {columnName, 41 indexname, getTableName()}); 42 throw tde; 43 } catch (SizeMisMatchException de) { 44 if (de.getDseCode().equals("DSE773")) { 45 DException tde = new DException("DSE8103", null); 46 throw tde; 47 } 48 } catch (DException de) { 49 if (de.getDseCode().equals("DSE1255")) { 50 DException tde = new DException("DSE1143", new Object [] {columnName, 51 indexname, getTableName()}); 52 throw tde; 53 } 54 if (de.getDseCode().equals("DSE773")) { 55 DException tde = new DException("DSE8103", null); 56 throw tde; 57 } 58 throw de; 59 } 60 } 61 62 public void delete(_ServerSession serverSession) throws DException { 63 String bve = "TABLE_CATALOG=? and TABLE_SCHEMA=? and TABLE_NAME=? and INDEXNAME=? and COLUMN_NAME=?"; 64 _ServerSession globalSession = serverSession.getGlobalSession(); 65 booleanvalueexpression condition = ConditionParser.parseCondition(bve, globalSession, indexTableName); 66 super.delete(serverSession, indexTableName, condition, new Object [] {table_catalog, table_schema, table_name, indexname, columnName}); 67 } 68 69 private String getTableName() throws DException { 70 return new StringBuffer ().append(table_catalog).append(".").append( 71 table_schema).append(".").append(table_name).toString(); 72 } 73 74 public void load(_ServerSession parm1) throws DException { 75 76 throw new java.lang.UnsupportedOperationException ( 77 "Method load() not yet implemented."); 78 } 79 80 public int getDescriptorType() { 81 return INDEX_COLUMN_DESCRIPTOR; 82 } 83 } 84 | Popular Tags |