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 sequence_catalog; 19 public String sequence_schema; 20 public String 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 last_value; 26 public boolean cycle_in_sequence; 27 public boolean sequence_order; 28 29 public SequenceNumberDescriptor() throws DException { 30 } 31 32 36 public void load(_ServerSession serverSession) throws DException { 37 _Executer sequenceExecuter = ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter().getSequenceExecuter(); 38 _SelectQueryIterator iter = (_SelectQueryIterator) sequenceExecuter.execute(new Object [] {sequence_catalog, sequence_schema, sequence_name}); 39 if (!iter.first()) { 40 throw new DException("DSE5516", new Object [] {getQualifiedName()}); 41 } 42 loadDataFromRecord(iter); 43 } 44 45 49 public void loadWithCurrentSession(_ServerSession serverSession) throws DException { 50 _Executer sequenceExecuter = ( (DataDictionary) serverSession.getDataDictionary()).getPreparedStatementGetter().getSequenceExecuter(); 51 _SelectQueryIterator iter = (_SelectQueryIterator) sequenceExecuter.execute(new Object [] {sequence_catalog, sequence_schema, sequence_name}); 52 if (!iter.first()) { 53 throw new DException("DSE5516", new Object [] {getQualifiedName()}); 54 } 55 loadDataFromRecord(iter); 56 } 57 58 62 private void loadDataFromRecord(_SelectQueryIterator iter) throws DException { 63 Object [] obj = (Object []) iter.getObject(); 64 start_with = ( (Long ) obj[SystemTablesFields.sequence_number_start_with]).longValue(); 65 min_value = ( (Long ) obj[SystemTablesFields.sequence_number_min_value]).longValue(); 66 max_value = ( (Long ) obj[SystemTablesFields.sequence_number_max_value]).longValue(); 67 increment_by = ( (Long ) obj[SystemTablesFields.sequence_number_increment_by]).longValue(); 68 last_value = (Long ) obj[SystemTablesFields.sequence_number_last_value]; 69 cycle_in_sequence = ( (Boolean ) obj[SystemTablesFields.sequence_number_cycle_in_sequence]).booleanValue(); 70 sequence_order = ( (Boolean ) obj[SystemTablesFields.sequence_number_sequence_order]).booleanValue(); 71 } 72 73 77 public void save(_ServerSession serverSession) throws DException { 78 Object [] columnValues = new Object [] {sequence_catalog, sequence_schema, sequence_name, 79 new Long (start_with), new Long (min_value), new Long (max_value), 80 new Long (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 [] {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 [] {getSequenceName()}); 99 throw tde; 100 } 101 throw de; 102 } 103 } 104 105 107 public void update(_ServerSession serverSession, int[] columnIndexes, Object [] columnValues) throws DException { 108 TableDetails tableDetail = new TableDetails(); 109 tableDetail.setTableName(SqlSchemaConstants.sequence_number_TableName.getTableName()); 110 String 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 [] val = null; 117 ref = condition.getReferences(new TableDetails[] {tableDetail}); 118 val = new Object [] {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 125 public void delete(_ServerSession serverSession) throws com.daffodilwoods.database.resource.DException { 126 String 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 [] {sequence_catalog, sequence_schema, sequence_name}); 130 } 131 132 134 135 137 public String getSequenceName() { 138 return new StringBuffer ().append(sequence_catalog).append(".").append(sequence_schema).append(".").append(sequence_name).toString(); 139 } 140 141 143 public long getStartWith() { 144 return start_with; 145 } 146 147 149 public long getMinValue() { 150 return min_value; 151 } 152 153 155 public long getMaxValue() { 156 return max_value; 157 } 158 159 161 public long getIncrementBy() { 162 return increment_by; 163 } 164 165 167 public boolean getCycleInSequence() { 168 return cycle_in_sequence; 169 } 170 171 173 public boolean getSequenceOrder() { 174 return sequence_order; 175 } 176 177 179 public Long getLastValue() { 180 return last_value; 181 } 182 183 185 public int getDescriptorType() { 186 return SEQUENCE_NUMBER_DESCRIPTOR; 187 } 188 189 191 public QualifiedIdentifier getQualifiedName() { 192 return new QualifiedIdentifier(sequence_catalog, sequence_schema, sequence_name); 193 } 194 } 195 | Popular Tags |