/*
* 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.schema.tools.model.schema.impl;
import org.eclipse.xsd.XSDSimpleTypeDefinition;
import org.teiid.designer.schema.tools.model.jdbc.DataType;
import org.teiid.designer.schema.tools.model.jdbc.internal.DataTypeImpl;
import org.teiid.designer.schema.tools.model.schema.Column;
import org.teiid.designer.schema.tools.model.schema.QName;
import org.teiid.designer.schema.tools.model.schema.Relationship;
import org.teiid.designer.schema.tools.model.schema.SchemaObject;
/**
* @since 8.0
*/
public abstract class BaseColumn implements Column {
private SchemaObject table;
protected boolean pk;
protected XSDSimpleTypeDefinition type;
public BaseColumn(boolean pk, XSDSimpleTypeDefinition type) {
this.pk = pk;
this.type = type;
this.table = null;
}
@Override
public void setTable(SchemaObject table) {
this.table = table;
}
@Override
public SchemaObject getTable() {
return table;
}
@Override
public boolean isPrimaryKey() {
return pk;
}
@Override
public String getBaseType() {
XSDSimpleTypeDefinition primitiveType = type.getRootTypeDefinition();
String retval = primitiveType.getName();
return retval;
}
@Override
public QName getTypeName() {
QName retval = new QNameImpl(type.getTargetNamespace(), type.getName());
return retval;
}
@Override
public XSDSimpleTypeDefinition getType() {
return type;
}
@Override
public Column mergeIntoParent(Relationship tableRelationship, int iOccurence) {
Column mergedColumn = new MergedColumn(this, tableRelationship,
iOccurence);
SchemaObject parent = tableRelationship.getParent();
parent.addAttribute(mergedColumn);
return mergedColumn;
}
@Override
public String toString() {
return getSimpleName();
}
protected DataType getDataType() {
String typeName = type.getName();
String namespace = type.getTargetNamespace();
if(null == typeName) {
typeName = type.getRootType().getName();
namespace = type.getRootType().getTargetNamespace();
}
return new DataTypeImpl(typeName, namespace);
}
}