1 package com.daffodilwoods.daffodildb.server.serversystem.dmlvalidation.constraintsystem; 2 3 import com.daffodilwoods.daffodildb.server.serversystem.*; 4 import com.daffodilwoods.database.general.*; 5 import com.daffodilwoods.database.resource.*; 6 7 13 public class ConstraintTable implements _ConstraintTable { 14 15 boolean deferrable; 16 public PrimaryAndUniqueConstraintVerifier primaryAndUniqueConstraintVerifier; 17 CheckConstraintsVerifier checkConstraintVerifier; 18 ReferencingConstraintsVerifier referencingConstraintsVerifier; 19 ReferencedConstraintsVerifier referencedConstraintsVerifier; 20 _ConstraintDatabase constraintDatabase; 21 private boolean hasDefferred = false; 22 private QualifiedIdentifier tableName; 23 24 39 public ConstraintTable(boolean deferrabl, PrimaryAndUniqueConstraintVerifier primaryAndUniqueVerifier, CheckConstraintsVerifier cConstraintVerifier, ReferencingConstraintsVerifier referencingVerifier, ReferencedConstraintsVerifier referencedVerifier, _ConstraintDatabase constrantDatabase, boolean hasDeff, QualifiedIdentifier tabName) throws DException { 40 deferrable = deferrabl; 41 primaryAndUniqueConstraintVerifier = primaryAndUniqueVerifier; 42 checkConstraintVerifier = cConstraintVerifier; 43 referencedConstraintsVerifier = referencedVerifier; 44 referencingConstraintsVerifier = referencingVerifier; 45 constraintDatabase = constrantDatabase; 46 hasDefferred = hasDeff; 47 tableName = tabName; 48 } 49 50 56 57 public _ConstraintTable getConstraintTable(QualifiedIdentifier tableName) throws DException { 58 return constraintDatabase.getConstraintTable(tableName); 59 } 60 61 66 67 public boolean hasDefferred() throws DException { 68 return hasDefferred; 69 } 70 71 77 78 public void checkDeleteConstraints(_ServerSession globalSession, _StatementExecutionContext statementExecutionContext) throws DException { 79 referencedConstraintsVerifier.verifyReferencedConstraintsForDelete(globalSession, statementExecutionContext); 80 } 81 82 90 91 public void checkUpdateConstraints(_ServerSession globalSession, _StatementExecutionContext statementExecutionContext, int[] columns) throws ConstraintException, DException { 92 checkConstraintVerifier.verifyCheckConstraintsForUpdate(columns, statementExecutionContext, globalSession); 93 primaryAndUniqueConstraintVerifier.verifyPrimaryConstraintsForUpdate(columns, statementExecutionContext, globalSession); 94 primaryAndUniqueConstraintVerifier.verifyUniqueConstraintsForUpdate(columns, statementExecutionContext, globalSession); 95 referencingConstraintsVerifier.verifyReferencingConstraintsForUpdate(columns, globalSession, statementExecutionContext); 96 referencedConstraintsVerifier.verifyReferencedConstraintsForUpdate(columns, globalSession, statementExecutionContext); 97 } 98 99 107 108 public void checkInsertConstraints(_ServerSession globalSession, _StatementExecutionContext statementExecutionContext, int[] columns) throws ConstraintException, DException { 109 try { 110 checkConstraintVerifier.verifyCheckConstraints(statementExecutionContext, globalSession); 111 } catch (DException ex) { 112 if (ex.getDseCode().equalsIgnoreCase("DSE1251")) { 113 Object [] parameters = ex.getParameters(); 114 parameters[0] = "INSERT"; 115 ex.setParameters(parameters); 116 throw new DException("DSE1251", parameters); 117 } 118 throw ex; 119 } 120 primaryAndUniqueConstraintVerifier.verifyUniqueConstraints(columns, statementExecutionContext, globalSession); 121 primaryAndUniqueConstraintVerifier.verifyPrimaryConstraints(columns, statementExecutionContext, globalSession); 122 referencingConstraintsVerifier.verifyReferencingConstraints(columns, globalSession, statementExecutionContext); 123 } 124 125 131 132 public boolean isDeferredType() throws DException { 133 return deferrable; 134 } 135 136 public String toString() { 137 return " XXXXXXXXXXXXXYYYYYYYYYYYYYYZZZZZZZZZZZZ " + referencingConstraintsVerifier.toString(); 138 } 139 } 140 | Popular Tags |