KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > sql99 > common > ConditionArray


1 package com.daffodilwoods.daffodildb.server.sql99.common;
2
3 import com.daffodilwoods.daffodildb.server.sql99.expression.
4     booleanvalueexpression.*;
5 import com.daffodilwoods.daffodildb.server.sql99.common.TypeConstants;
6 import java.util.ArrayList JavaDoc;
7 import com.daffodilwoods.database.resource.DException;
8
9 /**
10  * The Class is used to store the COnditions so that they can change the Type of
11  * QualifiedJoin
12  * Required so that tableDetails obtained are updated after viewColumn Updating
13  * <p>Title: </p>
14  * <p>Description: </p>
15  * <p>Copyright: Copyright (c) 2003</p>
16  * <p>Company: </p>
17  * @author unascribed
18  * @version 1.0
19  */

20 public class ConditionArray
21     implements TypeConstants {
22
23   public ArrayList JavaDoc conditionArray;
24   public ConditionArray() {
25     conditionArray = new ArrayList JavaDoc();
26   }
27
28   public ConditionArray(ArrayList JavaDoc conditionArray) {
29     this.conditionArray = conditionArray;
30   }
31
32   public void addCondition(booleanvalueexpression condition) throws DException {
33     conditionArray.add(condition);
34   }
35
36   /**
37    * Returns Unique List of TableDetails involved in the Condition
38    * @return
39    * @throws DException
40    */

41   public TableDetails[] getTableDetails() throws DException {
42     ArrayList JavaDoc tableDetails = new ArrayList JavaDoc();
43     for (int i = 0, size = conditionArray.size(); i < size; i++) {
44       ColumnDetails[] cds = ( (booleanvalueexpression) conditionArray.get(i)).
45           getColumnDetails();
46       TableDetails[] tds = getTableDetailsOfRefernceType(cds);
47       for (int j = 0; j < tds.length; j++) {
48         if (!tableDetails.contains(tds[j])) {
49           tableDetails.add(tds[j]);
50         }
51       }
52     }
53     return (TableDetails[]) tableDetails.toArray(new TableDetails[tableDetails.
54                                                  size()]);
55   }
56
57   /**
58    * Returns Unique List of TableDetails involved in the Condition for condition other than null predicate.
59    * @return
60    * @throws DException
61    */

62   public TableDetails[] getTableDetails(TableDetails[] leftTableDetails) throws
63       DException {
64     ArrayList JavaDoc tableDetails = new ArrayList JavaDoc();
65     for (int i = 0, size = conditionArray.size(); i < size; i++) {
66       booleanvalueexpression cond = (booleanvalueexpression) conditionArray.get(
67           i);
68       ColumnDetails[] cds = cond.getColumnDetails();
69       TableDetails[] tds = getTableDetailsOfRefernceType(cds);
70       if (cond.isNullPredicate() && containsTD(leftTableDetails, tds)) {
71         continue;
72       }
73       for (int j = 0; j < tds.length; j++) {
74         if (!tableDetails.contains(tds[j])) {
75           tableDetails.add(tds[j]);
76         }
77       }
78     }
79     return tableDetails.isEmpty() ? null :
80         (TableDetails[]) tableDetails.toArray(new TableDetails[tableDetails.
81                                               size()]);
82   }
83
84   private boolean containsTD(TableDetails[] scope, TableDetails[] target) throws
85       DException {
86     if (scope == null || target == null) {
87       return false;
88     }
89     for (int i = 0; i < scope.length; i++) {
90       for (int j = 0; j < target.length; j++) {
91         if (target[j] == scope[i]) {
92           return true;
93         }
94       }
95     }
96     return false;
97   }
98
99   public String JavaDoc toString() {
100     return conditionArray.toString();
101   }
102
103   public TableDetails[] getTableDetailsOfRefernceType(ColumnDetails[]
104       columnDetails) throws DException {
105     ArrayList JavaDoc aList = new ArrayList JavaDoc(5);
106     for (int i = 0; i < columnDetails.length; i++) {
107       if (columnDetails[i].getType() == REFERENCE) {
108         TableDetails table = columnDetails[i].getTableDetails();
109         if (!aList.contains(table))
110           aList.add(table);
111       }
112     }
113     return (TableDetails[]) aList.toArray(new TableDetails[aList.size()]);
114   }
115
116   public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
117     ConditionArray array = new ConditionArray( (ArrayList JavaDoc) conditionArray.clone());
118     return array;
119   }
120
121 }
122
Popular Tags