1 package com.daffodilwoods.daffodildb.server.sql99.expression.stringvalueexpression; 2 import com.daffodilwoods.database.resource.*; 3 import com.daffodilwoods.daffodildb.server.sql99.token.*; 4 import com.daffodilwoods.daffodildb.server.sql99.common.ColumnDetails; 5 import com.daffodilwoods.daffodildb.server.sql99.utils.ByteComparison; 6 import com.daffodilwoods.daffodildb.server.sql99.utils._Reference; 7 import com.daffodilwoods.daffodildb.server.serversystem._ServerSession; 8 import com.daffodilwoods.daffodildb.server.sql99.common.ParameterInfo; 9 import com.daffodilwoods.daffodildb.server.sql99.expression.numericvalueexpression.*; 10 import com.daffodilwoods.daffodildb.server.sql99.common.*; 11 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*; 12 import in.co.daffodil.db.jdbc.*; 13 import com.daffodilwoods.daffodildb.utils.field.*; 14 import com.daffodilwoods.daffodildb.utils.*; 15 import java.util.*; 16 17 public class dumpfunction extends AbstractStringValueExpression implements com.daffodilwoods.daffodildb.utils.parser.StatementExecuter ,charactervaluefunction { 18 19 public Srightparen_1874859514 _Srightparen_18748595140 ; 20 public numericvalueexpression _OptScomma94843605numericvalueexpression1 ; 21 public numericvalueexpression _OptScomma94843605numericvalueexpression2 ; 22 public numericvalueexpression _OptScomma94843605numericvalueexpression3 ; 23 public charactervalueexpression _charactervalueexpression4 ; 24 public Sleftparen653880241 _Sleftparen6538802415 ; 25 public SNONRESERVEDWORD136444255 _SNONRESERVEDWORD1364442556 ; 26 27 28 54 private int type1,type2; 55 56 public Object run(Object object) throws DException{ 57 58 FieldBase result = (FieldBase) _charactervalueexpression4.run(object); 59 if(result.isNull()){ 60 new FieldStringLiteral(FieldUtility.NULLBUFFERRANGE, CHARACTER); 61 } 62 FieldBase fromat = null; 63 if(_OptScomma94843605numericvalueexpression3!=null){ 64 fromat =(FieldBase)_OptScomma94843605numericvalueexpression3.run(object); 65 type2 = getDataType(fromat); 66 } 67 type1 = getDataType(result); 68 69 if(_OptScomma94843605numericvalueexpression2!=null){ 70 throw new DException("DSE22", new Object [] {"to specify start_position in DUMP function "}); 71 } 72 if(_OptScomma94843605numericvalueexpression1!=null){ 73 throw new DException("DSE22", new Object [] {"to specify length in DUMP function "}); 74 } 75 int SQLType =in.co.daffodil.db.jdbc.Utilities.getCorrespondingSqlTypeOfDatabaseType(type1); 76 return getResult(result,fromat,type1,type2,SQLType); 77 } 78 79 80 private String getDump(Object object,int dataType) throws DException { 81 if (object == null) return null; 83 String str = object.toString(); 84 if (str.length() == 0) { return null; 86 } 87 int length=str.length(), bytes; 88 StringBuffer toreturn = new StringBuffer (); 89 toreturn.append("Typ="); 90 toreturn.append(""+dataType); 91 toreturn.append(" Len= "); 92 toreturn.append(""+length+" :"); 93 for (int i = 0; i <length; i++) { 94 bytes = ((int) str.charAt(i) ) ; 95 toreturn.append(""+bytes); 96 if(i+1 != length ) 97 toreturn.append(" , "); 98 } 99 return toreturn.toString(); 100 } 101 102 103 104 public ParameterInfo[] getParameterInfo() throws DException { 105 114 return new ParameterInfo[0]; 115 } 116 117 protected ParameterInfo[] getThisParameterInfo() throws DException { 118 ParameterInfo parameterInfo = new ParameterInfo(); 119 parameterInfo.setName(toString()); 120 parameterInfo.setDataType(Datatypes.CHARACTER); 121 return new ParameterInfo[] {parameterInfo}; 122 } 123 124 125 public ColumnDetails[] getChildColumnDetails() throws DException { 126 return columnDetails; 127 } 128 129 protected String getNameOfColumn(ColumnDetails[] columnDetails) throws 130 DException { 131 String nameOfColumn = ""; 132 for (int i = 0; i < columnDetails.length; ++i) { 133 nameOfColumn += columnDetails[i].getColumn(); 134 } 135 return nameOfColumn; 136 } 137 138 139 private Object getResult(FieldBase result,FieldBase return_format,int type1,int type2,int SQLType) throws DException { 140 int return_formats=0; 141 boolean formatNotDefined=false; 142 Object object = result.getObject(); 143 if(return_format!=null&&!return_format.isNull()) { 144 try { 145 return_formats = ( (Number ) return_format.getObject()).intValue(); 146 } 147 catch (DException ex) { 148 throw new DException("DSE4108", new Object [] {StaticClass.getDataTypeName(type1), "DUMP"}); 149 } 150 151 } else { 152 formatNotDefined =true; 153 } 154 155 switch (type1) { 156 case BYTE: 157 case TINYINT: 158 case INTEGER: 159 case INT: 160 case REAL: 161 case DOUBLE: 162 case FLOAT: 163 case DOUBLEPRECISION: 164 case LONG: 165 case BIGINT: 166 case SHORT: 167 case SMALLINT: 168 case BIGDECIMAL: 169 case DEC: 170 case DECIMAL: 171 case NUMERIC: 172 case CHARACTER: 173 case VARCHAR: 174 case CHAR: 175 case CHARACTERVARYING: 176 if(return_formats==10 || formatNotDefined ) { 177 return new FieldStringLiteral(getDump(object, SQLType), 178 Datatypes.CHARACTER); 179 } 180 throw new DException("DSE4110", new Object [] {new Integer (return_formats), "DUMP"}); 181 default : 182 throw new DException("DSE4108", new Object [] {StaticClass.getDataTypeName(type1), "DUMP"}); 183 } 184 } 185 186 187 public AbstractRowValueExpression[] getChilds() { 188 ArrayList list =new ArrayList(); 189 list.add((AbstractRowValueExpression) (_charactervalueexpression4)); 190 if(_OptScomma94843605numericvalueexpression3 != null ) { 191 list.add((AbstractRowValueExpression)_OptScomma94843605numericvalueexpression3); 192 } 193 if(_OptScomma94843605numericvalueexpression2 != null ) { 194 list.add((AbstractRowValueExpression)_OptScomma94843605numericvalueexpression2); 195 } 196 if(_OptScomma94843605numericvalueexpression1 != null ) { 197 list.add((AbstractRowValueExpression)_OptScomma94843605numericvalueexpression1); 198 } 199 AbstractRowValueExpression[] childs = new AbstractRowValueExpression[list.size()] ; 200 list.toArray(childs); 201 return childs; 202 } 203 204 205 206 public String toString() { 207 StringBuffer sb = new StringBuffer (); 208 sb.append(" "); 209 sb.append(_SNONRESERVEDWORD1364442556); 210 sb.append(" "); 211 sb.append(_Sleftparen6538802415); 212 sb.append(" "); 213 sb.append(_charactervalueexpression4); 214 sb.append(" "); 215 if(_OptScomma94843605numericvalueexpression3 != null ) { 216 sb.append(_OptScomma94843605numericvalueexpression3); 217 } 218 sb.append(" "); 219 if(_OptScomma94843605numericvalueexpression2 != null ) { 220 sb.append(_OptScomma94843605numericvalueexpression2); 221 } 222 sb.append(" "); 223 if(_OptScomma94843605numericvalueexpression1 != null ) { 224 sb.append(_OptScomma94843605numericvalueexpression1); 225 } 226 sb.append(" "); 227 sb.append(_Srightparen_18748595140); 228 return sb.toString(); 229 } 230 231 public Object clone() throws CloneNotSupportedException { 232 dumpfunction tempClass = new dumpfunction(); 233 tempClass._Srightparen_18748595140 = (Srightparen_1874859514) 234 _Srightparen_18748595140.clone(); 235 tempClass._charactervalueexpression4 = (charactervalueexpression) 236 _charactervalueexpression4.clone(); 237 if(_OptScomma94843605numericvalueexpression1!=null) 238 tempClass._OptScomma94843605numericvalueexpression1 = (numericvalueexpression)_OptScomma94843605numericvalueexpression1.clone(); 239 if(_OptScomma94843605numericvalueexpression2!=null) 240 tempClass._OptScomma94843605numericvalueexpression2 = (numericvalueexpression)_OptScomma94843605numericvalueexpression2.clone(); 241 if(_OptScomma94843605numericvalueexpression3!=null) 242 tempClass._OptScomma94843605numericvalueexpression3 = (numericvalueexpression)_OptScomma94843605numericvalueexpression3.clone(); 243 tempClass._Sleftparen6538802415 = (Sleftparen653880241) 244 _Sleftparen6538802415.clone(); 245 tempClass._SNONRESERVEDWORD1364442556 = (SNONRESERVEDWORD136444255) 246 _SNONRESERVEDWORD1364442556.clone(); 247 return tempClass; 248 } 249 250 public ByteComparison getByteComparison(Object object) throws DException { 251 ByteComparison byteComparison =new ByteComparison(false, new int[] {Datatypes.CHARACTER}); 252 int columnSize=getColumnSize(object); 253 byteComparison.setSize(columnSize); 254 return byteComparison; 255 } 256 257 258 public _Reference[] checkSemantic(_ServerSession parent) throws DException { 259 _Reference[] ref = super.checkSemantic(parent); 260 if(ref!=null) { 261 return ref; 262 } 263 int type = _charactervalueexpression4.getByteComparison(parent).getDataTypes()[0]; 264 switch (type) { 265 case -1: 266 case BYTE: 267 case TINYINT: 268 case INTEGER: 269 case INT: 270 case REAL: 271 case DOUBLE: 272 case FLOAT: 273 case DOUBLEPRECISION: 274 case LONG: 275 case BIGINT: 276 case SHORT: 277 case SMALLINT: 278 case BIGDECIMAL: 279 case DEC: 280 case DECIMAL: 281 case NUMERIC: 282 case CHARACTER: 283 case VARCHAR: 284 case CHAR: 285 case CHARACTERVARYING: 286 return ref; 287 default: 288 throw new DException("DSE4108", new Object [] {StaticClass.getDataTypeName(type), "LCASE"}); 289 } 290 291 } 292 293 public int getColumnSize(Object object) throws DException { 294 ColumnDetails[] columnDetails = getChildColumnDetails(); 295 if (columnDetails[0].getQuestion()) { 296 return DatabaseProperties.maxCharLiteralLength; 297 } 298 else if (columnDetails[0].getType() != TypeConstants.CONSTANT || 299 columnDetails[0].getSize() != -5) { 300 return columnDetails[0].getSize(); 301 } else { 302 FieldBase field = (FieldBase) _charactervalueexpression4.run(object); 303 field.setDatatype(columnDetails[0].getDatatype()); 304 return field.getLength(); 305 } 306 307 } 308 309 314 public String getType()throws DException { 315 return (String ) _SNONRESERVEDWORD1364442556.run(null); 316 } 317 318 } 319 | Popular Tags |