1 package com.daffodilwoods.daffodildb.server.sql99.expression.expressionprimary; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.sql99.common.*; 6 import com.daffodilwoods.daffodildb.server.sql99.expression.*; 7 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 8 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 9 import com.daffodilwoods.daffodildb.utils.field.*; 10 import com.daffodilwoods.database.resource.*; 11 import com.daffodilwoods.database.utility.P; 12 13 public class basicidentifierchain extends AbstractValueExpression implements columnreference, TypeConstants, Datatypes { 14 15 public identifierchain _basicidentifierchain0; 16 private boolean firstTime; 17 private ColumnDetails columnDetail; 18 19 public Object run(Object object) throws com.daffodilwoods.database.resource.DException { 20 21 _BaseVariableValues vValues = (_BaseVariableValues) object; 22 if (!firstTime) { 23 firstTime = true; 24 getColumnDetails(); 25 FieldBase fb = columnDetail.getType() == REFERENCE || columnDetail.getUnderLyingReference() ? (FieldBase) vValues.field(columnDetail) 26 : (FieldBase) columnDetail.run(vValues); 27 if (columnDetail.getType() == REFERENCE && (columnDetail.getDatatype() == CHAR || 28 columnDetail.getDatatype() == CHARACTER || columnDetail.getDatatype() == VARCHAR || 29 columnDetail.getDatatype() == CHARACTERVARYING || columnDetail.getDatatype() == CHARVARYING)) { 30 if (columnDetail.getTable() != null) { 31 fb.setCollator(columnDetail.getTable().getColumnCharacteristics().getCollator()); 32 } 33 } 34 return fb; 35 } 36 return columnDetail.getType() == REFERENCE || columnDetail.getUnderLyingReference() ? vValues.field(columnDetail) 37 : columnDetail.run(vValues); 38 } 39 40 48 public Object runNonSharable(Object object) throws DException { 49 _BaseVariableValues vValues = (_BaseVariableValues) object; 50 if (!firstTime) { 51 firstTime = true; 52 getColumnDetails(); 53 FieldBase fb = (FieldBase) vValues.getColumnValues(columnDetail); 54 if (columnDetail.getType() == REFERENCE && (columnDetail.getDatatype() == CHAR || 55 columnDetail.getDatatype() == CHARACTER || columnDetail.getDatatype() == VARCHAR || 56 columnDetail.getDatatype() == CHARACTERVARYING || columnDetail.getDatatype() == CHARVARYING)) { 57 if (columnDetail.getTable() != null) { 58 fb.setCollator(columnDetail.getTable().getColumnCharacteristics().getCollator()); 59 } 60 } 61 return fb; 62 } 63 return vValues.getColumnValues(columnDetail); 64 } 65 66 public ParameterInfo[] getParameterInfo() throws DException { 67 ParameterInfo parameterInfo = new ParameterInfo(); 68 parameterInfo.setName(columnDetail.getStringOfColumn()); 69 parameterInfo.setDataType(columnDetail.getDatatype()); 70 return new ParameterInfo[] {parameterInfo}; 71 } 72 73 public AbstractRowValueExpression[] getChilds() { 74 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] {}; 75 return childs; 76 } 77 78 public ColumnDetails[] getColumnDetails() throws DException { 79 if (columnDetails == null) { 80 columnDetail = new ColumnDetails(); 81 columnDetail.setType(REFERENCE); 82 columnDetail.setObject(this); String [] name1 = (String []) _basicidentifierchain0.run(null); 84 columnDetail.setColumnName(name1); 85 columnDetails = new ColumnDetails[] {columnDetail}; 86 } 87 return columnDetails; 88 } 89 90 public int getCardinality() throws DException { 91 return 1; 92 } 93 94 public _Reference[] getReferences(TableDetails[] tableDetails) throws DException { 95 if (columnDetail == null) { 96 getColumnDetails(); 97 } 98 if (columnDetail.checkSessionConditionFlag() || tableDetails == null || (columnDetail.getType() != REFERENCE && !columnDetail.getUnderLyingReference())) { 99 return null; 100 } 101 TableDetails td = columnDetail.getTable(); 102 if (td == null) { 103 return new _Reference[] {columnDetail}; 104 } 105 106 int i = 0, length = tableDetails.length; 107 for (; i < length; i++) { 108 if (tableDetails[i] == td) { 109 break; 110 } 111 } 112 _Reference[] ref = i == length ? new _Reference[] { (_Reference) columnDetail} 113 : null; 114 return ref; 115 } 116 117 public void getColumnsIncluded(ArrayList aList) throws DException { 118 if (columnDetail == null) { 119 columnDetail = getColumnDetails()[0]; 120 } 121 aList.add(columnDetail.getColumnName()); 122 } 123 124 130 public com.daffodilwoods.daffodildb.server.sql99.utils._Reference[] checkSemantic(com.daffodilwoods.daffodildb.server.serversystem._ServerSession parent) throws DException { 131 return null; 132 } 133 134 public String toString() { 135 StringBuffer sb = new StringBuffer (); 136 sb.append(" "); 137 sb.append(_basicidentifierchain0); 138 return sb.toString(); 139 } 140 141 public Object clone() throws CloneNotSupportedException { 142 try { 143 identifierchain Identifierchain = (identifierchain) _basicidentifierchain0.clone(); 144 basicidentifierchain Basicidentifierchain = new basicidentifierchain(); 145 Basicidentifierchain._basicidentifierchain0 = Identifierchain; 146 Basicidentifierchain.columnDetail = (ColumnDetails) getColumnDetails()[0].clone(); Basicidentifierchain.columnDetails = new ColumnDetails[] {Basicidentifierchain.columnDetail}; 148 return Basicidentifierchain; 149 } catch (Exception E) { 150 throw new RuntimeException ("EXCEPTION"); 151 } 152 } 153 154 public void getTablesIncluded(ArrayList aList) throws DException { 155 } 156 157 public ByteComparison getByteComparison(Object object) throws DException { 158 return columnDetail.canUseByteComparison() ? new ByteComparison(true, new int[] {columnDetail.getDatatype()}) 159 : new ByteComparison(false, new int[] {columnDetail.getDatatype()}); 160 } 161 162 public void releaseResource() throws DException { 163 164 } 165 166 } 167 | Popular Tags |