KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > dcl > sqlcontrolstatement > SQLvariabledeclaration


1 package com.daffodilwoods.daffodildb.server.sql99.dcl.sqlcontrolstatement;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
7 import com.daffodilwoods.daffodildb.server.serversystem.*;
8 import com.daffodilwoods.daffodildb.server.sql99.*;
9 import com.daffodilwoods.daffodildb.server.sql99.common.*;
10 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*;
11 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*;
12 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
13 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
14 import com.daffodilwoods.daffodildb.server.sql99.token.*;
15 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
16 import com.daffodilwoods.daffodildb.utils.*;
17 import com.daffodilwoods.daffodildb.utils.field.*;
18 import com.daffodilwoods.database.resource.*;
19
20 public class SQLvariabledeclaration {
21
22    public defaultclause _Optdefaultclause0;
23    public datatype _datatype1;
24    public SQLvariablenamelist _SQLvariablenamelist2;
25    public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439223;
26
27    public void addVariableInVV(_VariableValues vv) throws DException {
28       ArrayList nameList = _SQLvariablenamelist2.getVariableNames();
29       for (int i = 0, size = nameList.size(); i < size; i++) {
30          String JavaDoc varName = (String JavaDoc) nameList.get(i);
31          ProcedureStringReference ref = new ProcedureStringReference(varName);
32          DataTypeDescriptor dtd = new DataTypeDescriptor();
33          if (_datatype1 instanceof domainname) {
34             dtd = setDomainDescriptor(vv);
35          }
36          _datatype1.setDescriptor(dtd);
37          _datatype1.run(null);
38          int dataType = dtd.getType();
39          ref.setDatatype(dataType);
40          ref.setSize(dtd.getPrecision());
41          _Reference[] refs = new _Reference[] {ref};
42          vv.addReferences(refs);
43          vv.setConditionVariableValue(refs, new Object JavaDoc[] {defaultValue(dataType, vv)}
44                                       , 1);
45       }
46    }
47
48    public ArrayList getVariableNames() throws DException {
49       return _SQLvariablenamelist2.getVariableNames();
50    }
51
52    /** @todo default value related work is pending */
53    private Object JavaDoc defaultValue(int dataType, _VariableValues vv) throws DException {
54       Object JavaDoc value = null;
55       if (_Optdefaultclause0 != null) {
56          /** @todo set data type of field literal has to be taken care */
57          value = _Optdefaultclause0._defaultoption0.run(vv);
58       } else {
59          value = new FieldLiteral(FieldUtility.NULLBUFFERRANGE, dataType);
60       }
61       return value;
62    }
63
64    public Object JavaDoc getDefaultValue(int dataType) throws DException {
65       Object JavaDoc returnValue = FieldUtility.NULLFIELDBASE;
66       switch (dataType) {
67          case Datatype.BYTE:
68          case Datatype.TINYINT:
69          case Datatype.SMALLINT:
70          case Datatype.SHORT:
71          case Datatype.INT:
72          case Datatype.INTEGER:
73          case Datatype.LONG:
74          case Datatype.BIGINT:
75             returnValue = new Integer JavaDoc(0);
76             break;
77          case Datatype.REAL:
78          case Datatype.FLOAT:
79          case Datatype.DOUBLE:
80          case Datatype.DOUBLEPRECISION:
81          case Datatype.NUMERIC:
82          case Datatype.DECIMAL:
83          case Datatype.DEC:
84          case Datatype.BIGDECIMAL:
85             returnValue = new Double JavaDoc(0);
86             break;
87          case Datatype.VARCHAR:
88          case Datatype.CHAR:
89          case Datatype.CHARACTERVARYING:
90          case Datatype.CHARVARYING:
91          case Datatype.CHARACTER:
92          case Datatype.BOOLEAN:
93          case Datatype.DATE:
94          case Datatype.MODULE:
95          case Datatype.SUM:
96          case Datatype.ARRAY:
97          case Datatype.RECORD:
98          case Datatype.RECORDSET:
99          case Datatype.TIME:
100          case Datatype.TIMESTAMP:
101          case Datatype.TIME_WITH_TIMEZONE:
102          case Datatype.TIMESTAMP_WITH_TIMEZONE:
103          case Datatype.BLOB:
104          case Datatype.CLOB:
105          case Datatype.REF:
106          case Datatype.STRUCT:
107          case Datatype.CHARACTERLARGEOBJECT:
108          case Datatype.CHARLARGEOBJECT:
109          case Datatype.BINARYLARGEOBJECT:
110          case Datatype.BIT:
111          case Datatype.BITVARYING:
112          case Datatype.LONGVARCHAR:
113          case Datatype.LONGVARBINARY:
114          case Datatype.VARBINARY:
115          case Datatype.BINARY:
116          case Datatype.TABLEKEY:
117             return null;
118       }
119       return returnValue;
120    }
121
122    public String JavaDoc toString() {
123       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
124       sb.append(" ");
125       sb.append(_SRESERVEDWORD12065439223);
126       sb.append(" ");
127       sb.append(_SQLvariablenamelist2);
128       sb.append(" ");
129       sb.append(_datatype1);
130       sb.append(" ");
131       if (_Optdefaultclause0 != null) {
132          sb.append(_Optdefaultclause0);
133       }
134       return sb.toString().trim();
135    }
136
137    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
138       return this;
139    }
140
141    private DataTypeDescriptor setDomainDescriptor(_VariableValues vv) throws DException {
142       String JavaDoc domain_Catalog, domain_Schema, domain_Name;
143       _ServerSession currentSession = vv.getServerSession();
144       domainname domainName = (domainname) _datatype1;
145       domain_Catalog = domainName.getCatalogName();
146       domain_Schema = domainName.getSchemaName();
147       if (domain_Catalog == null) {
148          domain_Catalog = currentSession.getCurrentCatalog();
149       }
150       if (domain_Schema == null) {
151          domain_Schema = currentSession.getCurrentSchema();
152       }
153       domain_Name = domainName.getDomainName();
154       DomainDescriptor domainDescriptor = checkDomainPrivilege(currentSession, domain_Catalog, domain_Schema, domain_Name);
155       return domainDescriptor.dataTypeDescriptor;
156    }
157
158    private DomainDescriptor checkDomainPrivilege(_ServerSession currentSession, String JavaDoc domainCatalog, String JavaDoc domainSchema, String JavaDoc domainName) throws
159        DException {
160       DomainDescriptor domainDescriptor = getDomainDescriptor(currentSession, domainCatalog, domainSchema, domainName);
161       if (! (currentSession.getCurrentUser().equalsIgnoreCase(ServerSystem.browserUser))) {
162          _Executer domainExecuter = ( (DataDictionary) currentSession.getDataDictionary()).getPreparedStatementGetter().getExecuterForDomainValidity();
163          _SelectQueryIterator iter = (_SelectQueryIterator) domainExecuter.executeForFresh(new Object JavaDoc[] {domainDescriptor.catalog_name, domainDescriptor.schema_name, domainDescriptor.domain_name, SqlKeywords.DOMAIN, currentSession.getCurrentUser()});
164          if (!iter.first()) {
165             throw new DException("DSE8188", new Object JavaDoc[] {domainDescriptor.getQualifiedIdentifier()});
166          }
167       }
168       return domainDescriptor;
169    }
170
171    private DomainDescriptor getDomainDescriptor(
172        _ServerSession serverSession, String JavaDoc domainCatalog, String JavaDoc domainSchema, String JavaDoc domainName) throws DException {
173       DomainDescriptor domainDescriptor = new DomainDescriptor();
174       domainDescriptor.catalog_name = domainCatalog;
175       domainDescriptor.schema_name = domainSchema;
176       domainDescriptor.domain_name = domainName;
177       domainDescriptor.loadWithoutConstraints(serverSession);
178       return domainDescriptor;
179    }
180 }
181
Popular Tags