KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > serversystem > dmlvalidation > constraintsystem > ReferencingExecuter


1 package com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem;
2
3 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
4 import com.daffodilwoods.daffodildb.server.datasystem.utility.*;
5 import com.daffodilwoods.daffodildb.server.datasystem.utility._Record;
6 import com.daffodilwoods.daffodildb.server.serversystem.*;
7 import com.daffodilwoods.daffodildb.server.sql99.common.*;
8 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*;
9 import com.daffodilwoods.daffodildb.server.sql99.expression.booleanvalueexpression.*;
10 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
11 import com.daffodilwoods.database.general.*;
12 import com.daffodilwoods.database.resource.*;
13 import com.daffodilwoods.database.utility.*;
14 import com.daffodilwoods.daffodildb.server.sessionsystem.RowIdSessionIterator;
15 import com.daffodilwoods.daffodildb.utils.comparator.CKpjoDpnqbsbups;
16 import com.daffodilwoods.database.resource.DException;
17 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator;
18
19 /**
20  * This abstract class provides the basic functionality needed for firing
21  * referencing constraints according to the Match Option [ Simple , Partial
22  * and Full ] specified. Depending on the match option, instances of
23  * appropriate executers are created which are further used for actually firing
24  * the referencing constraints.
25  * This class has two abstract functions which are overriden to implement the
26  * required feature for each match option.
27  */

28
29 public abstract class ReferencingExecuter {
30
31   _Iterator iterator;
32   booleanvalueexpression condition;
33   _ReferentialConstraint referencingConstraint ;
34   int[] referencedColumns;
35   int[] referencingColumns;
36   TableDetails tableDetails;
37   CKpjoDpnqbsbups superComp;
38
39 public ReferencingExecuter(SuperComparator[] superComp0) throws DException{
40   superComp = new CKpjoDpnqbsbups(superComp0);
41
42 }
43
44   /**
45    * This class is used to check referencing conmstraints when foreign
46    * constraint is specified with match option as PARTIAL.
47    * @param bve referencing condition
48    * @param values values to be checked
49    * @throws DException
50    */

51
52   public void checkReferentialConstraints( booleanvalueexpression bve , Object JavaDoc[] values ) throws DException {
53        QualifiedIdentifier referencedTable = referencingConstraint.getReferencedTable();
54        if( !iterator.first() ) {
55           ForeignConstraintException fce = new ForeignConstraintException("DSE382",new Object JavaDoc[] {referencingConstraint.getConstraintName(),referencedTable.getName()});
56           fce.setForeignExceptionBoolean(true);
57           fce.setConstraintName( referencingConstraint.getQualifiedIdentifier().getName());
58           fce.setForeignKeyValues( referencingConstraint.getReferencingTable() , referencingConstraint.getReferencedTable() , referencingColumns );
59           fce.printStackTrace();
60           throw fce;
61        }
62   }
63
64   /**
65    * This class is used to check referencing conmstraints when foreign
66    * constraint is specified with match option as PARTIAL.
67    * @param values
68    * @throws DException
69    */

70   public void checkReferentialConstraints( Object JavaDoc[] values ) throws DException {
71     QualifiedIdentifier referencedTable = referencingConstraint.getReferencedTable();
72      RowIdSessionIterator rsi = (RowIdSessionIterator )iterator;
73      try{
74
75         rsi.seekForReferencing(values,referencingConstraint.getReferencedColumns(),referencingConstraint.getConstraintName(),referencedTable.getName(),superComp );
76      }catch(ForeignConstraintException fce) {
77         fce.setForeignExceptionBoolean(true);
78         fce.setConstraintName( referencingConstraint.getQualifiedIdentifier().getName());
79         fce.setForeignKeyValues( referencingConstraint.getReferencingTable() , referencingConstraint.getReferencedTable() , referencingColumns );
80         throw fce;
81      }
82   }
83
84   /**
85    * Returns the references for passed object array.
86    * @param obj
87    * @return
88    * @throws DException
89    */

90   public _Reference[] getReferences(Object JavaDoc[] obj) throws DException {
91         int len = obj.length;
92         _Reference[] ref = new _Reference[len] ;
93         for( int i=0; i<len; i++ )
94            ref[i] = (_Reference)obj[i] ;
95         return ref;
96   }
97
98   public abstract void checkReferencingConstraints( RecordVersion recordVersion , _ServerSession globalSess ) throws DException ;
99   public abstract Object JavaDoc[] setParameterValues( _Record record ) throws DException ;
100
101 }
102
Popular Tags