/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.xml;
import org.eclipse.xsd.XSDAttributeDeclaration;
import org.eclipse.xsd.XSDAttributeGroupDefinition;
import org.eclipse.xsd.XSDComplexTypeDefinition;
import org.eclipse.xsd.XSDElementDeclaration;
import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.XSDSimpleTypeDefinition;
import org.eclipse.xsd.XSDTypeDefinition;
import java.util.List;
import javax.xml.namespace.QName;
public interface SchemaIndex {
/**
* @return The schema itself.
*/
XSDSchema[] getSchemas();
/**
* Returns the element declaration with the specified qualified name.
*
* @param qName the qualified name of the element.
*
* @return The element declaration, or null if no such element declaration
* exists.
*/
XSDElementDeclaration getElementDeclaration(QName qName);
/**
* Returns the attribute declaration with the specified qualified name.
*
* @param qName the qualified name of the attribute.
*
* @return The attribute declaration, or null if no such attribute
* declaration exists.
*/
XSDAttributeDeclaration getAttributeDeclaration(QName qName);
/**
* Returns the attribute group definition with the specified qualified name.
*
* @param qName the qualified name of the attribute group.
*
* @return The attribute group definition, or null if no such attribute
* group definition exists.
*/
XSDAttributeGroupDefinition getAttributeGroupDefinition(QName qName);
/**
* Returns the complex type definition with the specified qualified name.
*
* @param qName qualified name of the complex type.
*
* @return The complex type definition, or null if no such complex type
* definition exists.
*/
XSDComplexTypeDefinition getComplexTypeDefinition(QName qName);
/**
* Returns the simple type definition with the specified qualified name.
*
* @param qName qualified name of the simple type.
*
* @return The simple type definition, or null if no such simple type
* definition exists.
*/
XSDSimpleTypeDefinition getSimpleTypeDefinition(QName qName);
/**
* Returns the type definition with the specified qualified name.
*
* @param qName qualified name of the type.
*
* @return The type definition, or null if no such type definition exists.
*/
XSDTypeDefinition getTypeDefinition(QName qName);
/**
* Returns a child element specified by name of a parent element.
*
* @param parent The parent element.
* @param childName The name of the child.
*
* @return The element declaration, or null if no such child exists.
*/
XSDElementDeclaration getChildElement(XSDElementDeclaration parent, QName childName);
/**
* Returns a list of the particles which correspond to child element declarations.
*
* @param parent The parent element.
*
* @return A list of {@link org.eclipse.xsd.XSDParticle}.
*/
List getChildElementParticles(XSDElementDeclaration parent);
/**
* Returns the attributes of a specified elements.
*
* @param element The element.
*
* @return The list of attributed definied for the element.
*/
List getAttributes(XSDElementDeclaration element);
/**
* Cleans up the index before desctruction.
*/
void destroy();
}