KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > dql > execution > DatedCondition


1 package com.daffodilwoods.daffodildb.server.sql99.dql.execution;
2
3 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.*;
4 import com.daffodilwoods.daffodildb.server.serversystem.*;
5 import com.daffodilwoods.daffodildb.server.sql99.common.*;
6 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
7 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.condition.*;
8 import com.daffodilwoods.daffodildb.server.sql99.dql.plan.table.*;
9 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
10 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.predicates.*;
11 import com.daffodilwoods.daffodildb.server.sql99.expression.datetimevalueexpression.*;
12 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*;
13 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
14 import com.daffodilwoods.database.resource.*;
15 import com.daffodilwoods.database.sqlinitiator.*;
16
17 /**
18  * It represents the condition for dated framework. Dated condition is
19  * 'to > datevalueexpression1' or 'from < datevalueexpression2' where 'to' and
20  * 'from' are the columns of dated table.
21  * <p>Title: </p>
22  * <p>Description: </p>
23  * <p>Copyright: Copyright (c) 2003</p>
24  * <p>Company: </p>
25  * @author unascribed
26  * @version 1.0
27  */

28
29 public class DatedCondition extends AbstractBooleanValueExpression implements booleanvalueexpression, predicate, OperatorConstants {
30
31    /**
32     * Represents the operator of the condition.
33     */

34
35    private int Operator = -1;
36
37    /**
38     * Represents the columns for dated table. It can be either 'to' or 'from'
39     */

40
41    private ColumnDetails cd;
42
43    /**
44     * Represents the datetime expression.
45     */

46
47    private datetimevalueexpression dateTimeExpression;
48
49    public DatedCondition(int Operator0, String JavaDoc colName, datetimevalueexpression dateTimeExpression0) throws DException {
50       Operator = Operator0;
51       cd = new ColumnDetails();
52       cd.setColumnName(new String JavaDoc[] {colName});
53       cd.setType(TypeConstants.REFERENCE);
54       dateTimeExpression = dateTimeExpression0;
55    }
56
57    /**
58     * Used to get the operator type of condition.
59     * @return
60     * @throws com.daffodilwoods.database.resource.DException
61     */

62
63    public int getPredicateType() throws com.daffodilwoods.database.resource.DException {
64       return Operator;
65    }
66
67    /**
68     * It is required by top level condition class to get a plan of condition.
69     * @param allColumnPredicates
70     * @throws com.daffodilwoods.database.resource.DException
71     */

72
73    public void setColumnPredicates(_AllColumnPredicates allColumnPredicates) throws com.daffodilwoods.database.resource.DException {
74       SingleColumnPredicate singleColumnPredicate = new SingleColumnPredicate();
75       singleColumnPredicate.setPredicate(this);
76       singleColumnPredicate.setColumnName(cd.getAppropriateColumn());
77       allColumnPredicates.addSinglePredicate(new SingleColumnPredicate[] {singleColumnPredicate});
78    }
79
80    /**
81     * It is required to get the result of the condition.
82     * @param object
83     * @return
84     * @throws DException
85     */

86
87    public Object JavaDoc run(Object JavaDoc object) throws DException {
88       Object JavaDoc oper1 = ( (_VariableValues) object).getColumnValues(cd);
89       Object JavaDoc oper2 = dateTimeExpression.run(object);
90       int cmp = Check.getObject(oper1, oper2);
91       return booleanResult[Operator - 1][cmp + 2];
92
93    }
94
95    public String JavaDoc toString() {
96       String JavaDoc a = Operator == OperatorConstants.GREATERTHAN ? " > " : " < ";
97       String JavaDoc str = cd.getColumn() + a + dateTimeExpression;
98       return str;
99    }
100
101    /**
102     * This method is needed by the abstract class to get all conditions. It is
103     * required to implement common methods in that abstract class.
104     * @return list of conditions
105     */

106
107    public AbstractRowValueExpression[] getChilds() {
108       AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] {};
109       return childs;
110    }
111
112    /**
113     * Returns the estimated number of rows which are expected after solving the
114     * condition on passed number of rows.
115     * @param noOfRows
116     * @return
117     * @throws DException
118     */

119
120    public long getEstimatedRows(long noOfRows) throws DException {
121       switch (Operator) {
122          case EQUALTO:
123             return noOfRows * CostFactorConstants.EQUALTO / 100;
124          case GREATERTHAN:
125          case LESSTHAN:
126             return noOfRows * CostFactorConstants.GREATERTHAN / 100;
127          case GREATERTHANEQUALTO:
128          case LESSTHANEQUALTO:
129             return noOfRows * CostFactorConstants.GREATERTHANEQUALTO / 100;
130       }
131       return noOfRows;
132    }
133 }
134
Popular Tags