KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > ddl > descriptors > SchemaDescriptor


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    /**
14     * CONSTRAINT SCHEMATA_PRIMARY_KEY PRIMARY KEY ( CATALOG_NAME, SCHEMA_NAME ),
15     * CONSTRAINT SCHEMATA_FOREIGN_KEY FOREIGN KEY ( SCHEMA_OWNER ) REFERENCES USERS. */

16    public String JavaDoc catalog_name;
17    public String JavaDoc schema_name;
18
19    /**
20     * NOT NULL. */

21    public String JavaDoc schema_owner;
22
23    /**
24     * Character Set feature not supported
25     * Curretlly default value is being stored. */

26    public String JavaDoc default_character_set_catalog;
27    public String JavaDoc default_character_set_schema;
28    public String JavaDoc default_character_set_name;
29
30    /**
31     * SQL Path feature not supprted. */

32    public String JavaDoc sql_path;
33
34    /*String catalog_name0, String schema_name0) throws DException {
35         catalog_name = catalog_name0;
36         schema_name = schema_name0; */

37
38    /**
39     * Load method tries to load the all information (Such as catalog_name, schema_name, schema_owner, default_character_set_catalog,
40     * default_character_set_schema, default_character_set_name, sql_path) from schema system table according to qualified schema name.
41     * If no information found for qualified schema name then it throws DException. */

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 JavaDoc[] {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 JavaDoc[] {catalog_name});
50          }
51          throw new DException("DSE896", new Object JavaDoc[] {schema_name});
52       }
53       loadDataFromRecord(schemaIterator);
54    }
55
56    /**
57     * LoadDataFromRecord method load the all information (Such as catalog_name, schema_name, schema_owner,
58     * default_character_set_catalog, default_character_set_schema, default_character_set_name, sql_path) from
59     * schema system table according to qualified schema name and put all the information in class variables. */

60    public void loadDataFromRecord(_SelectQueryIterator iter) throws DException {
61       Object JavaDoc[] obj = (Object JavaDoc[]) iter.getObject();
62       schema_name = (String JavaDoc) obj[SystemTablesFields.schema_schema_name];
63       catalog_name = (String JavaDoc) obj[SystemTablesFields.schema_catalog_name];
64       schema_owner = (String JavaDoc) obj[SystemTablesFields.schema_schema_owner]; //schemaIterator.getColumnValue("schema_owner");
65
default_character_set_catalog = (String JavaDoc) obj[SystemTablesFields.
66           schema_default_character_set_catalog]; //schemaIterator.getColumnValue("default_character_set_catalog");
67
default_character_set_schema = (String JavaDoc) obj[SystemTablesFields.
68           schema_default_character_set_schema]; //schemaIterator.getColumnValue("default_character_set_schema");
69
default_character_set_name = (String JavaDoc) obj[SystemTablesFields.
70           schema_default_character_set_name]; //schemaIterator.getColumnValue("default_character_set_name");
71
sql_path = (String JavaDoc) obj[SystemTablesFields.schema_sql_path]; //schemaIterator.getColumnValue("com.daffodilwoods.database.sql_path");
72

73    }
74
75    /**
76     * Save all the information(Such as catalog_name, schema_name, schema_owner, default_character_set_catalog, default_character_set_schema,
77     * default_character_set_name, sql_path) of a particular schema in schema system table at the time of schema creation. If such information
78     * is already exists in system table then it throws PrimaryConstraintException. */

79    public void save(_ServerSession serverSession) throws DException {
80       Object JavaDoc[] 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 JavaDoc[] {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 JavaDoc[] {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             /* changes made for bug no 12488 */
107               throw new DException("DSE8215", new Object JavaDoc[] {schema_owner});
108          }
109          throw de;
110       }
111    }
112
113    /**
114     * Remove the all information of a particular schema from schema system table. */

115    public void delete(_ServerSession serverSession) throws DException {
116       String JavaDoc 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 JavaDoc[] {catalog_name, schema_name});
120    }
121
122    /**
123     * Returns the schema name with catalog. */

124    private String JavaDoc getSchemaName() throws DException {
125       return new StringBuffer JavaDoc().append(catalog_name).append(".").append(
126           schema_name).toString();
127    }
128
129    /**
130     * Returns the int value 19 for SCHEMA_DESCRIPTOR. */

131    public int getDescriptorType() {
132       return SCHEMA_DESCRIPTOR;
133    }
134 }
135
Popular Tags