001: /*
002:
003: Derby - Class org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.sql.dictionary;
023:
024: import org.apache.derby.iapi.error.StandardException;
025:
026: import org.apache.derby.catalog.UUID;
027: import org.apache.derby.iapi.services.sanity.SanityManager;
028:
029: /**
030: * This interface is used to get information from a KeyConstraintDescriptor.
031: * A KeyConstraintDescriptor can represent a primary/unique/foreign key
032: * constraint.
033: *
034: * @version 0.1
035: * @author Jerry Brenner
036: */
037:
038: public abstract class KeyConstraintDescriptor extends
039: ConstraintDescriptor {
040: /** interface to this class:
041: <ol>
042: <li>public UUID getIndexId();</li>
043: <li>public ConglomerateDescriptor getIndexConglomerateDescriptor(DataDictionary dd)</li>
044: throws StandardException;</li>
045: <li>public String getIndexUUIDString();</li>
046: <li>public int[] getKeyColumns();</li>
047: </ol>
048: */
049:
050: // implementation
051: UUID indexId;
052:
053: private ConglomerateDescriptor indexConglom;
054:
055: /**
056: * Constructor for a KeyConstraintDescriptor
057: *
058: * @param dataDictionary The data dictionary that this descriptor lives in
059: * @param table The descriptor of the table the constraint is on
060: * @param constraintName The name of the constraint.
061: * @param deferrable If the constraint can be deferred.
062: * @param initiallyDeferred If the constraint starts life deferred.
063: * @param referencedColumns columns that the constraint references
064: * @param constraintId UUID of constraint
065: * @param indexId The UUID for the backing index
066: * @param schemaDesc The SchemaDescriptor for the constraint
067: * @param isEnabled is this constraint enabled
068: */
069: KeyConstraintDescriptor(DataDictionary dataDictionary,
070: TableDescriptor table, String constraintName,
071: boolean deferrable, boolean initiallyDeferred,
072: int[] referencedColumns, UUID constraintId, UUID indexId,
073: SchemaDescriptor schemaDesc, boolean isEnabled) {
074: super (dataDictionary, table, constraintName, deferrable,
075: initiallyDeferred, referencedColumns, constraintId,
076: schemaDesc, isEnabled);
077: this .indexId = indexId;
078: }
079:
080: /**
081: * Gets the UUID of the backing index for the constraint.
082: *
083: * @return The UUID of the backing index for the constraint.
084: */
085: public UUID getIndexId() {
086: return indexId;
087: }
088:
089: /**
090: * Gets the index conglomerate descriptor
091: *
092: * @return the index conglomerate descriptor
093: *
094: * @exception StandardException on error
095: */
096: public ConglomerateDescriptor getIndexConglomerateDescriptor(
097: DataDictionary dd) throws StandardException {
098: if (indexConglom == null) {
099: indexConglom = getTableDescriptor()
100: .getConglomerateDescriptor(indexId);
101: }
102: return indexConglom;
103: }
104:
105: /**
106: * Gets the UUID String of the backing index for the constraint.
107: *
108: * @return The UUID String of the backing index for the constraint.
109: */
110: public String getIndexUUIDString() {
111: return indexId.toString();
112: }
113:
114: /**
115: * Does this constraint have a backing index?
116: *
117: * @return boolean Whether or not there is a backing index for this constraint.
118: */
119: public boolean hasBackingIndex() {
120: return true;
121: }
122:
123: /**
124: * Get the UUID of the backing index, if one exists.
125: *
126: * @return The UUID of the backing index, if one exists, else null.
127: */
128: public UUID getConglomerateId() {
129: return indexId;
130: }
131:
132: /**
133: * Convert the SubConstraintDescriptor to a String.
134: *
135: * @return A String representation of this SubConstraintDescriptor
136: */
137:
138: public String toString() {
139: if (SanityManager.DEBUG) {
140: return "indexId: " + indexId + "\n" + super .toString();
141: } else {
142: return "";
143: }
144: }
145:
146: }
|