1 package com.daffodilwoods.daffodildb.server.sql99.dml; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.serversystem.*; 6 import com.daffodilwoods.daffodildb.server.sql99.common.*; 7 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 8 import com.daffodilwoods.daffodildb.server.sql99.expression.*; 9 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 10 import com.daffodilwoods.database.resource.*; 11 import com.daffodilwoods.database.utility.P; 12 import com.daffodilwoods.daffodildb.server.sql99.expression.expressionprimary.*; 13 14 public class setclauselist implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter { 15 public setclause[] _OptRepScomma94843605setclause0; 16 17 private Object result; 18 19 26 27 public Object run(Object object) throws com.daffodilwoods.database.resource.DException { 28 if (result != null) { 29 return result; 30 } 31 int length = _OptRepScomma94843605setclause0.length; 32 ArrayList arr = new ArrayList(length); 33 for (int i = 0; i < length; i++) { 34 Object [] columnExpression1 = (Object []) _OptRepScomma94843605setclause0[i].run(object); 35 arr.add(columnExpression1); 36 } 37 return result = (Object [][]) arr.toArray(new Object [length][]); 38 } 39 40 public ColumnDetails[] getColumnDetails(Object obj) throws DException { 41 Object [][] result = (Object [][]) run(obj); 42 ArrayList arrList = new ArrayList(); 43 for (int i = 0; i < result.length; i++) { 44 ColumnDetails[] cd = null; 45 if(result[i][1] instanceof valueexpression) 46 cd = ( (valueexpression) result[i][1]).getColumnDetails(); 47 else 48 cd = ( (subquery) result[i][1]).getColumnDetails(); 49 if (cd != null && cd.length > 0) { 50 arrList.addAll(Arrays.asList(cd)); 51 } 52 } 53 return arrList.size() > 0 ? (ColumnDetails[]) arrList.toArray(new ColumnDetails[0]) : null; 54 } 55 56 public ColumnDetails[] getLeftColumnDetails(Object obj) throws DException { 57 Object [][] result = (Object [][]) run(obj); 58 ArrayList arrList = new ArrayList(); 59 for (int i = 0; i < result.length; i++) { 60 if (result[i][0] instanceof ColumnDetails) { 61 arrList.add( (ColumnDetails) result[i][0]); 62 } 63 else { 64 Object [] cds = (Object [] )result[i][0]; 65 for (int j = 0; j < cds.length; j++) { 66 arrList.add( (ColumnDetails) cds[j]); 67 } 68 } 69 } 70 return (ColumnDetails[]) arrList.toArray(new ColumnDetails[0]); 71 } 72 73 79 80 public Object [] getParameters(Object object) throws DException { 81 int length = _OptRepScomma94843605setclause0.length; 82 ArrayList arr = new ArrayList(length); 83 for (int i = 0; i < length; i++) { 84 Object [] result = _OptRepScomma94843605setclause0[i].getParameters(object); 85 if (result != null) { 86 arr.addAll(Arrays.asList(result)); 87 } 88 } 89 return arr.size() > 0 ? arr.toArray(new Object [arr.size()]) : null; 90 } 91 92 97 98 public ParameterInfo[] getParameterInfo() throws DException { 99 int length = _OptRepScomma94843605setclause0.length; 100 ArrayList arr = new ArrayList(length); 101 ParameterInfo[] param; 102 for (int i = 0; i < length; i++) { 103 param = _OptRepScomma94843605setclause0[i].getParameterInfo(); 104 for (int j = 0; j < param.length; j++) { 105 param[j].setOrdinalPosition(i); 106 } 107 arr.addAll(Arrays.asList(param)); 108 } 109 return arr.size() > 0 ? (ParameterInfo[]) arr.toArray(new ParameterInfo[0]) : null; 110 } 111 112 117 118 123 124 public _Reference[] checkSemantic(_ServerSession serverSession) throws DException { 125 ArrayList arr = new ArrayList(); 126 int len = _OptRepScomma94843605setclause0.length; 127 _Reference[] refToReturn; 128 for (int i = 0; i < len; i++) { 129 refToReturn = _OptRepScomma94843605setclause0[i].checkSemantic(serverSession); 130 if (refToReturn != null) { 131 arr.addAll(Arrays.asList(refToReturn)); 132 } 133 } 134 return arr.size() > 0 ? (_Reference[]) arr.toArray(new _Reference[0]) : null; 135 } 136 137 public Object getReferenceIteratorMapping(TableDetails td, _ServerSession object) throws DException { 138 Object [][] refValue = (Object [][]) result; 139 int len = refValue.length; 140 ArrayList arr = new ArrayList(5); 141 for (int i = 0; i < len; i++) { 142 _Reference[] ref = null; 143 if(refValue[i][1] instanceof valueexpression) 144 ref =( (valueexpression) refValue[i][1]).getReferences(new TableDetails[] {td}); 145 else 146 ref =( (subquery) refValue[i][1]).getReferences(new TableDetails[] {td}); 147 if (ref != null) { 148 arr.addAll(Arrays.asList(ref)); 149 } 150 } 151 if (arr.size() > 0) { 152 _Reference[] references = (_Reference[]) arr.toArray(new _Reference[0]); 153 if (checkForSubQuery(references)) { 154 return getSubQueryIteratorMapping(references, object); 155 } 156 } 157 return null; 158 } 159 160 private Object initializeVariableValues(_Reference[] references, _ServerSession object) throws DException { 161 if (checkForSubQuery(references)) { 162 Object [][] subQueryIteratorMapping = getSubQueryIteratorMapping(references, object); 163 return new SubQueryVariableValues(null, subQueryIteratorMapping, object); 164 } 165 return null; 166 } 167 168 private boolean checkForSubQuery(_Reference[] references) throws DException { 169 if (references != null) { 170 int length = references.length; 171 for (int i = 0; i < length; i++) { 172 if (references[i].getReferenceType() == com.daffodilwoods.daffodildb.server.sql99.common.SimpleConstants.SUBQUERY) { 173 return true; 174 } 175 } 176 } 177 return false; 178 } 179 180 private Object [][] getSubQueryIteratorMapping(_Reference[] references, _ServerSession object) throws DException { 181 int length = references.length; 182 ArrayList aList = new ArrayList(length); 183 for (int i = 0; i < length; i++) { 184 if (references[i].getReferenceType() == com.daffodilwoods.daffodildb.server.sql99.common.SimpleConstants.SUBQUERY) { 185 _Iterator iterator = ( (com.daffodilwoods.daffodildb.server.sql99.expression.expressionprimary.subquery) references[i]).getSelectIterator(object); 186 aList.add(new Object [] {references[i], iterator}); } 188 } 189 return (Object [][]) aList.toArray(new Object [0][]); 190 } 191 192 public Object clone() throws CloneNotSupportedException { 193 return this; 194 } 195 196 public String toString() { 197 StringBuffer sb = new StringBuffer (); 198 sb.append(" "); 199 sb.append(_OptRepScomma94843605setclause0[0]); 200 for (int i = 1; i < _OptRepScomma94843605setclause0.length; i++) { 201 sb.append(",").append(_OptRepScomma94843605setclause0[i]); 202 } 203 return sb.toString(); 204 } 205 206 public void getTablesIncluded(ArrayList arrayList) throws DException { 207 if (_OptRepScomma94843605setclause0 != null) 208 for (int i = 0; i < _OptRepScomma94843605setclause0.length; i++) { 209 _OptRepScomma94843605setclause0[i].getTablesIncluded(arrayList); 210 } 211 } 212 } 213 | Popular Tags |