package schemacrawler.crawl;
import java.util.Collection;
import schemacrawler.schema.Column;
import schemacrawler.schema.ColumnDataType;
import schemacrawler.schema.NamedObject;
import schemacrawler.schema.Privilege;
import schemacrawler.schema.Table;
import schemacrawler.schema.TableConstraint;
import schemacrawler.schema.TableConstraintColumn;
final class MutableTableConstraintColumn
extends AbstractDependantObject<Table>
implements TableConstraintColumn
{
private static final long serialVersionUID = -6923211341742623556L;
private final Column column;
private final TableConstraint tableConstraint;
private int tableConstraintOrdinalPosition;
MutableTableConstraintColumn(final TableConstraint tableConstraint,
final MutableColumn column)
{
super(column.getParent(), column.getName());
this.tableConstraint = tableConstraint;
this.column = column;
}
/**
* {@inheritDoc}
*/
@Override
public int compareTo(final NamedObject obj)
{
if (obj == null)
{
return -1;
}
int comparison = 0;
if (obj instanceof MutableTableConstraintColumn)
{
final MutableTableConstraintColumn other = (MutableTableConstraintColumn) obj;
comparison = tableConstraintOrdinalPosition
- other.tableConstraintOrdinalPosition;
}
if (comparison == 0)
{
comparison = super.compareTo(obj);
}
return comparison;
}
@Override
public ColumnDataType getColumnDataType()
{
return column.getColumnDataType();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.BaseColumn#getDecimalDigits()
*/
@Override
public int getDecimalDigits()
{
return column.getDecimalDigits();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#getDefaultValue()
*/
@Override
public String getDefaultValue()
{
return column.getDefaultValue();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.BaseColumn#getOrdinalPosition()
*/
@Override
public int getOrdinalPosition()
{
return column.getOrdinalPosition();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#getPrivilege(java.lang.String)
*/
@Override
public Privilege<Column> getPrivilege(final String name)
{
return column.getPrivilege(name);
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#getPrivileges()
*/
@Override
public Collection<Privilege<Column>> getPrivileges()
{
return column.getPrivileges();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#getReferencedColumn()
*/
@Override
public Column getReferencedColumn()
{
return column.getReferencedColumn();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.BaseColumn#getSize()
*/
@Override
public int getSize()
{
return column.getSize();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.TableConstraintColumn#getTableConstraint()
*/
@Override
public TableConstraint getTableConstraint()
{
return tableConstraint;
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.TableConstraintColumn#getTableConstraintOrdinalPosition()
*/
@Override
public int getTableConstraintOrdinalPosition()
{
return tableConstraintOrdinalPosition;
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.TypedObject#getType()
*/
@Override
public ColumnDataType getType()
{
return column.getType();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.BaseColumn#getWidth()
*/
@Override
public String getWidth()
{
return column.getWidth();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.BaseColumn#isNullable()
*/
@Override
public boolean isNullable()
{
return column.isNullable();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#isPartOfForeignKey()
*/
@Override
public boolean isPartOfForeignKey()
{
return column.isPartOfForeignKey();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#isPartOfPrimaryKey()
*/
@Override
public boolean isPartOfPrimaryKey()
{
return column.isPartOfPrimaryKey();
}
/**
* {@inheritDoc}
*
* @see schemacrawler.schema.Column#isPartOfUniqueIndex()()
*/
@Override
public boolean isPartOfUniqueIndex()
{
return column.isPartOfUniqueIndex();
}
void setTableConstraintOrdinalPosition(final int indexOrdinalPosition)
{
tableConstraintOrdinalPosition = indexOrdinalPosition;
}
}