1 package com.daffodilwoods.daffodildb.server.sql99.expression.stringvalueexpression; 2 3 import com.daffodilwoods.daffodildb.server.sql99.common.*; 4 import com.daffodilwoods.daffodildb.server.sql99.expression.*; 5 import com.daffodilwoods.daffodildb.server.sql99.utils.*; 6 import com.daffodilwoods.database.resource.*; 7 8 public abstract class AbstractStringValueExpression extends AbstractValueExpression implements stringvalueexpression, _sortspecificationAndselectSubList, Datatypes, TypeConstants { 9 10 protected ColumnDetails column; 11 public ColumnDetails[] getColumnDetails() throws DException { 12 initializeChildren(); 13 int len = childs.length; 14 column = new ColumnDetails(); 15 String type = getType(); StringBuffer str = new StringBuffer (); str.append(type); 18 str.append("("); 19 ColumnDetails[][] cds = new ColumnDetails[len][]; 20 String [] namesOfColumn = new String [len]; 21 for (int i = 0; i < childs.length; i++) { 22 cds[i] = childs[i].getColumnDetails(); 23 namesOfColumn[i] = getNameOfColumn(cds[i]); 24 this.columnDetails = StaticClass.mergeColumnDetails(this.columnDetails, cds[i]); 25 str.append(namesOfColumn[i]); 26 str.append(","); 27 } 28 str.deleteCharAt(str.length() - 1); 29 str.append(")"); 30 31 column.setFunctionType(type); 32 column.setType(SCALARFUNCTION); 33 column.setColumnName(new String [] {str.toString()}); 34 column.setObject(this); 35 return new ColumnDetails[] {column}; 36 } 37 38 public abstract String getType() throws DException; 40 protected String getNameOfColumn(ColumnDetails[] columnDetails) throws DException { 41 String nameOfColumn = ""; 42 for (int i = 0; i < columnDetails.length; ++i) { 43 nameOfColumn += columnDetails[i].getColumn(); 44 } 45 return nameOfColumn; 46 } 47 48 public Object run(Object object) throws com.daffodilwoods.database.resource.DException { 49 50 throw new java.lang.UnsupportedOperationException ("Method run() not yet implemented."); 51 } 52 53 public ColumnDetails[] getChildColumnDetails() throws DException { 54 55 throw new java.lang.UnsupportedOperationException ("Method getChildColumnDetails() not yet implemented."); 56 } 57 58 public ByteComparison getByteComparison(Object object) throws DException { 59 ByteComparison byteComparison =new ByteComparison(false, new int[] {Datatypes.CHARACTER}); 60 byteComparison.setSize(getColumnSize(object)); 61 return new ByteComparison(false, new int[] {Datatypes.CHARACTER}); 62 } 63 64 public abstract int getColumnSize(Object object) throws DException; 65 66 public void releaseResource() throws DException { 67 68 } 69 public int getCardinality() throws DException { 70 71 return 1; 72 } 73 74 75 76 } 77 | Popular Tags |