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 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 51 52 public void checkReferentialConstraints( booleanvalueexpression bve , Object [] values ) throws DException { 53 QualifiedIdentifier referencedTable = referencingConstraint.getReferencedTable(); 54 if( !iterator.first() ) { 55 ForeignConstraintException fce = new ForeignConstraintException("DSE382",new Object [] {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 70 public void checkReferentialConstraints( Object [] 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 90 public _Reference[] getReferences(Object [] 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 [] setParameterValues( _Record record ) throws DException ; 100 101 } 102 | Popular Tags |