KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > expression > booleanvalueexpression > predicates > CharacterPredicate


1 package com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.predicates;
2
3 import com.daffodilwoods.daffodildb.server.sql99.common.*;
4 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
5 import com.daffodilwoods.daffodildb.server.sql99.expression.rowvalueexpression.*;
6 import com.daffodilwoods.daffodildb.server.sql99.expression.stringvalueexpression.*;
7 import com.daffodilwoods.daffodildb.utils.field.*;
8 import com.daffodilwoods.database.resource.*;
9
10 /**
11  * <p>Title: </p>
12  * <p>Description: </p>
13  * <p>Copyright: Copyright (c) 2003</p>
14  * <p>Company: </p>
15  * @author unascribed
16  * @version 1.0
17  */

18
19 public class CharacterPredicate extends PredicateAbstract implements predicate, OperatorConstants, _ComparisonPredicate {
20
21    private charactervalueexpression leftMatchValue;
22    private int operatorType;
23    private FieldBase rightPattern;
24
25    public CharacterPredicate(charactervalueexpression leftMatchValue0, int operatorType0, FieldBase rightPattern0, ColumnDetails[] columns0) {
26       leftMatchValue = leftMatchValue0;
27       operatorType = operatorType0;
28       rightPattern = rightPattern0;
29       columnDetails = columns0;
30    }
31
32    public double getCost(long rowCount, boolean index) throws DException {
33       switch (operatorType) {
34          case LESSTHAN:
35             rowCount *= CostFactorConstants.GREATERTHAN / 100;
36          case GREATERTHANEQUALTO:
37             rowCount *= CostFactorConstants.GREATERTHANEQUALTO / 100;
38       }
39       if (index) {
40          rowCount *= CostFactorConstants.INDEXPREDICATE / 100;
41       }
42       return rowCount;
43    }
44
45    public long getEstimatedRows(long noOfRows) throws DException {
46       switch (operatorType) {
47          case LESSTHAN:
48             return noOfRows * CostFactorConstants.GREATERTHAN / 100;
49          case GREATERTHANEQUALTO:
50             return noOfRows * CostFactorConstants.GREATERTHANEQUALTO / 100;
51       }
52       return noOfRows;
53    }
54
55    public int getPredicateType() throws DException {
56       return operatorType;
57    }
58
59    public Object JavaDoc getValue() throws DException {
60       return rightPattern;
61    }
62
63    public Object JavaDoc run(Object JavaDoc object) throws com.daffodilwoods.database.resource.DException {
64       Object JavaDoc fieldBase1 = leftMatchValue.run(object);
65       int cmp = -1;
66       try {
67          cmp = comparator.compare(fieldBase1, rightPattern);
68       } catch (NullPointerException JavaDoc ex) {
69          comparator = getAppropriateComparator(fieldBase1, rightPattern, null);
70          cmp = comparator.compare(fieldBase1, rightPattern);
71       } catch (DException ex1) {
72          throw ex1;
73       }
74       return booleanResult[operatorType - 1][cmp + 2];
75    }
76
77    public AbstractRowValueExpression[] getChilds() {
78       AbstractRowValueExpression[] childs = new AbstractRowValueExpression[] { (AbstractRowValueExpression) (leftMatchValue)};
79       return childs;
80    }
81
82    public void setOperator(int Type) throws DException {
83       operatorType = Type;
84    }
85
86    public ColumnDetails[] getColumnDetails() throws DException {
87       return columnDetails;
88    }
89
90    public String JavaDoc toString() {
91       try {
92          return leftMatchValue + " " + getOperator(operatorType) + "'" + rightPattern.getObject() + "'";
93       } catch (DException ex) {
94          return null;
95       }
96    }
97
98    private String JavaDoc getOperator(int operatorType) {
99       switch (operatorType) {
100          case GREATERTHANEQUALTO:
101             return " >= ";
102          case LESSTHAN:
103             return " < ";
104       }
105       return operatorType + "";
106    }
107 }
108
Popular Tags