1 package com.daffodilwoods.daffodildb.server.sql99.expression.expressionprimary; 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.dcl.sqltransactionstatement.*; 7 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*; 8 import com.daffodilwoods.daffodildb.server.sql99.dql.tableexpression.fromclause.*; 9 import com.daffodilwoods.daffodildb.server.sql99.expression.*; 10 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 11 import com.daffodilwoods.daffodildb.server.sql99.token.*; 12 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 13 import com.daffodilwoods.database.general.*; 14 import com.daffodilwoods.database.resource.*; 15 16 public class sequencecolumnName extends AbstractValueExpression implements simpletargetspecification, targetspecification, nonparenthesizedvalueexpressionprimary, valueexpressionprimary, generalvaluespecification { 17 public sequenceindicators _sequenceindicators0; 18 public Speriod_991726143 _Speriod_9917261431; 19 public localorschemaqualifiedname _localorschemaqualifiedname2; 20 21 _ServerSession serverSession; 22 QualifiedIdentifier sequenceIdentifier; 23 String columnName; 24 _SequenceGenerator sequenceGenerator; 25 private static String query = "select * from " + SystemTables.sequence_number_TableName + " where sequence_catalog = ? "; 26 27 public Object run(Object object) throws DException { 28 29 String sequenceIndicator = (String ) _sequenceindicators0.run(null); 30 return sequenceIndicator.equalsIgnoreCase("CURRENTVAL") ? sequenceGenerator.getCurrent() : sequenceGenerator.getNext(); 31 32 } 33 34 public _Reference[] checkSemantic(_ServerSession serverSession) throws DException { 35 if (sequenceIdentifier == null) { 36 sequenceIdentifier = getSequenceIdentifier(serverSession); 37 } 38 if (sequenceGenerator == null) { 39 sequenceGenerator = serverSession.getSequenceManager().getSequenceGenerator(sequenceIdentifier); 40 } 41 return new SequenceReference[]{new SequenceReference(sequenceIdentifier.getIdentifier())}; 42 } 43 44 private QualifiedIdentifier getSequenceIdentifier(_ServerSession selectRunnable) throws DException { 45 46 String catalog = _localorschemaqualifiedname2.getCatalogName() ; 47 String schema = _localorschemaqualifiedname2.getSchemaName(); 48 String name = _localorschemaqualifiedname2.getIdentifierName(); 49 QualifiedIdentifier sequenceIdentifier = new QualifiedIdentifier( 50 (catalog == null ? selectRunnable.getCurrentCatalog() : catalog), 51 (schema == null ? selectRunnable.getCurrentSchema() : schema) ,name ); 52 return sequenceIdentifier; 53 } 54 55 private String [] getColumnName() throws DException { 56 String catalogName = _localorschemaqualifiedname2.getCatalogName(); 57 String schemaName = _localorschemaqualifiedname2.getSchemaName(); 58 String sequenceName = _localorschemaqualifiedname2.getIdentifierName(); 59 String columnName = (String ) _sequenceindicators0.run(null); 60 if (catalogName != null) { 61 return new String [] {catalogName, schemaName, sequenceName, columnName}; 62 } 63 if (catalogName != null) { 64 return new String [] {schemaName, sequenceName, columnName}; 65 } 66 return new String [] {sequenceName, columnName}; 67 } 68 69 public int getCardinality() throws DException { 70 return 1; 71 } 72 73 public ColumnDetails[] getChildColumnDetails() throws DException { 74 return columnDetails; 75 } 76 77 public AbstractRowValueExpression[] getChilds() { 78 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] {}; 79 return childs; 80 } 81 82 public String toString() { 83 StringBuffer sb = new StringBuffer (); 84 sb.append(" "); 85 sb.append(_localorschemaqualifiedname2); 86 sb.append(" "); 87 sb.append(_Speriod_9917261431); 88 sb.append(" "); 89 sb.append(_sequenceindicators0); 90 return sb.toString(); 91 } 92 93 public Object clone() throws CloneNotSupportedException { 94 sequencecolumnName tempClass = new sequencecolumnName(); 95 tempClass._sequenceindicators0 = (sequenceindicators) _sequenceindicators0.clone(); 96 tempClass._Speriod_9917261431 = (Speriod_991726143) _Speriod_9917261431.clone(); 97 tempClass._localorschemaqualifiedname2 = (localorschemaqualifiedname) _localorschemaqualifiedname2.clone(); 98 return tempClass; 99 } 100 101 public ParameterInfo[] getParameterInfo() throws DException { 102 ParameterInfo parameterInfo = new ParameterInfo(); 103 parameterInfo.setName(toString()); 104 parameterInfo.setDataType(Datatypes.LONG); 105 return new ParameterInfo[] {parameterInfo}; 106 } 107 108 public ColumnDetails[] getColumnDetails() throws DException { 109 if (columnDetails == null) { 110 ColumnDetails cd = new ColumnDetails(); 111 cd.setColumnName(getColumnName()); 112 cd.setType(CONSTANT); 113 cd.setDatatype(Datatypes.LONG); 114 columnDetails = new ColumnDetails[] {cd}; 115 cd.setTypeForSequence(SEQUENCETYPE); 116 } 117 return columnDetails; 118 } 119 120 public ByteComparison getByteComparison(Object object) throws DException { 121 return new ByteComparison(false,new int[]{Datatypes.LONG}); 122 } 123 } 124 | Popular Tags |