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.iterator.*; 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 SchemaDescriptor extends Descriptor { 13 16 public String catalog_name; 17 public String schema_name; 18 19 21 public String schema_owner; 22 23 26 public String default_character_set_catalog; 27 public String default_character_set_schema; 28 public String default_character_set_name; 29 30 32 public String sql_path; 33 34 37 38 42 public void load(_ServerSession serverSession) throws DException { 43 DataDictionary dd = (DataDictionary) serverSession.getDataDictionary(); 44 _SelectQueryIterator schemaIterator = (_SelectQueryIterator) dd.getPreparedStatementGetter(). 45 getSchemataTableExecuter().executeForFresh(new Object [] {catalog_name, 46 schema_name}); 47 if (!schemaIterator.first()) { 48 if (! (catalog_name.equalsIgnoreCase("users") || catalog_name.equalsIgnoreCase(SystemTables.systemCatalog))) { 49 throw new DException("DSE7076", new Object [] {catalog_name}); 50 } 51 throw new DException("DSE896", new Object [] {schema_name}); 52 } 53 loadDataFromRecord(schemaIterator); 54 } 55 56 60 public void loadDataFromRecord(_SelectQueryIterator iter) throws DException { 61 Object [] obj = (Object []) iter.getObject(); 62 schema_name = (String ) obj[SystemTablesFields.schema_schema_name]; 63 catalog_name = (String ) obj[SystemTablesFields.schema_catalog_name]; 64 schema_owner = (String ) obj[SystemTablesFields.schema_schema_owner]; default_character_set_catalog = (String ) obj[SystemTablesFields. 66 schema_default_character_set_catalog]; default_character_set_schema = (String ) obj[SystemTablesFields. 68 schema_default_character_set_schema]; default_character_set_name = (String ) obj[SystemTablesFields. 70 schema_default_character_set_name]; sql_path = (String ) obj[SystemTablesFields.schema_sql_path]; 73 } 74 75 79 public void save(_ServerSession serverSession) throws DException { 80 Object [] columnValues = { 81 catalog_name, schema_name, schema_owner, 82 default_character_set_catalog, default_character_set_schema, 83 default_character_set_name, sql_path}; 84 try { 85 SqlSchemaConstants.insert(serverSession, 86 SqlSchemaConstants.schema_TableName, null, 87 columnValues); 88 } catch (PrimaryConstraintException de) { 89 DException tde = new DException("DSE1146", new Object [] {getSchemaName()}); 90 throw tde; 91 } catch (SizeMisMatchException de) { 92 if (de.getDseCode().equals("DSE773")) { 93 DException tde = new DException("DSE8103", null); 94 throw tde; 95 } 96 } catch (DException de) { 97 if (de.getDseCode().equals("DSE1255")) { 98 DException tde = new DException("DSE1146", new Object [] {getSchemaName()}); 99 throw tde; 100 } 101 if (de.getDseCode().equals("DSE773")) { 102 DException tde = new DException("DSE8103", null); 103 throw tde; 104 } 105 if (de.getDseCode().equalsIgnoreCase("DSE382")) { 106 107 throw new DException("DSE8215", new Object [] {schema_owner}); 108 } 109 throw de; 110 } 111 } 112 113 115 public void delete(_ServerSession serverSession) throws DException { 116 String bve = "CATALOG_NAME=? and SCHEMA_NAME=?"; 117 _ServerSession globalSession = serverSession.getGlobalSession(); 118 booleanvalueexpression condition = ConditionParser.parseCondition(bve, globalSession, SqlSchemaConstants.schema_TableName); 119 super.delete(serverSession, SqlSchemaConstants.schema_TableName, condition, new Object [] {catalog_name, schema_name}); 120 } 121 122 124 private String getSchemaName() throws DException { 125 return new StringBuffer ().append(catalog_name).append(".").append( 126 schema_name).toString(); 127 } 128 129 131 public int getDescriptorType() { 132 return SCHEMA_DESCRIPTOR; 133 } 134 } 135 | Popular Tags |