/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.metadata.runtime.impl; import java.util.ArrayList; import java.util.List; import org.teiid.designer.core.index.IndexConstants; import org.teiid.designer.metadata.runtime.ColumnSetRecord; import org.teiid.designer.metadata.runtime.ListEntryRecord; import org.teiid.designer.metadata.runtime.MetadataConstants; /** * ColumnSetRecordImpl * * @since 8.0 */ public class ColumnSetRecordImpl extends AbstractMetadataRecord implements ColumnSetRecord { /** */ private static final long serialVersionUID = 1L; private List columnIDs; // ================================================================================== // C O N S T R U C T O R S // ================================================================================== public ColumnSetRecordImpl() { this(new MetadataRecordDelegate()); } protected ColumnSetRecordImpl(MetadataRecordDelegate delegate) { this.delegate = delegate; } //================================================================================== // I N T E R F A C E M E T H O D S //================================================================================== /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#getColumnIDs() */ @Override public List getColumnIDs() { return columnIDs; } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#getColumnIdEntries() */ @Override public ListEntryRecord[] getColumnIdEntries() { final List entryRecords = new ArrayList(columnIDs.size()); for (int i = 0, n = columnIDs.size(); i < n; i++) { final String uuid = (String)columnIDs.get(i); final int position = i+1; entryRecords.add( new ListEntryRecordImpl(uuid,position) ); } return (ListEntryRecord[])entryRecords.toArray(new ListEntryRecord[entryRecords.size()]); } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#isAccessPattern() */ @Override public boolean isAccessPattern() { if (super.getRecordType() == IndexConstants.RECORD_TYPE.ACCESS_PATTERN) { return true; } return false; } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#isIndex() */ @Override public boolean isIndex() { if (super.getRecordType() == IndexConstants.RECORD_TYPE.INDEX) { return true; } return false; } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#isPrimaryKey() */ @Override public boolean isPrimaryKey() { if (super.getRecordType() == IndexConstants.RECORD_TYPE.PRIMARY_KEY) { return true; } return false; } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#isUniqueKey() */ @Override public boolean isUniqueKey() { if (super.getRecordType() == IndexConstants.RECORD_TYPE.UNIQUE_KEY) { return true; } return false; } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#isResultSet() */ @Override public boolean isResultSet() { if (super.getRecordType() == IndexConstants.RECORD_TYPE.RESULT_SET) { return true; } return false; } /** * @see org.teiid.designer.metadata.runtime.ColumnSetRecord#getType() */ @Override public short getType() { return this.getKeyTypeForRecordType(this.getRecordType()); } // ================================================================================== // P U B L I C M E T H O D S // ================================================================================== /** * @param list */ public void setColumnIDs(List list) { columnIDs = list; } protected short getKeyTypeForRecordType(final char recordType) { switch (recordType) { case IndexConstants.RECORD_TYPE.UNIQUE_KEY: return MetadataConstants.KEY_TYPES.UNIQUE_KEY; case IndexConstants.RECORD_TYPE.INDEX: return MetadataConstants.KEY_TYPES.INDEX; case IndexConstants.RECORD_TYPE.ACCESS_PATTERN: return MetadataConstants.KEY_TYPES.ACCESS_PATTERN; case IndexConstants.RECORD_TYPE.PRIMARY_KEY: return MetadataConstants.KEY_TYPES.PRIMARY_KEY; case IndexConstants.RECORD_TYPE.FOREIGN_KEY: return MetadataConstants.KEY_TYPES.FOREIGN_KEY; default: throw new IllegalArgumentException("Invalid record type, for key" + recordType); //$NON-NLS-1$ } } }