blob: 0efed78ed44159a118dcbda3c603242ebfe3ac65 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.resource.metadata.impl;
import org.apache.uima.UIMA_IllegalArgumentException;
import org.apache.uima.resource.metadata.AllowedValue;
import org.apache.uima.resource.metadata.FeatureDescription;
import org.apache.uima.resource.metadata.TypeDescription;
/**
* Reference implementation of {@link TypeDescription}. Under construction.
*
*
*/
public class TypeDescription_impl extends MetaDataObject_impl implements TypeDescription {
static final long serialVersionUID = 7505580429981863281L;
/** Name of this Type. */
private String mName;
/** Verbose description of this Type. */
private String mDescription;
/** Name of the Type from which this Type inherits. */
private String mSupertypeName;
/** Descriptions of all Features defined on this Type. */
private FeatureDescription[] mFeatures = new FeatureDescription[0];
/** Allowed Values for an Enumerated type. */
private AllowedValue[] mAllowedValues = new AllowedValue[0];
/**
* Creates a new TypeDescription_impl with null field values.
*/
public TypeDescription_impl() {
}
/**
* Creates a new TypeDescription_impl with the specified field values.
*
* @param aName
* name of the Type
* @param aSupertypeName
* name of the type's supertype
*/
public TypeDescription_impl(String aName, String aDescription, String aSupertypeName) {
setName(aName);
setDescription(aDescription);
setSupertypeName(aSupertypeName);
}
/**
* @see org.apache.uima.cas.TypeDescription#getName()
*/
public String getName() {
return mName;
}
/**
* @see org.apache.uima.cas.TypeDescription#setName(String)
*/
public void setName(String aName) {
mName = aName;
}
/**
* @see org.apache.uima.analysis_engine.metadata.TypeDescription#getDescription()
*/
public String getDescription() {
return mDescription;
}
/**
* @see org.apache.uima.analysis_engine.metadata.TypeDescription#setDescription(java.lang.String)
*/
public void setDescription(String aDescription) {
mDescription = aDescription;
}
/**
* @see org.apache.uima.cas.TypeDescription#getSupertypeName()
*/
public String getSupertypeName() {
return mSupertypeName;
}
/**
* @see org.apache.uima.cas.TypeDescription#setSupertypeName(String)
*/
public void setSupertypeName(String aTypeName) {
mSupertypeName = aTypeName;
}
/**
* @see org.apache.uima.cas.TypeDescription#getFeatures()
*/
public FeatureDescription[] getFeatures() {
return mFeatures;
}
/**
* @see org.apache.uima.cas.TypeDescription#setFeatures(FeatureDescription[])
*/
public void setFeatures(FeatureDescription[] aFeatures) {
if (aFeatures == null) {
throw new UIMA_IllegalArgumentException(UIMA_IllegalArgumentException.ILLEGAL_ARGUMENT,
new Object[] { "null", "aFeatures", "setFeatures" });
}
mFeatures = aFeatures;
}
/**
* @see org.apache.uima.analysis_engine.metadata.TypeDescription#getAllowedValues()
*/
public AllowedValue[] getAllowedValues() {
return mAllowedValues;
}
/**
* @see org.apache.uima.analysis_engine.metadata.TypeDescription#setAllowedValues(org.apache.uima.analysis_engine.metadata.AllowedValue[])
*/
public void setAllowedValues(AllowedValue[] aAllowedValues) {
mAllowedValues = aAllowedValues;
}
/**
* @see org.apache.uima.cas.TypeDescription#addFeature(String, String, String)
*/
public FeatureDescription addFeature(String aFeatureName, String aDescription,
String aRangeTypeName) {
return addFeature(aFeatureName, aDescription, aRangeTypeName, null, null);
}
/*
* (non-Javadoc)
*
* @see org.apache.uima.resource.metadata.TypeDescription#addFeature(java.lang.String,
* java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean)
*/
public FeatureDescription addFeature(String aFeatureName, String aDescription,
String aRangeTypeName, String aElementTypeName, Boolean aMultipleReferencesAllowed) {
// create new feature description
FeatureDescription newFeature = new FeatureDescription_impl(aFeatureName, aDescription,
aRangeTypeName, aElementTypeName, aMultipleReferencesAllowed);
// add to array
FeatureDescription[] features = getFeatures();
if (features == null) {
setFeatures(new FeatureDescription[] { newFeature });
} else {
FeatureDescription[] newArray = new FeatureDescription[features.length + 1];
System.arraycopy(features, 0, newArray, 0, features.length);
newArray[features.length] = newFeature;
setFeatures(newArray);
}
return newFeature;
}
protected XmlizationInfo getXmlizationInfo() {
return XMLIZATION_INFO;
}
static final private XmlizationInfo XMLIZATION_INFO = new XmlizationInfo("typeDescription",
new PropertyXmlInfo[] { new PropertyXmlInfo("name"),
new PropertyXmlInfo("description", false), new PropertyXmlInfo("supertypeName"),
new PropertyXmlInfo("features"), new PropertyXmlInfo("allowedValues") });
}