* @param schema
* the schema
*/
private static void readAttributeType( Element element, Schema schema ) throws XMLSchemaFileImportException
{
AttributeTypeImpl at = null;
// OID
Attribute oidAttribute = element.attribute( OID_TAG );
if ( ( oidAttribute != null ) && ( !oidAttribute.getValue().equals( "" ) ) ) //$NON-NLS-1$
{
at = new AttributeTypeImpl( oidAttribute.getValue() );
}
else
{
throw new XMLSchemaFileImportException( Messages.getString( "XMLSchemaFileImporter.NoOIDInAttribute" ) ); //$NON-NLS-1$
}
// Schema
at.setSchema( schema.getName() );
at.setSchemaObject( schema );
// Aliases
Element aliasesElement = element.element( ALIASES_TAG );
if ( aliasesElement != null )
{
List<String> aliases = new ArrayList<String>();
for ( Iterator<?> i = aliasesElement.elementIterator( ALIAS_TAG ); i.hasNext(); )
{
Element aliasElement = ( Element ) i.next();
aliases.add( aliasElement.getText() );
}
if ( aliases.size() >= 1 )
{
at.setNames( aliases.toArray( new String[0] ) );
}
}
// Description
Element descriptionElement = element.element( DESCRIPTION_TAG );
if ( ( descriptionElement != null ) && ( !descriptionElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
at.setDescription( descriptionElement.getText() );
}
// Superior
Element superiorElement = element.element( SUPERIOR_TAG );
if ( ( superiorElement != null ) && ( !superiorElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
at.setSuperiorName( superiorElement.getText() );
}
// Usage
Element usageElement = element.element( USAGE_TAG );
if ( ( usageElement != null ) && ( !usageElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
try
{
at.setUsage( UsageEnum.valueOf( usageElement.getText() ) );
}
catch ( IllegalArgumentException e )
{
throw new XMLSchemaFileImportException( Messages
.getString( "XMLSchemaFileImporter.UnceonvertableAttribute" ), e ); //$NON-NLS-1$
}
}
// Syntax
Element syntaxElement = element.element( SYNTAX_TAG );
if ( ( syntaxElement != null ) && ( !syntaxElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
at.setSyntaxOid( syntaxElement.getText() );
}
// Syntax Length
Element syntaxLengthElement = element.element( SYNTAX_LENGTH_TAG );
if ( ( syntaxLengthElement != null ) && ( !syntaxLengthElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
try
{
at.setLength( Integer.parseInt( syntaxLengthElement.getText() ) );
}
catch ( NumberFormatException e )
{
throw new XMLSchemaFileImportException( Messages
.getString( "XMLSchemaFileImporter.UnconvertableInteger" ), e ); //$NON-NLS-1$
}
}
// Obsolete
Attribute obsoleteAttribute = element.attribute( OBSOLETE_TAG );
if ( ( obsoleteAttribute != null ) && ( !obsoleteAttribute.getValue().equals( "" ) ) ) //$NON-NLS-1$
{
at.setObsolete( readBoolean( obsoleteAttribute.getValue() ) );
}
// Single Value
Attribute singleValueAttribute = element.attribute( SINGLE_VALUE_TAG );
if ( ( singleValueAttribute != null ) && ( !singleValueAttribute.getValue().equals( "" ) ) ) //$NON-NLS-1$
{
at.setSingleValue( readBoolean( singleValueAttribute.getValue() ) );
}
// Collective
Attribute collectiveAttribute = element.attribute( COLLECTIVE_TAG );
if ( ( collectiveAttribute != null ) && ( !collectiveAttribute.getValue().equals( "" ) ) ) //$NON-NLS-1$
{
at.setCollective( readBoolean( collectiveAttribute.getValue() ) );
}
// No User Modification
Attribute noUserModificationAttribute = element.attribute( NO_USER_MODIFICATION_TAG );
if ( ( noUserModificationAttribute != null ) && ( !noUserModificationAttribute.getValue().equals( "" ) ) ) //$NON-NLS-1$
{
at.setCanUserModify( !readBoolean( noUserModificationAttribute.getValue() ) );
}
// Equality
Element equalityElement = element.element( EQUALITY_TAG );
if ( ( equalityElement != null ) && ( !equalityElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
at.setEqualityName( equalityElement.getText() );
}
// Ordering
Element orderingElement = element.element( ORDERING_TAG );
if ( ( orderingElement != null ) && ( !orderingElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
at.setOrderingName( orderingElement.getText() );
}
// Substring
Element substringElement = element.element( SUBSTRING_TAG );
if ( ( substringElement != null ) && ( !substringElement.getText().equals( "" ) ) ) //$NON-NLS-1$
{
at.setSubstrName( substringElement.getText() );
}
// Adding the attribute type to the schema
schema.addAttributeType( at );
}