KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.serversystem.*;
7 import com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem.*;
8 import com.daffodilwoods.daffodildb.server.sql99.common.*;
9 import com.daffodilwoods.daffodildb.server.sql99.ddl.utility.*;
10 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*;
11 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
12 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
13 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
14 import com.daffodilwoods.daffodildb.server.sql99.utils.parser.*;
15 import com.daffodilwoods.daffodildb.utils.*;
16 import com.daffodilwoods.database.general.*;
17 import com.daffodilwoods.database.resource.*;
18
19 public class DomainDescriptor extends Descriptor {
20    public String JavaDoc catalog_name;
21    public String JavaDoc schema_name;
22    public String JavaDoc domain_name;
23    public String JavaDoc dtd_Idenifier;
24
25    public String JavaDoc default_clause;
26
27    public DataTypeDescriptor dataTypeDescriptor;
28    public SchemaDescriptor schemaDescriptor;
29
30    public ArrayList domainConstrainsList;
31
32
33    private static String JavaDoc domainReferencedFromColumnsQuery = " select * from " +
34        SqlSchemaConstants.columns_TableName
35        + " where domain_catalog = ? and domain_schema = ? and domain_name = ? ";
36
37    public DomainDescriptor() throws DException {
38    }
39
40    /* during load, initialize the datatypeDescriptor also */
41
42    public void load(_ServerSession serverSession) throws DException {
43       DataDictionary dd = (DataDictionary) serverSession.getDataDictionary();
44       _SelectQueryIterator iter = (_SelectQueryIterator) dd.getPreparedStatementGetter().
45           getDomianTableExecuter().executeForFresh(new Object JavaDoc[] {catalog_name,
46           schema_name, domain_name});
47       if (iter.first()) {
48          Object JavaDoc[] obj = (Object JavaDoc[]) iter.getObject();
49          default_clause = (String JavaDoc) obj[SystemTablesFields.domain_default_clause]; // ("domain_default");
50
dtd_Idenifier = (String JavaDoc) obj[SystemTablesFields.domain_dtd_Idenifier];
51          dataTypeDescriptor = new DataTypeDescriptor();
52          dataTypeDescriptor.object_catalog = catalog_name;
53          dataTypeDescriptor.object_schema = schema_name;
54          dataTypeDescriptor.object_name = domain_name;
55          dataTypeDescriptor.object_type = SqlKeywords.DOMAIN;
56          dataTypeDescriptor.dtd_identifier = dtd_Idenifier;
57          dataTypeDescriptor.load(serverSession);
58          loadConstraints(serverSession);
59       } else {
60          throw new DException("DSE337", null);
61       }
62    }
63
64   public void loadWithoutConstraints(_ServerSession serverSession) throws DException {
65        DataDictionary dd = (DataDictionary) serverSession.getDataDictionary();
66        _SelectQueryIterator iter = (_SelectQueryIterator) dd.getPreparedStatementGetter().
67            getDomianTableExecuter().executeForFresh(new Object JavaDoc[] {catalog_name,
68            schema_name, domain_name});
69        if (!iter.first()) {
70           throw new DException("DSE8211", new Object JavaDoc[] {new QualifiedIdentifier(catalog_name, schema_name, domain_name)});
71        } else {
72           Object JavaDoc[] obj = (Object JavaDoc[]) iter.getObject();
73           default_clause = (String JavaDoc) obj[SystemTablesFields.domain_default_clause]; // ("domain_default");
74
dtd_Idenifier = (String JavaDoc) obj[SystemTablesFields.domain_dtd_Idenifier];
75           dataTypeDescriptor = new DataTypeDescriptor();
76           dataTypeDescriptor.object_catalog = catalog_name;
77           dataTypeDescriptor.object_schema = schema_name;
78           dataTypeDescriptor.object_name = domain_name;
79           dataTypeDescriptor.object_type = SqlKeywords.DOMAIN;
80           dataTypeDescriptor.dtd_identifier = dtd_Idenifier;
81           dataTypeDescriptor.load(serverSession);
82        }
83     }
84
85    public void save(_ServerSession serverSession) throws DException {
86       dataTypeDescriptor.save(serverSession);
87       Object JavaDoc[] columnValues = {
88           catalog_name, schema_name, domain_name, dtd_Idenifier, default_clause};
89
90       try {
91          SqlSchemaConstants.insert(serverSession,
92                                    SqlSchemaConstants.domains_TableName, null,
93                                    columnValues);
94       } catch (PrimaryConstraintException de) {
95          DException tde = new DException("DSE1144", new Object JavaDoc[] {getDomainName()});
96          throw tde;
97       } catch (SizeMisMatchException de) {
98          if (de.getDseCode().equals("DSE773")) {
99             DException tde = new DException("DSE8103", null);
100             throw tde;
101          }
102       } catch (DException de) {
103          if (de.getDseCode().equals("DSE1255")) {
104             DException tde = new DException("DSE1144", new Object JavaDoc[] {getDomainName()});
105             throw tde;
106          }
107          if (de.getDseCode().equals("DSE773")) {
108             DException tde = new DException("DSE8103", null);
109             throw tde;
110          }
111          throw de;
112       }
113    }
114
115    public void delete(_ServerSession serverSession) throws DException {
116       String JavaDoc bve = "DOMAIN_CATALOG=? and DOMAIN_SCHEMA=? and DOMAIN_NAME=?";
117       _ServerSession globalSession = serverSession.getGlobalSession();
118       booleanvalueexpression condition = ConditionParser.parseCondition(bve, globalSession, SqlSchemaConstants.domains_TableName);
119       super.delete(serverSession, SqlSchemaConstants.domains_TableName, condition, new Object JavaDoc[] {catalog_name, schema_name, domain_name});
120       dataTypeDescriptor.delete(serverSession);
121       deleteConstraints(serverSession);
122    }
123
124    public void loadConstraints(_ServerSession serverSession) throws DException {
125       DataDictionary dd = (DataDictionary) serverSession.getDataDictionary();
126       _SelectQueryIterator retIter = (_SelectQueryIterator) dd.getPreparedStatementGetter().getDomainConstraintsExecuter().executeForFresh( (Object JavaDoc[]) getParameters());
127       if (retIter.first()) {
128          domainConstrainsList = new ArrayList(2);
129          do {
130             DomainConstraintDescriptor constraint = new DomainConstraintDescriptor();
131             constraint.loadDataFromRecord(serverSession, retIter);
132             domainConstrainsList.add(constraint);
133          } while (retIter.next());
134       }
135    }
136
137    public void deleteConstraints(_ServerSession serverSession) throws DException {
138       if (domainConstrainsList != null) {
139          for (int i = 0; i < domainConstrainsList.size(); i++) {
140             ( (DomainConstraintDescriptor) domainConstrainsList.get(i)).delete(
141                 serverSession);
142          }
143       }
144    }
145
146    private String JavaDoc getDomainName() throws DException {
147       return new StringBuffer JavaDoc().append(catalog_name).append(".").append(
148           schema_name).append(".").append(domain_name).toString();
149    }
150
151    private String JavaDoc[] getParameters() throws DException {
152       return new String JavaDoc[] {
153           catalog_name, schema_name, domain_name};
154    }
155
156    public Object JavaDoc[] isDomainReferencedfromColumns(_ServerSession serverSession) throws
157        DException {
158       _SelectQueryIterator iter = SqlSchemaConstants.getIterator(serverSession, domainReferencedFromColumnsQuery, getParameters());
159       if (!iter.first()) {
160          return null;
161       }
162       return (Object JavaDoc[]) iter.getObject();
163    }
164
165    public boolean isDomainReferencedfromRoutines(_ServerSession serverSession) throws
166        DException {
167       return false;
168    }
169
170    public ArrayList getColumnDescriptorsForDomain(_ServerSession serverSession) throws
171        DException {
172       ArrayList columnDescriptorsList = null;
173       _SelectQueryIterator iter = SqlSchemaConstants.getIterator(serverSession,
174           domainReferencedFromColumnsQuery, getParameters());
175       if (iter.first()) {
176          columnDescriptorsList = new ArrayList();
177          do {
178             ColumnDescriptor columnDescriptor = new ColumnDescriptor();
179             columnDescriptor.loadDataFromRecord(iter);
180             columnDescriptorsList.add(columnDescriptor);
181          } while (iter.next());
182       }
183       return columnDescriptorsList;
184    }
185
186    public ArrayList getConstraintsConditions() {
187       ArrayList checkClauses = null;
188       if (domainConstrainsList != null) {
189          checkClauses = new ArrayList();
190          for (int i = 0; i < domainConstrainsList.size(); i++) {
191             checkClauses.add( ( (DomainConstraintDescriptor) domainConstrainsList.
192                                get(i)).checkConsDes.check_clause);
193          }
194       }
195       return checkClauses;
196    }
197
198    public int getDescriptorType() {
199       return DOMAIN_DESCRIPTOR;
200    }
201
202    public void addDomainConstraintDescriptor(DomainConstraintDescriptor domainConsDes) {
203       if (domainConstrainsList == null) {
204          domainConstrainsList = new ArrayList();
205       }
206       domainConstrainsList.add(domainConsDes);
207    }
208
209    public boolean hasGrantableRefRightsForColumnsIncluded(_ServerSession currentSession, String JavaDoc user) throws DException {
210       if (domainConstrainsList != null) {
211          for (int i = 0, size = domainConstrainsList.size(); i < size; i++) {
212             DomainConstraintDescriptor dcd = (DomainConstraintDescriptor) domainConstrainsList.get(i);
213             ArrayList columnList = dcd.checkConsDes.getColumnsUsedInSearchCondition();
214             if (!GeneralUtility.checkAllColumnGrantableRights(currentSession, user, _PrivilegeTable.REFERENCES, columnList)) {
215                return false;
216             }
217          }
218       }
219       return true;
220    }
221
222    public QualifiedIdentifier getQualifiedIdentifier() {
223       return new QualifiedIdentifier(catalog_name, schema_name, domain_name);
224    }
225
226    public void update(_ServerSession serverSession, int[] columns,
227                         Object JavaDoc[] values) throws DException {
228        String JavaDoc bve = "DOMAIN_CATALOG=? and DOMAIN_SCHEMA=? and DOMAIN_NAME=?";
229        TableDetails tableDetail = new TableDetails();
230        tableDetail.setTableName(SqlSchemaConstants.domains_TableName.getTableName());
231        _ServerSession systemSession = serverSession.getSystemServerSession();
232        _ServerSession globalSession = serverSession.getGlobalSession();
233        booleanvalueexpression condition = ConditionParser.parseCondition(bve,globalSession,SqlSchemaConstants.domains_TableName);
234        ConditionSingleTableExecuter conSingTE = new ConditionSingleTableExecuter(null,
235            tableDetail, globalSession, condition, null);
236        _Iterator iter = globalSession.getInternalIterator(SqlSchemaConstants.domains_TableName, conSingTE);
237        _Reference[] ref = null;
238        Object JavaDoc[] val = null;
239        try {
240          ref = condition.getReferences(new TableDetails[] {tableDetail});
241          val = new Object JavaDoc[] {catalog_name, schema_name, domain_name};
242          val = FieldUtility.getFields(val);
243          iter.setConditionVariableValue(ref, val, 1);
244        }
245        catch (Exception JavaDoc ex) {
246        }
247        SqlSchemaConstants.update(systemSession,
248                                  SqlSchemaConstants.domains_TableName, iter,
249                                  columns, values);
250   }
251 }
252
Popular Tags