1 package com.daffodilwoods.daffodildb.server.sql99.expression. 2 stringvalueexpression; 3 4 import com.daffodilwoods.daffodildb.server.sql99.common.*; 5 import com.daffodilwoods.daffodildb.server.sql99.expression.*; 6 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 7 import com.daffodilwoods.daffodildb.server.sql99.token.*; 8 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 9 import com.daffodilwoods.daffodildb.utils.*; 10 import com.daffodilwoods.daffodildb.utils.field.*; 11 import com.daffodilwoods.database.resource.*; 12 13 public class concatenation extends AbstractValueExpression implements charactervalueexpression { 14 public characterfactor _characterfactor0; 15 public Sconcatenationoperator_247443092 _Sconcatenationoperator_2474430921; 16 public charactervalueexpression _charactervalueexpression2; 17 18 public Object run(Object object) throws com.daffodilwoods.database.resource. 19 DException { 20 21 FieldBase firstOperand = (FieldBase) _charactervalueexpression2.run(object); 22 FieldBase secondOperand = (FieldBase) _characterfactor0.run(object); 23 if (firstOperand.isNull() && secondOperand.isNull()) { 24 return new FieldStringLiteral(FieldUtility.NULLBUFFERRANGE, Datatypes.CHARACTER); 25 } 26 return firstOperand.isNull() ? new FieldStringLiteral(secondOperand.getObject().toString(), Datatypes.CHARACTER) 27 : secondOperand.isNull() ? new FieldStringLiteral(firstOperand.getObject().toString(), Datatypes.CHARACTER) : 28 new FieldStringLiteral( (new StringBuffer (firstOperand.getObject().toString()).append(secondOperand.getObject().toString()).toString()), Datatypes.CHARACTER); 29 30 } 31 32 public AbstractRowValueExpression[] getChilds() { 33 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { 34 (AbstractRowValueExpression) (_charactervalueexpression2), 35 (AbstractRowValueExpression) (_characterfactor0)}; 36 return childs; 37 } 38 39 public String toString() { 40 StringBuffer sb = new StringBuffer (); 41 sb.append(" "); 42 sb.append(_charactervalueexpression2); 43 sb.append(" "); 44 sb.append(_Sconcatenationoperator_2474430921); 45 sb.append(" "); 46 sb.append(_characterfactor0); 47 return sb.toString(); 48 } 49 50 public Object clone() throws CloneNotSupportedException { 51 concatenation tempClass = new concatenation(); 52 tempClass._characterfactor0 = (characterfactor) _characterfactor0.clone(); 53 tempClass._Sconcatenationoperator_2474430921 = ( 54 Sconcatenationoperator_247443092) _Sconcatenationoperator_2474430921. 55 clone(); 56 tempClass._charactervalueexpression2 = (charactervalueexpression) 57 _charactervalueexpression2.clone(); 58 return tempClass; 59 } 60 61 62 public ParameterInfo[] getParameterInfo() throws DException { 63 if (!checkForVariableColumn()) 64 return getThisParameterInfo(); 65 ParameterInfo[] parameterInfo1 = _charactervalueexpression2.getParameterInfo(); 66 ParameterInfo[] parameterInfo2 = _characterfactor0.getParameterInfo(); 67 ParameterInfo[] parameterInfo = new ParameterInfo[parameterInfo1.length + 68 parameterInfo2.length]; 69 70 int index = 0; 71 for (; index < parameterInfo1.length; ++index) 72 parameterInfo[index] = parameterInfo1[index]; 73 for (int i = 0; i < parameterInfo2.length; ++i, ++index) 74 parameterInfo[index] = parameterInfo2[i]; 75 return parameterInfo; 76 77 } 78 79 protected ParameterInfo[] getThisParameterInfo() throws DException { 80 ParameterInfo parameterInfo = new ParameterInfo(); 81 parameterInfo.setName(toString()); 82 parameterInfo.setDataType(Datatypes.CHARACTER); 83 84 85 return new ParameterInfo[] { 86 parameterInfo}; 87 } 88 89 public ByteComparison getByteComparison(Object objct) throws DException { 90 return new ByteComparison(false, new int[] {Datatypes.CHARACTER}); 91 } 92 93 private boolean checkForVariableColumn() throws DException { 94 for (int i = 0; i < columnDetails.length; ++i) { 95 if (columnDetails[i].getColumn().equals("?")) { 96 return true; 97 } 98 } 99 return false; 100 } 101 102 103 104 105 } 106 | Popular Tags |