1 package com.daffodilwoods.daffodildb.server.sql99.ddl.schemamanipulation; 2 3 import java.util.*; 4 5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 6 import com.daffodilwoods.daffodildb.server.serversystem.*; 7 import com.daffodilwoods.daffodildb.server.sql99.ddl.descriptors.*; 8 import com.daffodilwoods.daffodildb.server.sql99.ddl.schemadefinition.*; 9 import com.daffodilwoods.daffodildb.server.sql99.ddl.utility.*; 10 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 11 import com.daffodilwoods.daffodildb.server.sql99.token.*; 12 import com.daffodilwoods.daffodildb.utils.*; 13 import com.daffodilwoods.database.general.*; 14 import com.daffodilwoods.database.resource.*; 15 16 public class adddomainconstraintdefinition implements alterdomainaction { 17 public domainconstraint _domainconstraint0; 18 public SRESERVEDWORD1206543922 _SRESERVEDWORD12065439221; 19 20 private DomainDescriptor domainDescriptor; 21 private ArrayList tableList; 22 public void setDomainDescriptor(_Descriptor domainDes) throws 23 DException { 24 domainDescriptor = (DomainDescriptor) domainDes; 25 } 26 27 public Object run(Object object) throws DException { 28 _ServerSession currentSession = (_ServerSession) object; 29 _ServerSession systemSession = currentSession.getSystemServerSession(); 30 _domainconstraint0.setDomainDescriptor(domainDescriptor); 31 _domainconstraint0.run(object); 32 checkConstraintValidity(currentSession); 33 refreshServerSystem(systemSession, domainDescriptor); 34 return null; 35 } 36 37 private void refreshServerSystem(_ServerSession systemSession, 38 DomainDescriptor domainDescriptor) throws 39 DException { 40 DataDictionary dd = (DataDictionary) systemSession.getDataDictionary(); 41 dd.removeCheckConstraintForDomain(domainDescriptor.getQualifiedIdentifier()); 42 if (tableList != null) { 43 for (int i = 0, size = tableList.size(); i < size; i++) { 44 QualifiedIdentifier tableName = (QualifiedIdentifier) tableList.get(i); 45 systemSession.deleteTable(tableName, false); 46 } 47 } 48 } 49 50 private void checkConstraintValidity(_ServerSession serverSession) throws 51 DException { 52 DomainConstraintDescriptor domainConstraintDescriptor = _domainconstraint0.getDomainConstraintDescriptor(); 53 String domainCheckQuery; 54 if (tableList != null) { 55 domainCheckQuery = domainConstraintDescriptor.checkConsDes.check_clause; 56 ArrayList columnsDesList = domainDescriptor.getColumnDescriptorsForDomain(serverSession); 57 if (columnsDesList != null && columnsDesList.size() > 0) { 58 for (int i = 0; i < columnsDesList.size(); i++) { 59 ColumnDescriptor colDes = (ColumnDescriptor) columnsDesList.get(i); 60 QualifiedIdentifier tableName = colDes.getQualifiedTableName(); 61 if (!tableList.contains(tableName)) 62 tableList.add(tableName); 63 StringBuffer checkQuery = new StringBuffer (); 64 checkQuery.append("select * from ") 65 .append(QuotedUtility.getUserIdentifier(colDes.table_catalog)) 66 .append(".").append(QuotedUtility.getUserIdentifier(colDes. 67 table_schema)) 68 .append(".").append(QuotedUtility.getUserIdentifier(colDes. 69 table_name)) 70 .append(" where not ( ") 71 .append(GeneralUtility.getReplacedCheckClause(colDes.column_name, domainCheckQuery)) 72 .append(" ) "); 73 _Iterator iter = SqlSchemaConstants.getIteratorOnCurrent(serverSession, 74 checkQuery.toString(), (Object [])null); 75 if (iter.first()) { 76 CheckConstraintDescriptor ccd = (CheckConstraintDescriptor) domainConstraintDescriptor.checkConsDes; 77 throw new DException("DSE7086", new Object [] {ccd.getQualifiedIdentifier().getIdentifier(), domainDescriptor.getQualifiedIdentifier().getIdentifier()}); 78 } 79 } 80 } 81 } 82 } 83 84 public Object clone() throws CloneNotSupportedException { 85 return this; 86 } 87 88 public String toString() { 89 StringBuffer sb = new StringBuffer (); 90 sb.append(" "); 91 sb.append(_SRESERVEDWORD12065439221); 92 sb.append(" "); 93 sb.append(_domainconstraint0); 94 return sb.toString(); 95 } 96 97 } 98 | Popular Tags |