/* * 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.List; import org.teiid.designer.core.index.IndexConstants; import org.teiid.designer.core.types.DatatypeConstants; import org.teiid.designer.metadata.runtime.DatatypeRecord; import org.teiid.designer.metadata.runtime.MetadataConstants; /** * ColumnRecordImpl * * @since 8.0 */ public class DatatypeRecordImpl extends AbstractMetadataRecord implements DatatypeRecord { /** */ private static final long serialVersionUID = 1L; private static final String DEFAULT_JAVA_CLASS_NAME = "java.lang.Object"; //$NON-NLS-1$ private int length; private int precisionLength; private int scale; private int radix; private boolean isSigned; private boolean isAutoIncrement; private boolean isCaseSensitive; private short type; private short searchType; private short nullType; private String javaClassName; private String runtimeTypeName; private String datatypeID; private String basetypeID; private String primitiveTypeID; private short varietyType; private List varietyProps; // ================================================================================== // C O N S T R U C T O R S // ================================================================================== public DatatypeRecordImpl() { this(new MetadataRecordDelegate()); this.javaClassName = DEFAULT_JAVA_CLASS_NAME; } protected DatatypeRecordImpl(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.MetadataRecord#getName() */ @Override public String getName() { final String fullName = super.getFullName(); int indx = fullName.lastIndexOf(DatatypeConstants.URI_REFERENCE_DELIMITER); if (indx > -1) { return fullName.substring(indx+1); } indx = fullName.lastIndexOf(IndexConstants.NAME_DELIM_CHAR); if (indx > -1) { return fullName.substring(indx+1); } return fullName; } /** * @see org.teiid.designer.metadata.runtime.MetadataRecord#getModelName() */ @Override public String getModelName() { final String fullName = super.getFullName(); int indx = fullName.lastIndexOf(DatatypeConstants.URI_REFERENCE_DELIMITER); if (indx > -1) { return fullName.substring(0, indx); } indx = fullName.lastIndexOf(IndexConstants.NAME_DELIM_CHAR); if (indx > -1) { return fullName.substring(0, indx); } return fullName; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getLength() */ @Override public int getLength() { return this.length; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getPrecisionLength() */ @Override public int getPrecisionLength() { return this.precisionLength; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getScale() */ @Override public int getScale() { return this.scale; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getRadix() */ @Override public int getRadix() { return this.radix; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#isSigned() */ @Override public boolean isSigned() { return this.isSigned; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#isAutoIncrement() */ @Override public boolean isAutoIncrement() { return this.isAutoIncrement; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#isCaseSensitive() */ @Override public boolean isCaseSensitive() { return this.isCaseSensitive; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getType() */ @Override public short getType() { return this.type; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#isBuiltin() */ @Override public boolean isBuiltin() { if ( getType() == MetadataConstants.DATATYPE_TYPES.BASIC ) { return true; } return false; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getSearchType() */ @Override public short getSearchType() { return this.searchType; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getNullType() */ @Override public short getNullType() { return this.nullType; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getJavaClassName() */ @Override public String getJavaClassName() { return this.javaClassName; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getRuntimeTypeName() */ @Override public String getRuntimeTypeName() { return this.runtimeTypeName; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getDatatypeID() */ @Override public String getDatatypeID() { return this.datatypeID; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getBasetypeID() */ @Override public String getBasetypeID() { return this.basetypeID; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getBasetypeName() */ @Override public String getBasetypeName() { if ( this.basetypeID != null ) { final int i = getBasetypeID().lastIndexOf(DatatypeConstants.URI_REFERENCE_DELIMITER); if ( i != -1 && getBasetypeID().length() > (i+1)) { return getBasetypeID().substring(i+1); } } return null; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getPrimitiveTypeID() * @since 4.3 */ @Override public String getPrimitiveTypeID() { return this.primitiveTypeID; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getVarietyType() */ @Override public short getVarietyType() { return this.varietyType; } /** * @see org.teiid.designer.metadata.runtime.DatatypeRecord#getVarietyProps() */ @Override public List getVarietyProps() { return this.varietyProps; } // ================================================================================== // P U B L I C M E T H O D S // ================================================================================== /** * @param string */ public void setBasetypeID(String string) { basetypeID = string; } /** * @param string */ public void setPrimitiveTypeID(String string) { primitiveTypeID = string; } /** * @param b */ public void setAutoIncrement(boolean b) { isAutoIncrement = b; } /** * @param b */ public void setCaseSensitive(boolean b) { isCaseSensitive = b; } /** * @param b */ public void setSigned(boolean b) { isSigned = b; } /** * @param string */ public void setJavaClassName(String string) { javaClassName = string; } /** * @param i */ public void setLength(int i) { length = i; } /** * @param s */ public void setNullType(short s) { nullType = s; } /** * @param i */ public void setPrecisionLength(int i) { precisionLength = i; } /** * @param i */ public void setRadix(int i) { radix = i; } /** * @param string */ public void setRuntimeTypeName(String string) { runtimeTypeName = string; } /** * @param i */ public void setScale(int i) { scale = i; } /** * @param s */ public void setSearchType(short s) { searchType = s; } /** * @param s */ public void setType(short s) { type = s; } /** * @param string */ public void setDatatypeID(String string) { datatypeID = string; } /** * @param list */ public void setVarietyProps(List list) { varietyProps = list; } /** * @param s */ public void setVarietyType(short s) { varietyType = s; } @Override public String toString() { StringBuffer sb = new StringBuffer(100); sb.append(getClass().getSimpleName()); sb.append(" name="); //$NON-NLS-1$ sb.append(getName()); sb.append(", basetype name="); //$NON-NLS-1$ sb.append(getBasetypeName()); sb.append(", runtimeType="); //$NON-NLS-1$ sb.append(getRuntimeTypeName()); sb.append(", javaClassName="); //$NON-NLS-1$ sb.append(getJavaClassName()); sb.append(", ObjectID="); //$NON-NLS-1$ sb.append(getUUID()); sb.append(", datatypeID="); //$NON-NLS-1$ sb.append(getDatatypeID()); return sb.toString(); } }