/* * XXL: The eXtensible and fleXible Library for data processing * * Copyright (C) 2000-2011 Prof. Dr. Bernhard Seeger Head of the Database Research Group Department * of Mathematics and Computer Science University of Marburg Germany * * This library is free software; you can redistribute it and/or modify it under the terms of the * GNU Lesser General Public License as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with this library; * If not, see <http://www.gnu.org/licenses/>. * * http://code.google.com/p/xxl/ */ package xxl.core.relational.metaData; import java.sql.SQLException; import java.util.Arrays; import xxl.core.io.converters.meta.ExtendedResultSetMetaData; /** * An object that can be used to get and set information about the types and properties of the * columns inside a tuple. It is a ready-to-use implementation of {@link java.sql.ResultSetMetaData} * . <br/> * <br/> * Please note that <tt>TupleMetaData</tt> contains meta data for each component. * * @see xxl.core.relational.metaData.ColumnMetaData * * @author Marcus Pinnecke (pinnecke@mathematik.uni-marburg.de) * */ public class TupleMetaData implements ExtendedResultSetMetaData { /* * The column meta data for each column/component of a tuple */ private ExtendedColumnMetaData[] mColumnMetaDatas = null; /* * The table name for this */ private String mTableName; /** * Setup up the columns meta data * * @param tableName The table name * @param columnMetaDatas An array of meta data. The <i>n</i>-th entry in the array refers to the * <i>n</i>-th component of the tuple */ public TupleMetaData(String tableName, ExtendedColumnMetaData[] columnMetaDatas) { if (columnMetaDatas == null) throw new NullPointerException(); mColumnMetaDatas = columnMetaDatas; mTableName = tableName; } /** * @see java.sql.ResultSetMetaData#getCatalogName(int) */ @Override public String getCatalogName(int column) throws SQLException { return mColumnMetaDatas[column - 1].getCatalogName(); } /** * @see java.sql.ResultSetMetaData#getColumnClassName(int) */ @Override public String getColumnClassName(int column) throws SQLException { return mColumnMetaDatas[column - 1].getColumnClassName(); } /** * @see java.sql.ResultSetMetaData#getColumnCount() */ @Override public int getColumnCount() throws SQLException { return mColumnMetaDatas.length; } /** * @see java.sql.ResultSetMetaData#getColumnDisplaySize(int) */ @Override public int getColumnDisplaySize(int column) throws SQLException { return mColumnMetaDatas[column - 1].getColumnDisplaySize(); } /** * @see java.sql.ResultSetMetaData#getColumnLabel(int) */ @Override public String getColumnLabel(int column) throws SQLException { return mColumnMetaDatas[column - 1].getColumnLabel(); } @Override public ExtendedColumnMetaData getColumnMetaData(int column) { return mColumnMetaDatas[column - 1]; } /** * @see java.sql.ResultSetMetaData#getColumnName(int) */ @Override public String getColumnName(int column) throws SQLException { return mColumnMetaDatas[column - 1].getColumnName(); } /** * @see java.sql.ResultSetMetaData#getColumnType(int) * @see xxl.core.util.ConvertUtils#toRelationalType(int) */ @Override public int getColumnType(int column) throws SQLException { return mColumnMetaDatas[column - 1].getColumnType(); } /** * @see java.sql.ResultSetMetaData#getColumnTypeName(int) */ @Override public String getColumnTypeName(int column) throws SQLException { return mColumnMetaDatas[column - 1].getColumnTypeName(); } @Override public int getContentLength(int column) { return mColumnMetaDatas[column - 1].getMaxContainingStringLength(); } /** * @see java.sql.ResultSetMetaData#getPrecision(int) */ @Override public int getPrecision(int column) throws SQLException { return mColumnMetaDatas[column - 1].getPrecision(); } /** * @see java.sql.ResultSetMetaData#getScale(int) */ @Override public int getScale(int column) throws SQLException { return mColumnMetaDatas[column - 1].getScale(); } /** * @see java.sql.ResultSetMetaData#getSchemaName(int) */ @Override public String getSchemaName(int column) throws SQLException { return mColumnMetaDatas[column - 1].getSchemaName(); } /** * Returns the table name given in {@link #TupleMetaData(String, ExtendedColumnMetaData[])} * constructor. * * @return the table name */ public String getTableName() { return mTableName; } /** * Always returns the table name given in {@link #TupleMetaData(String, ExtendedColumnMetaData[])} * constructor * * @see java.sql.ResultSetMetaData#getTableName(int) * @see #getTableName() */ @Override public String getTableName(int column) throws SQLException { return mTableName; } /** * @see java.sql.ResultSetMetaData#isAutoIncrement(int) */ @Override public boolean isAutoIncrement(int column) throws SQLException { return mColumnMetaDatas[column - 1].isAutoIncrement(); } /** * @see java.sql.ResultSetMetaData#isCaseSensitive(int) */ @Override public boolean isCaseSensitive(int column) throws SQLException { return mColumnMetaDatas[column - 1].isCaseSensitive(); } /** * @see java.sql.ResultSetMetaData#isCurrency(int) */ @Override public boolean isCurrency(int column) throws SQLException { return mColumnMetaDatas[column - 1].isCurrency(); } /** * @see java.sql.ResultSetMetaData#isDefinitelyWritable(int) */ @Override public boolean isDefinitelyWritable(int column) throws SQLException { return mColumnMetaDatas[column - 1].isDefinitelyWritable(); } /** * @see java.sql.ResultSetMetaData#isNullable(int) */ @Override public int isNullable(int column) throws SQLException { return mColumnMetaDatas[column - 1].isNullable(); } /** * @see java.sql.ResultSetMetaData#isReadOnly(int) */ @Override public boolean isReadOnly(int column) throws SQLException { return mColumnMetaDatas[column - 1].isReadOnly(); } /** * @see java.sql.ResultSetMetaData#isSearchable(int) */ @Override public boolean isSearchable(int column) throws SQLException { return mColumnMetaDatas[column - 1].isSearchable(); } /** * @see java.sql.ResultSetMetaData#isSigned(int) */ @Override public boolean isSigned(int column) throws SQLException { return mColumnMetaDatas[column - 1].isSigned(); } /** * <b>This method is not supported yet</b> * * @see java.sql.ResultSetMetaData#isWrapperFor(Class) */ @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { throw new UnsupportedOperationException("Not yet implemented"); } /** * @see java.sql.ResultSetMetaData#isWritable(int) */ @Override public boolean isWritable(int column) throws SQLException { return mColumnMetaDatas[column - 1].isWritable(); } @Override public String toString() { return Arrays.toString(mColumnMetaDatas); } /** * <b>This method is not supported yet</b> * * @see java.sql.ResultSetMetaData#unwrap(Class) */ @Override public <T> T unwrap(Class<T> iface) throws SQLException { throw new UnsupportedOperationException("Not yet implemented"); } }