/* * Copyright 2006-2012 Amazon Technologies, Inc. or its affiliates. * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks * of Amazon Technologies, Inc. or its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.amazon.carbonado.repo.jdbc; import java.lang.reflect.Method; import com.amazon.carbonado.Storable; import com.amazon.carbonado.info.StorableProperty; import com.amazon.carbonado.info.StorablePropertyAdapter; /** * Contains all the metadata describing a property of a specific {@link * Storable} type as needed by JDBCRepository. * * @author Brian S O'Neill * @see JDBCStorableIntrospector */ public interface JDBCStorableProperty extends StorableProperty { /** * Returns false only if property is independent and no matching column was * found. */ boolean isSupported(); /** * Returns true if property is both supported and not a join. Simply put, * it can appear in a select statement. */ boolean isSelectable(); /** * Returns true if property is declared as @Automatic and column is * designated as auto-increment. * * @since 1.2 */ boolean isAutoIncrement(); /** * Returns the table column for this property. * * @return null if property is unsupported */ String getColumnName(); /** * Returns the data type as defined by {@link java.sql.Types}. * * @return null if property is unsupported */ Integer getDataType(); /** * Returns the data type name. * * @return null if property is unsupported */ String getDataTypeName(); /** * @return true if column is nullable * @since 1.2 */ boolean isColumnNullable(); /** * Returns the method to use to access this property (by index) from a * ResultSet. * * @return null if property is unsupported */ Method getResultSetGetMethod(); /** * Returns the method to use to set this property (by index) into a * PreparedStatement. * * @return null if property is unsupported */ Method getPreparedStatementSetMethod(); /** * Returns the adapter that needs to be applied to properties returned from * ResultSets and set into PreparedStatements. Is null if not needed. * * @return null if property is unsupported or if adapter not needed. */ StorablePropertyAdapter getAppliedAdapter(); /** * The column size is either the maximum number of characters or the * numeric precision. * * @return null if property is unsupported */ Integer getColumnSize(); /** * Returns the amount of fractional decimal digits. * * @return null if property is unsupported */ Integer getDecimalDigits(); /** * Returns the maximum amount of bytes for property value. * * @return null if property is unsupported */ Integer getCharOctetLength(); /** * Returns the one-based index of the column in the table. * * @return null if property is unsupported */ Integer getOrdinalPosition(); JDBCStorableProperty getInternalJoinElement(int index); JDBCStorableProperty[] getInternalJoinElements(); JDBCStorableProperty getExternalJoinElement(int index); JDBCStorableProperty[] getExternalJoinElements(); }