KickJava   Java API By Example, From Geeks To Geeks.

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


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.sql99.common.*;
6 import com.daffodilwoods.daffodildb.server.sql99.dql.execution.*;
7 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
8 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
9 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
10 import com.daffodilwoods.daffodildb.server.sql99.utils.parser.*;
11 import com.daffodilwoods.daffodildb.utils.*;
12 import com.daffodilwoods.database.general.*;
13 import com.daffodilwoods.database.resource.*;
14 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Utility;
15 import com.daffodilwoods.daffodildb.server.sql99._Executer;
16
17 public class SequenceNumberDescriptor extends Descriptor implements _Sequence {
18    public String JavaDoc sequence_catalog;
19    public String JavaDoc sequence_schema;
20    public String JavaDoc sequence_name;
21    public long start_with;
22    public long min_value;
23    public long max_value;
24    public long increment_by;
25    public Long JavaDoc last_value;
26    public boolean cycle_in_sequence;
27    public boolean sequence_order;
28
29    public SequenceNumberDescriptor() throws DException {
30    }
31
32    /**
33     * Load method tries to load the all information (Such as sequence_catalog, sequence_schema, sequence_name, start_with, min_value,
34     * max_value, increment_by, last_value, cycle_in_sequence, sequence_order) from sequence_number system table according to
35     * schema qualified sequence name. If no information found for schema qualified sequence name then it throws DException. */

36    public void load(_ServerSession serverSession) throws DException {
37       _Executer sequenceExecuter = ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter().getSequenceExecuter();
38       _SelectQueryIterator iter = (_SelectQueryIterator) sequenceExecuter.execute(new Object JavaDoc[] {sequence_catalog, sequence_schema, sequence_name});
39       if (!iter.first()) {
40          throw new DException("DSE5516", new Object JavaDoc[] {getQualifiedName()});
41       }
42       loadDataFromRecord(iter);
43    }
44
45    /**
46     * Load method tries to load the all information (Such as sequence_catalog, sequence_schema, sequence_name, start_with, min_value,
47     * max_value, increment_by, last_value, cycle_in_sequence, sequence_order) from sequence_number system table according to
48     * schema qualified sequence name. If no information found for schema qualified sequence name then it throws DException. */

49    public void loadWithCurrentSession(_ServerSession serverSession) throws DException {
50       _Executer sequenceExecuter = ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter().getSequenceExecuter();
51       _SelectQueryIterator iter = (_SelectQueryIterator) sequenceExecuter.execute(new Object JavaDoc[] {sequence_catalog, sequence_schema, sequence_name});
52       if (!iter.first()) {
53          throw new DException("DSE5516", new Object JavaDoc[] {getQualifiedName()});
54       }
55       loadDataFromRecord(iter);
56    }
57
58    /**
59     * LoadDataFromRecord method load the all information (Such as sequence_catalog, sequence_schema, sequence_name, start_with, min_value,
60     * max_value, increment_by, last_value, cycle_in_sequence, sequence_order) from sequence_number system table according to
61     * schema qualified sequence name and put all the information in class variables. */

62    private void loadDataFromRecord(_SelectQueryIterator iter) throws DException {
63       Object JavaDoc[] obj = (Object JavaDoc[]) iter.getObject();
64       start_with = ( (Long JavaDoc) obj[SystemTablesFields.sequence_number_start_with]).longValue();
65       min_value = ( (Long JavaDoc) obj[SystemTablesFields.sequence_number_min_value]).longValue();
66       max_value = ( (Long JavaDoc) obj[SystemTablesFields.sequence_number_max_value]).longValue();
67       increment_by = ( (Long JavaDoc) obj[SystemTablesFields.sequence_number_increment_by]).longValue();
68       last_value = (Long JavaDoc) obj[SystemTablesFields.sequence_number_last_value];
69       cycle_in_sequence = ( (Boolean JavaDoc) obj[SystemTablesFields.sequence_number_cycle_in_sequence]).booleanValue();
70       sequence_order = ( (Boolean JavaDoc) obj[SystemTablesFields.sequence_number_sequence_order]).booleanValue();
71    }
72
73    /**
74     * Save all the information(Such as sequence_catalog, sequence_schema, sequence_name, start_with, min_value,
75     * max_value, increment_by, last_value, cycle_in_sequence, sequence_order) of a particular sequence in sequence_number
76     * system table at the time of sequence creation. */

77    public void save(_ServerSession serverSession) throws DException {
78       Object JavaDoc[] columnValues = new Object JavaDoc[] {sequence_catalog, sequence_schema, sequence_name,
79           new Long JavaDoc(start_with), new Long JavaDoc(min_value), new Long JavaDoc(max_value),
80           new Long JavaDoc(increment_by), last_value, Utility.getBooleanValue(cycle_in_sequence), Utility.getBooleanValue(sequence_order)};
81       try {
82          SqlSchemaConstants.insert(serverSession, SystemTables.sequence_number_TableName, null, columnValues);
83       } catch (SizeMisMatchException de) {
84          if (de.getDseCode().equals("DSE773")) {
85             DException tde = new DException("DSE8103", null);
86             throw tde;
87          }
88       } catch (DException de) {
89          if (de.getDseCode().equals("DSE1032")) {
90             DException tde = new DException("DSE5506", new Object JavaDoc[] {getSequenceName()});
91             throw tde;
92          }
93          if (de.getDseCode().equals("DSE773")) {
94             DException tde = new DException("DSE8103", null);
95             throw tde;
96          }
97          if (de.getDseCode().equals("DSE1255")) {
98             DException tde = new DException("DSE5506", new Object JavaDoc[] {getSequenceName()});
99             throw tde;
100          }
101          throw de;
102       }
103    }
104
105    /**
106     * Update method update all information of a particular sequence which is already exist in database. */

107    public void update(_ServerSession serverSession, int[] columnIndexes, Object JavaDoc[] columnValues) throws DException {
108       TableDetails tableDetail = new TableDetails();
109       tableDetail.setTableName(SqlSchemaConstants.sequence_number_TableName.getTableName());
110       String JavaDoc bve = "sequence_catalog=? and sequence_schema=? and sequence_name=?";
111       _ServerSession globalSession = serverSession.getGlobalSession();
112       booleanvalueexpression condition = ConditionParser.parseCondition(bve, globalSession, SqlSchemaConstants.sequence_number_TableName);
113       ConditionSingleTableExecuter conSingTE = new ConditionSingleTableExecuter(null, tableDetail, globalSession, condition, null);
114       _Iterator iter = globalSession.getInternalIterator(SqlSchemaConstants.sequence_number_TableName, conSingTE);
115       _Reference[] ref = null;
116       Object JavaDoc[] val = null;
117       ref = condition.getReferences(new TableDetails[] {tableDetail});
118       val = new Object JavaDoc[] {sequence_catalog, sequence_schema, sequence_name};
119       iter.setConditionVariableValue(ref, FieldUtility.getFields(val), 1);
120       SqlSchemaConstants.update(serverSession.getSystemServerSession(), SqlSchemaConstants.sequence_number_TableName, iter, columnIndexes, columnValues);
121    }
122
123    /**
124     * Remove the all information of a particular sequence from sequence_number system table. */

125    public void delete(_ServerSession serverSession) throws com.daffodilwoods.database.resource.DException {
126       String JavaDoc bve = "sequence_catalog=? and sequence_schema=? and sequence_name=?";
127       _ServerSession globalSession = serverSession.getGlobalSession();
128       booleanvalueexpression condition = ConditionParser.parseCondition(bve, globalSession, SqlSchemaConstants.sequence_number_TableName);
129       super.delete(serverSession, SqlSchemaConstants.sequence_number_TableName, condition, new Object JavaDoc[] {sequence_catalog, sequence_schema, sequence_name});
130    }
131
132    /**
133     * Returns the schema qualified sequence name. */

134
135    /**
136     * Returns the schema qualified sequence name. */

137    public String JavaDoc getSequenceName() {
138       return new StringBuffer JavaDoc().append(sequence_catalog).append(".").append(sequence_schema).append(".").append(sequence_name).toString();
139    }
140
141    /**
142     * Returns the startwith value of a particular sequence. */

143    public long getStartWith() {
144       return start_with;
145    }
146
147    /**
148     * Returns the min value of a particular sequence. */

149    public long getMinValue() {
150       return min_value;
151    }
152
153    /**
154     * Returns the max value of a particular sequence. */

155    public long getMaxValue() {
156       return max_value;
157    }
158
159    /**
160     * Returns the increment value of a particular sequence. */

161    public long getIncrementBy() {
162       return increment_by;
163    }
164
165    /**
166     * Returns true value if sequence is cyclic else return false. */

167    public boolean getCycleInSequence() {
168       return cycle_in_sequence;
169    }
170
171    /**
172     * Returns the true value if sequence's order is Asc else return false. */

173    public boolean getSequenceOrder() {
174       return sequence_order;
175    }
176
177    /**
178     * Returns the last value. */

179    public Long JavaDoc getLastValue() {
180       return last_value;
181    }
182
183    /**
184     * Returns the int value 20 for SEQUENCE_NUMBER_DESCRIPTOR. */

185    public int getDescriptorType() {
186       return SEQUENCE_NUMBER_DESCRIPTOR;
187    }
188
189    /**
190     * Returns the schema qualified sequence name. */

191    public QualifiedIdentifier getQualifiedName() {
192       return new QualifiedIdentifier(sequence_catalog, sequence_schema, sequence_name);
193    }
194 }
195
Popular Tags