001: /**
002: * com.mckoi.database.AbstractInternalTableInfo 23 Aug 2002
003: *
004: * Mckoi SQL Database ( http://www.mckoi.com/database )
005: * Copyright (C) 2000, 2001, 2002 Diehl and Associates, Inc.
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License
009: * Version 2 as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License Version 2 for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * Version 2 along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
019: *
020: * Change Log:
021: *
022: *
023: */package com.mckoi.database;
024:
025: /**
026: * An implementation of InternalTableInfo that provides a number of methods to
027: * aid in the productions of the InternalTableInfo interface.
028: * <p>
029: * This leaves the 'createInternalTable' method implementation to the derived
030: * class.
031: *
032: * @author Tobias Downer
033: */
034:
035: abstract class AbstractInternalTableInfo implements InternalTableInfo {
036:
037: /**
038: * The list of table names (as TableName) that this object maintains.
039: */
040: private TableName[] table_list;
041:
042: /**
043: * The list of DataTableDef objects that descibe each table in the above
044: * list.
045: */
046: private DataTableDef[] table_def_list;
047:
048: /**
049: * The table type of table objects returned by this method.
050: */
051: private String table_type;
052:
053: /**
054: * Constructs the container than manages the creation of the given table
055: * objects.
056: */
057: AbstractInternalTableInfo(String type, DataTableDef[] table_def_list) {
058: this .table_def_list = table_def_list;
059: this .table_type = type;
060: table_list = new TableName[table_def_list.length];
061: for (int i = 0; i < table_list.length; ++i) {
062: table_list[i] = table_def_list[i].getTableName();
063: }
064: }
065:
066: /**
067: * Returns the number of internal table sources that this object is
068: * maintaining.
069: */
070: public int getTableCount() {
071: return table_list.length;
072: }
073:
074: /**
075: * Finds the index in this container of the given table name, otherwise
076: * returns -1.
077: */
078: public int findTableName(TableName name) {
079: for (int i = 0; i < table_list.length; ++i) {
080: if (table_list[i].equals(name)) {
081: return i;
082: }
083: }
084: return -1;
085: }
086:
087: /**
088: * Returns the name of the table at the given index in this container.
089: */
090: public TableName getTableName(int i) {
091: return table_list[i];
092: }
093:
094: /**
095: * Returns the DataTableDef object that describes the table at the given
096: * index in this container.
097: */
098: public DataTableDef getDataTableDef(int i) {
099: return table_def_list[i];
100: }
101:
102: /**
103: * Returns true if this container contains a table with the given name.
104: */
105: public boolean containsTableName(TableName name) {
106: return findTableName(name) != -1;
107: }
108:
109: /**
110: * Returns a String that describes the type of the table at the given index.
111: */
112: public String getTableType(int i) {
113: return table_type;
114: }
115:
116: }
|