/* * 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.XSDParticle; import org.eclipse.xsd.XSDSchema; import org.eclipse.xsd.XSDTypeDefinition; import org.teiid.designer.schema.tools.model.schema.ComplexSchemaObject; import org.teiid.designer.schema.tools.model.schema.ISchemaModelCopyTraversalContext; import org.teiid.designer.schema.tools.model.schema.RootElement; import org.teiid.designer.schema.tools.model.schema.SchemaObject; import org.teiid.designer.schema.tools.model.schema.SchemaObjectKey; /** * @since 8.0 */ public class TypeDefinition extends BaseSchemaObject implements ComplexSchemaObject { private boolean doesNotHaveUniqueName; private XSDSchema schema; public TypeDefinition( XSDTypeDefinition type, String namespacePrefix, XSDSchema schema ) { super(namespacePrefix, type, schema); this.doesNotHaveUniqueName = false; } @Override public SchemaObjectKey getKey() { return new TypeDefinitionKey(type); } @Override public XSDTypeDefinition getType() { return type; } @Override public String getNamespace() { return type.getTargetNamespace(); } @Override public String getName() { return type.getName(); } @Override public String getSimpleName() { String elemName = type.getName(); String uniqueName; if (doesNotHaveUniqueName) { String typeName = type.getAliasName(); uniqueName = elemName + '(' + typeName + ')'; } else { uniqueName = elemName; } return uniqueName; } @Override public String toString() { String retval = type.getName(); if (type.getTargetNamespace() != null) { retval += " (" + type.getTargetNamespace() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } return retval; } @Override public int getMinOccurs() { XSDParticle particle = type.getComplexType(); if (particle == null) return 1; return particle.getMinOccurs(); } @Override public int getMaxOccurs() { XSDParticle particle = type.getComplexType(); if (particle == null) return 1; return particle.getMaxOccurs(); } @Override public SchemaObject copy( ISchemaModelCopyTraversalContext ctx ) { TypeDefinition copy = new TypeDefinition(type, getNamespacePrefix(), schema); return copy; } @Override public String getElementTypeNamespace() { return type.getTargetNamespace(); } @Override public RootElement getRootRepresentation() { return new RootElementImpl(getKey(), getName(), getNamespace(), true); } @Override public String getCatalog() { return null; } @Override public boolean equals( Object obj ) { boolean result = false; if (obj instanceof TypeDefinition) { TypeDefinition other = (TypeDefinition)obj; if (this.type == other.type) { result = true; } } return result; } }