KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > expression > expressionprimary > basicidentifierchain


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 JavaDoc run(Object JavaDoc 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    /**
41     * INcorprated as in Group By Clause we need to have nonSharable rows to
42     * compute group Effectively.
43     * Called thru groupingspecification
44     * @param object
45     * @return
46     * @throws DException
47     */

48    public Object JavaDoc runNonSharable(Object JavaDoc 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); // FOR UNDERLYING REFERENCES
83
String JavaDoc[] name1 = (String JavaDoc[]) _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    /**
125     * Returns null
126     * @param parent
127     * @return
128     * @throws DException
129     */

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 JavaDoc toString() {
135       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
136       sb.append(" ");
137       sb.append(_basicidentifierchain0);
138       return sb.toString();
139    }
140
141    public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
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.getColumnDetails()[0];
147
Basicidentifierchain.columnDetails = new ColumnDetails[] {Basicidentifierchain.columnDetail};
148          return Basicidentifierchain;
149       } catch (Exception JavaDoc E) {
150          throw new RuntimeException JavaDoc("EXCEPTION");
151       }
152    }
153
154    public void getTablesIncluded(ArrayList aList) throws DException {
155    }
156
157    public ByteComparison getByteComparison(Object JavaDoc 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