blob: cfc151b759dbe38dd71a5e0065aa7bf2002b3d91 [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.jcas.cas;
import org.apache.uima.cas.CAS;
import org.apache.uima.cas.CASRuntimeException;
import org.apache.uima.cas.Feature;
import org.apache.uima.cas.FeatureStructure;
import org.apache.uima.cas.impl.AnnotationBaseImpl;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.cas.impl.FeatureImpl;
import org.apache.uima.cas.impl.TypeImpl;
import org.apache.uima.cas.impl.TypeSystemConstants;
import org.apache.uima.cas.impl.TypeSystemImpl;
import org.apache.uima.jcas.JCas;
import org.apache.uima.jcas.JCasRegistry;
/**
* the JCas class model for the CAS type uima.cas.AnnotationBase.
* The AnnotationBase type defines one system-used feature which
* specifies for an annotation the subject of analysis (Sofa) to which it refers.
* Various annotation types (including the built-in uima.tcas.Annotation)
* may be defined as subtypes of this type.
*
* uima.tcas.Annotation is a subtype of this type, appropriate for
* Subjects of Analysis which are text strings. Other (not-built-in)
* subtypes may be defined for other kinds of Subjects of Analysis. For instance
* an audio sample Subject of Analysis might define a start and end position as time points
* in the stream. An image Subject of Analysis might define rectangular coordiantes
* describing a sub-area of the image.
*
* If you are defining a type which needs a reference to the Subject of Analysis
* (which is view-specific),
* it should be a subtype of this base type.
*/
public class AnnotationBase extends TOP implements AnnotationBaseImpl {
/* public static strings for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = "org.apache.uima.cas.jcas.AnnotationBase";
public final static String _FeatName_sofa = "sofa";
public final static int typeIndexID = JCasRegistry.register(AnnotationBase.class);
public final static int type = typeIndexID;
@Override
public int getTypeIndexID() {
return typeIndexID;
}
// private final static int _FI_sofa = JCasRegistry.registerFeature(); // only for journal-able or corruptable feature slots
/* local data */
public final static int _FI_sofa = TypeSystemImpl.getAdjustedFeatureOffset("sofa");
// private final Sofa _F_sofa;
// Never called. Disable default constructor
protected AnnotationBase() {
}
// /* Internal - Constructor used by generator */
// public AnnotationBase(int addr, TOP_Type type) {
// super(addr, type);
// }
public AnnotationBase(JCas jcas) {
super(jcas);
if (_casView.isBaseCas()) {
throw new CASRuntimeException(CASRuntimeException.DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS, this.getClass().getName());
}
// no journaling, no index corruption checking
_setRefValueCommon(_FI_sofa, _casView.getSofaRef());
}
/**
* used by generator
* Make a new AnnotationBase
* @param c -
* @param t -
*/
public AnnotationBase(TypeImpl t, CASImpl c) {
super(t, c);
if (_casView.isBaseCas()) {
throw new CASRuntimeException(CASRuntimeException.DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS, this.getClass().getName());
}
// no journaling, no index corruption checking
_setRefValueCommon(_FI_sofa, _casView.getSofaRef());
}
// *------------------*
// * Feature: sofa
// * Sofa reference of the annotation
/*
* getter for sofa - gets Sofaref for annotation
*/
public Sofa getSofa() { return (Sofa) _getFeatureValueNc(_FI_sofa); }
// There is no setter for this
// The value is set and is fixed when this is created
@Override
public CAS getView() {
return _casView;
}
@Override
public void setFeatureValue(Feature feat, FeatureStructure v) {
FeatureImpl fi = (FeatureImpl) feat;
if (fi.getCode() == TypeSystemConstants.annotBaseSofaFeatCode) {
// trying to set the sofa - don't do this, but check if the value
// is OK (note: may break backwards compatibility)
if (v != _getFeatureValueNc(AnnotationBase._FI_sofa)) {
throw new CASRuntimeException(CASRuntimeException.ILLEGAL_SOFAREF_MODIFICATION);
}
}
super.setFeatureValue(feat, v);
}
}