001: /*
002:
003: Derby - Class org.apache.derby.iapi.sql.dictionary.ColumnDescriptorList
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: import org.apache.derby.iapi.services.sanity.SanityManager;
026:
027: import org.apache.derby.catalog.UUID;
028:
029: import org.apache.derby.iapi.error.StandardException;
030: import org.apache.derby.iapi.services.sanity.SanityManager;
031:
032: import java.util.ArrayList;
033: import java.util.Iterator;
034:
035: /**
036: * This represents a list of column descriptors.
037: */
038:
039: public class ColumnDescriptorList extends ArrayList {
040: /**
041: * Add the column. Currently, the table id is ignored.
042: *
043: * @param tableID the table id (ignored)
044: * @param column the column to add
045: */
046: public void add(UUID tableID, ColumnDescriptor column) {
047: /*
048: ** RESOLVE: The interface includes tableID because presumably
049: ** the primary key for the columns table will be tableID +
050: ** columnID (or possibly tableID + column name - both column
051: ** name and ID must be unique within a table). However, the
052: ** ColumnDescriptor contains a reference to a tableID, so it
053: ** seems like we don't need the parameter here. I am going
054: ** to leave it here just in case we decide we need it later.
055: */
056: add(column);
057: }
058:
059: /**
060: * Get the column descriptor
061: *
062: * @param tableID the table id (ignored)
063: * @param columnName the column get
064: *
065: * @return the column descriptor if found
066: */
067: public ColumnDescriptor getColumnDescriptor(UUID tableID,
068: String columnName) {
069: ColumnDescriptor returnValue = null;
070:
071: for (Iterator iterator = iterator(); iterator.hasNext();) {
072: ColumnDescriptor columnDescriptor = (ColumnDescriptor) iterator
073: .next();
074:
075: if (columnName.equals(columnDescriptor.getColumnName())
076: && tableID.equals(columnDescriptor
077: .getReferencingUUID())) {
078: returnValue = columnDescriptor;
079: break;
080: }
081: }
082:
083: return returnValue;
084: }
085:
086: /**
087: * Get the column descriptor
088: *
089: * @param tableID the table id (ignored)
090: * @param columnID the column id
091: *
092: * @return the column descriptor if found
093: */
094: public ColumnDescriptor getColumnDescriptor(UUID tableID,
095: int columnID) {
096: ColumnDescriptor returnValue = null;
097:
098: for (Iterator iterator = iterator(); iterator.hasNext();) {
099: ColumnDescriptor columnDescriptor = (ColumnDescriptor) iterator
100: .next();
101: if ((columnID == columnDescriptor.getPosition())
102: && tableID.equals(columnDescriptor
103: .getReferencingUUID())) {
104: returnValue = columnDescriptor;
105: break;
106: }
107: }
108:
109: return returnValue;
110: }
111:
112: /**
113: * Return the nth (0-based) element in the list.
114: *
115: * @param n Which element to return.
116: *
117: * @return The nth element in the list.
118: */
119: public ColumnDescriptor elementAt(int n) {
120: return (ColumnDescriptor) get(n);
121: }
122:
123: /**
124: * Get an array of strings for all the columns
125: * in this CDL.
126: *
127: * @return the array of strings
128: */
129: public String[] getColumnNames() {
130: String strings[] = new String[size()];
131:
132: int size = size();
133:
134: for (int index = 0; index < size; index++) {
135: ColumnDescriptor columnDescriptor = elementAt(index);
136: strings[index] = columnDescriptor.getColumnName();
137: }
138: return strings;
139: }
140: }
|