package schemacrawler.crawl; import java.util.Collection; import schemacrawler.schema.Column; import schemacrawler.schema.ColumnDataType; import schemacrawler.schema.Index; import schemacrawler.schema.IndexColumn; import schemacrawler.schema.IndexColumnSortSequence; import schemacrawler.schema.NamedObject; import schemacrawler.schema.Privilege; import schemacrawler.schema.Table; final class MutableIndexColumn extends AbstractDependantObject<Table> implements IndexColumn { private static final long serialVersionUID = -6923211341742623556L; private final Column column; private final Index index; private int indexOrdinalPosition; private IndexColumnSortSequence sortSequence; MutableIndexColumn(final Index index, final MutableColumn column) { super(column.getParent(), column.getName()); this.index = index; this.column = column; } /** * {@inheritDoc} */ @Override public int compareTo(final NamedObject obj) { if (obj == null) { return -1; } int comparison = 0; if (obj instanceof MutableIndexColumn) { final MutableIndexColumn other = (MutableIndexColumn) obj; comparison = indexOrdinalPosition - other.indexOrdinalPosition; } 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.IndexColumn#getIndex() */ @Override public Index getIndex() { return index; } /** * {@inheritDoc} * * @see schemacrawler.schema.IndexColumn#getIndexOrdinalPosition() */ @Override public int getIndexOrdinalPosition() { return indexOrdinalPosition; } /** * {@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.IndexColumn#getSortSequence() */ @Override public IndexColumnSortSequence getSortSequence() { return sortSequence; } /** * {@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 setIndexOrdinalPosition(final int indexOrdinalPosition) { this.indexOrdinalPosition = indexOrdinalPosition; } void setSortSequence(final IndexColumnSortSequence sortSequence) { this.sortSequence = sortSequence; } }