/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * Copyright (c) 2011, Red Hat Inc. or third-party contributors as
 * indicated by the @author tags or express copyright attribution
 * statements applied by the authors.  All third-party contributions are
 * distributed under license by Red Hat Inc.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program 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 distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 */
package org.hibernate.metamodel.source.binder;

import org.hibernate.metamodel.relational.Datatype;
import org.hibernate.metamodel.relational.Size;

Contract for source information pertaining to a column definition.
Author:Steve Ebersole
/** * Contract for source information pertaining to a column definition. * * @author Steve Ebersole */
public interface ColumnSource extends RelationalValueSource {
Obtain the name of the column.
Returns:The name of the column. Can be null, in which case a naming strategy is applied.
/** * Obtain the name of the column. * * @return The name of the column. Can be {@code null}, in which case a naming strategy is applied. */
public String getName();
A SQL fragment to apply to the column value on read.
Returns:The SQL read fragment
/** * A SQL fragment to apply to the column value on read. * * @return The SQL read fragment */
public String getReadFragment();
A SQL fragment to apply to the column value on write.
Returns:The SQL write fragment
/** * A SQL fragment to apply to the column value on write. * * @return The SQL write fragment */
public String getWriteFragment();
Is this column nullable?
Returns:true indicates it is nullable; false non-nullable.
/** * Is this column nullable? * * @return {@code true} indicates it is nullable; {@code false} non-nullable. */
public boolean isNullable();
Obtain a specified default value for the column
Returns:THe column default
/** * Obtain a specified default value for the column * * @return THe column default */
public String getDefaultValue();
Obtain the free-hand definition of the column's type.
Returns:The free-hand column type
/** * Obtain the free-hand definition of the column's type. * * @return The free-hand column type */
public String getSqlType();
The deduced (and dialect convertible) type for this column
Returns:The column's SQL data type.
/** * The deduced (and dialect convertible) type for this column * * @return The column's SQL data type. */
public Datatype getDatatype();
Obtain the specified column size.
Returns:The column size.
/** * Obtain the specified column size. * * @return The column size. */
public Size getSize();
Is this column unique?
Returns:true indicates it is unique; false non-unique.
/** * Is this column unique? * * @return {@code true} indicates it is unique; {@code false} non-unique. */
public boolean isUnique();
Obtain the specified check constraint condition
Returns:Check constraint condition
/** * Obtain the specified check constraint condition * * @return Check constraint condition */
public String getCheckCondition();
Obtain the specified SQL comment
Returns:SQL comment
/** * Obtain the specified SQL comment * * @return SQL comment */
public String getComment(); public boolean isIncludedInInsert(); public boolean isIncludedInUpdate(); }