/**
* Redistribution and use of this software and associated documentation
* ("Software"), with or without modification, are permitted provided
* that the following conditions are met:
*
* 1. Redistributions of source code must retain copyright
* statements and notices. Redistributions must also contain a
* copy of this document.
*
* 2. Redistributions in binary form must reproduce the
* above copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* 3. The name "Exolab" must not be used to endorse or promote
* products derived from this Software without prior written
* permission of Intalio, Inc. For written permission,
* please contact info@exolab.org.
*
* 4. Products derived from this Software may not be called "Exolab"
* nor may "Exolab" appear in their names without prior written
* permission of Intalio, Inc. Exolab is a registered
* trademark of Intalio, Inc.
*
* 5. Due credit should be given to the Exolab Project
* (http://www.exolab.org/).
*
* THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Copyright 1999-2003 (C) Intalio Inc. All Rights Reserved.
*
* $Id$
*/
package org.exolab.castor.xml.schema;
/**
* A class which holds the names for many of the Schema
* related components.
* @author <a href="mailto:kvisco@intalio.com">Keith Visco</a>
* @version $Revision$ $Date: 2006-04-25 15:08:23 -0600 (Tue, 25 Apr 2006) $
**/
public class SchemaNames {
//-- packages
public static final String SCHEMA_PACKAGE =
"org.exolab.castor.xml.schema";
//-- element definitions
public static final String ALL = "all";
public static final String ANNOTATION = "annotation";
public static final String ANY = "any";
public static final String ANYTYPE = "anyType";
public static final String ANY_ATTRIBUTE = "anyAttribute";
public static final String APPINFO = "appinfo";
public static final String ATTRIBUTE = "attribute";
public static final String ATTRIBUTE_GROUP = "attributeGroup";
public static final String CHOICE = "choice";
public static final String COMPLEX_CONTENT = "complexContent";
public static final String COMPLEX_TYPE = "complexType";
public static final String DOCUMENTATION = "documentation";
public static final String ELEMENT = "element";
public static final String ENUMERATION = "enumeration";
public static final String EXTENSION = "extension";
public static final String FIELD = "field";
public static final String GROUP = "group";
public static final String INCLUDE = "include";
public static final String IMPORT = "import";
public static final String KEY = "key";
public static final String KEYREF = "keyref";
public static final String LIST = "list";
public static final String MAX_EXCLUSIVE = "maxExclusive";
public static final String MAX_INCLUSIVE = "maxInclusive";
public static final String MIN_EXCLUSIVE = "minExclusive";
public static final String MIN_INCLUSIVE = "minInclusive";
public static final String REDEFINE = "redefine";
public static final String RESTRICTION = "restriction";
public static final String SCHEMA = "schema";
public static final String SELECTOR = "selector";
public static final String SEQUENCE = "sequence";
public static final String SIMPLETYPE_REF = "simpletypeRef";
public static final String SIMPLE_CONTENT = "simpleContent";
public static final String SIMPLE_TYPE = "simpleType";
public static final String UNION = "union";
public static final String UNIQUE = "unique";
//-- Attr name definitions
public static final String ABSTRACT = "abstract";
public static final String ATTR_FORM_DEFAULT_ATTR = "attributeFormDefault";
public static final String BASE_ATTR = "base";
public static final String BLOCK_ATTR = "block";
public static final String BLOCK_DEFAULT_ATTR = "blockDefault";
public static final String DEFAULT_ATTR = "default";
public static final String ELEM_FORM_DEFAULT_ATTR = "elementFormDefault";
public static final String ID_ATTR = "id";
public static final String ITEM_TYPE_ATTR = "itemType";
public static final String FINAL_ATTR = "final";
public static final String FINAL_DEFAULT_ATTR = "finalDefault";
public static final String FIXED_ATTR = "fixed";
public static final String FORM = "form";
public static final String MAX_OCCURS_ATTR = "maxOccurs";
public static final String MEMBER_TYPES_ATTR = "memberTypes";
public static final String MIN_OCCURS_ATTR = "minOccurs";
public static final String MIXED = "mixed";
public static final String NAME_ATTR = "name";
public static final String NAMESPACE = "namespace";
public static final String NILLABLE_ATTR = "nillable";
public static final String ORDER_ATTR = "order";
public static final String PROCESS_CONTENTS = "processContents";
public static final String REF_ATTR = "ref";
public static final String REFER_ATTR = "refer";
public static final String SCHEMALOCATION_ATTR = "schemaLocation";
public static final String SOURCE_ATTR = "source";
public static final String SUBSTITUTION_GROUP_ATTR = "substitutionGroup";
public static final String TARGET_NS_ATTR = "targetNamespace";
public static final String TYPE_ATTR = "type";
public static final String USE_ATTR = "use";
public static final String VALUE_ATTR = "value";
public static final String VERSION_ATTR = "version";
public static final String XPATH_ATTR = "xpath";
//-- data types
public static final String INTEGER_TYPE = "integer";
public static final String INT_TYPE = "int";
public static final String STRING_TYPE = "string";
//-- namespaces
public static final String NAMESPACE_ANY ="##any";
public static final String NAMESPACE_LOCAL ="##local";
public static final String NAMESPACE_OTHER ="##other";
public static final String NAMESPACE_TARGET ="##targetNamespace";
//-- processContents
public static final String LAX = "lax";
public static final String SKIP = "skip";
public static final String STRICT = "strict";
//-- Wildcard name
public static final String WILDCARD = "wildcard";
/**
* Returns the name for the Schema Structure.
*
* @param structure the Structure to return the name for
* @return the Structure name
*/
public static String getStructureName(Structure structure) {
if (structure == null) return null;
switch (structure.getStructureType()) {
case Structure.ANYTYPE:
return ANYTYPE;
case Structure.ANNOTATION:
return ANNOTATION;
case Structure.APPINFO:
return APPINFO;
case Structure.ATTRIBUTE:
return ATTRIBUTE;
case Structure.ATTRIBUTE_GROUP:
return ATTRIBUTE_GROUP;
case Structure.COMPLEX_CONTENT:
return COMPLEX_CONTENT;
case Structure.COMPLEX_TYPE:
return COMPLEX_TYPE;
case Structure.DOCUMENTATION:
return DOCUMENTATION;
case Structure.ELEMENT:
return ELEMENT;
case Structure.FACET:
Facet facet = (Facet)structure;
return facet.getName();
case Structure.GROUP:
Group group = (Group)structure;
Order order = group.getOrder();
return order.toString();
case Structure.IDENTITY_FIELD:
return FIELD;
case Structure.IDENTITY_SELECTOR:
return SELECTOR;
case Structure.KEY:
return KEY;
case Structure.KEYREF:
return KEYREF;
case Structure.LIST:
return LIST;
case Structure.MODELGROUP:
return GROUP;
case Structure.MODELGROUP_REF:
return GROUP;
case Structure.REDEFINE:
return REDEFINE;
case Structure.SCHEMA:
return SCHEMA;
case Structure.SIMPLE_CONTENT:
return SIMPLE_CONTENT;
case Structure.SIMPLE_TYPE:
return SIMPLE_TYPE;
case Structure.UNION:
return UNION;
case Structure.UNIQUE:
return UNIQUE;
case Structure.WILDCARD:
return ANY;
default:
break;
}
return null;
} //-- getStructureName
/**
* Determines whether or not the given name is the name
* of an XML Schema group structure.
* @param name the name to test
* @return true if the given name is the name of a schema group
**/
public static boolean isGroupName(String name) {
return (SchemaNames.GROUP.equals(name) ||
SchemaNames.SEQUENCE.equals(name) ||
SchemaNames.CHOICE.equals(name) ||
SchemaNames.ALL.equals(name));
} //-- isGroupName
/**
* Determines whether or not the given name is the name
* of an XML Schema namespace attributes.
* Note: it assumes that the URI used are valid URL
* TODO: change the above restriction
* @param name the name to test
* @return true if the given name is the name of a schema group
**/
public static boolean isNamespaceName(String name) {
boolean result = (SchemaNames.NAMESPACE_ANY.equals(name) ||
SchemaNames.NAMESPACE_LOCAL.equals(name) ||
SchemaNames.NAMESPACE_OTHER.equals(name) ||
SchemaNames.NAMESPACE_TARGET.equals(name));
if (result) return result;
try {
new java.net.URL(name);
result = true;
} catch (java.net.MalformedURLException e){
//invalid URL
result = false;
}
return result;
} //-- isNamespaceName
/**
* Determines whether or not the given name is the name
* of an XML Schema Wildcard processContents attribute.
* @param name the name to test
* @return true if the given name is a valid name of a processContents attribute
**/
public static boolean isProcessName(String name) {
return (SchemaNames.LAX.equals(name) ||
SchemaNames.SKIP.equals(name) ||
SchemaNames.STRICT.equals(name));
} //-- isProcessName
} //-- SchemaNames