blob: cf19c65200d0e0c1bcfa1c29821bd8e6e4d0dabb [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 java.io.InputStream;
import java.lang.invoke.CallSite;
import java.lang.invoke.MethodHandle;
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.CASImpl;
import org.apache.uima.cas.impl.SofaFSImpl;
import org.apache.uima.cas.impl.TypeImpl;
import org.apache.uima.cas.impl.TypeSystemImpl;
import org.apache.uima.jcas.JCasRegistry;
public class Sofa extends TOP implements SofaFSImpl {
/* public static string for use where constants are needed, e.g. in some Java Annotations */
public final static String _TypeName = CAS.TYPE_NAME_SOFA;
public final static String _FeatName_sofaNum = "sofaNum"; // int
public final static String _FeatName_sofaID = "sofaID"; // string
public final static String _FeatName_mimeType = "mimeType"; // string
public final static String _FeatName_sofaArray = "sofaArray"; // TOP
public final static String _FeatName_sofaString = "sofaString"; // string
public final static String _FeatName_sofaURI = "sofaURI"; // string
public final static int typeIndexID = JCasRegistry.register(Sofa.class);
public final static int type = typeIndexID;
@Override
public int getTypeIndexID() {
return typeIndexID;
}
/* local data */
// these static ints are for fast index corruption checking
// public final static int _FI_sofaNum = TypeSystemImpl.getAdjustedFeatureOffset("sofaNum");
// public final static int _FI_sofaID = TypeSystemImpl.getAdjustedFeatureOffset("sofaID");
// public final static int _FI_mimeType = TypeSystemImpl.getAdjustedFeatureOffset("mimeType");
// public final static int _FI_sofaArray = TypeSystemImpl.getAdjustedFeatureOffset("sofaArray");
// public final static int _FI_sofaString = TypeSystemImpl.getAdjustedFeatureOffset("sofaString");
// public final static int _FI_sofaURI = TypeSystemImpl.getAdjustedFeatureOffset("sofaURI");
private final static CallSite _FC_sofaNum = TypeSystemImpl.createCallSite(Sofa.class, "sofaNum");
private final static CallSite _FC_sofaID = TypeSystemImpl.createCallSite(Sofa.class, "sofaID");
private final static CallSite _FC_mimeType = TypeSystemImpl.createCallSite(Sofa.class, "mimeType");
private final static CallSite _FC_sofaArray = TypeSystemImpl.createCallSite(Sofa.class, "sofaArray");
private final static CallSite _FC_sofaString = TypeSystemImpl.createCallSite(Sofa.class, "sofaString");
private final static CallSite _FC_sofaURI = TypeSystemImpl.createCallSite(Sofa.class, "sofaURI");
private final static MethodHandle _FH_sofaNum = _FC_sofaNum.dynamicInvoker();
private final static MethodHandle _FH_sofaID = _FC_sofaID.dynamicInvoker();
private final static MethodHandle _FH_mimeType = _FC_mimeType.dynamicInvoker();
private final static MethodHandle _FH_sofaArray = _FC_sofaArray.dynamicInvoker();
private final static MethodHandle _FH_sofaString = _FC_sofaString.dynamicInvoker();
private final static MethodHandle _FH_sofaURI = _FC_sofaURI.dynamicInvoker();
// private final int _F_sofaNum;
// private final String _F_sofaID; // view name or _InitialView
// private String _F_mimeType; // may be changed
// private TOP _F_sofaArray;
// private String _F_sofaString;
// private String _F_sofaURI;
protected Sofa() {
// _F_sofaNum = 0;
// _F_sofaID = null;
// _F_mimeType = null;
}
/**
* used by generator, not used
* Make a new Sofa
* @param c -
* @param t -
*/
public Sofa(TypeImpl t, CASImpl c) {
super(t, c);
// _F_sofaNum = 0;
// _F_sofaID = null;
}
public Sofa(TypeImpl t, CASImpl c, int sofaNum, String viewName, String mimeType) {
super(t, c);
_setIntValueNcNj(wrapGetIntCatchException(_FH_sofaNum), sofaNum);
_setRefValueCommon(wrapGetIntCatchException(_FH_sofaID), viewName);
_setRefValueCommon(wrapGetIntCatchException(_FH_mimeType), mimeType);
// _F_sofaNum = sofaNum;
// _F_sofaID = viewName;
// _F_mimeType = mimeType;
}
// no constructor for Sofa for users
// use cas createSofa instead
// /**
// *
// * @param jcas JCas
// * @param ID the sofa ID
// * @param mimeType the mime type
// *
// * @deprecated As of v2.0, use {@link JCasImpl#createView(String)} to create a view, which will
// * also create the Sofa for that view.
//
// */
// @Deprecated
// public Sofa(JCas jcas, SofaID ID, String mimeType) {
// super(jcas);
// final CASImpl casImpl = jcasType.casImpl;
// casImpl.addSofa(this, ID.getSofaID(), mimeType);
// casImpl.getView(this); // needed to make reset work
// }
// *--------------*
// * Feature: sofaNum
// ** Note: this gets the same feature, sofaNum, as getSofaRef, below
/**
* getter for sofaNum
* @return the sofa number
*/
public int getSofaNum() { return _getIntValueNc(wrapGetIntCatchException(_FH_sofaNum)); }
// *--------------*
// * Feature: sofaID
/**
* getter for sofaID
* @return the sofaID, which is the same as the view name
*/
@Override
public String getSofaID() { return _getStringValueNc(wrapGetIntCatchException(_FH_sofaID)); }
// *--------------*
// * Feature: mimeType
/**
* getter for mimeType - gets
* @return the mime type
*/
public String getMimeType() { return _getStringValueNc(wrapGetIntCatchException(_FH_mimeType)); }
/**
* @see org.apache.uima.cas.SofaFS#setLocalSofaData(FeatureStructure) This method is duplicated in
* SofaFSImpl. Any changes should be made in both places.
* aFS must be an array
*/
@Override
public void setLocalSofaData(FeatureStructure aFS) {
if (isSofaDataSet()) { throwAlreadySet("setLocalSofaData()"); }
_setFeatureValueNcWj(wrapGetIntCatchException(_FH_sofaArray), aFS);
}
public void setLocalSofaData(FeatureStructure aFS, String mimeType) {
setLocalSofaData(aFS);
setMimeType(mimeType);
}
/**
* @see org.apache.uima.cas.SofaFS#setLocalSofaData(String)
*/
@Override
public void setLocalSofaData(String aString) {
setLocalSofaDataNoDocAnnotUpdate(aString);
// create or update the document annotation for this Sofa's view
((CASImpl)(_casView.getView(this))).updateDocumentAnnotation();
}
/**
* Internal use: used by deserializers
* @param aString the string to update
*/
public void setLocalSofaDataNoDocAnnotUpdate(String aString) {
if (isSofaDataSet()) { throwAlreadySet("setLocalSofaData()"); }
_setStringValueNcWj(wrapGetIntCatchException(_FH_sofaString), aString);
}
public void setLocalSofaData(String aString, String mimeType) {
setLocalSofaData(aString);
setMimeType(mimeType);
}
/**
* @see org.apache.uima.cas.SofaFS#getLocalFSData()
* returns an UIMA Array whose data represents the sofa
*/
@Override
public FeatureStructure getLocalFSData() { return _getFeatureValueNc(wrapGetIntCatchException(_FH_sofaArray)); }
/**
* @see org.apache.uima.cas.SofaFS#getLocalStringData()
*/
@Override
public String getLocalStringData() { return _getStringValueNc(wrapGetIntCatchException(_FH_sofaString)); }
/**
* @see org.apache.uima.cas.SofaFS#setRemoteSofaURI(String) This method is duplicated in
* SofaFSImpl. Any changes should be made in both places.
*/
@Override
public void setRemoteSofaURI(String aURI) {
if (isSofaDataSet()) { throwAlreadySet("setRemoteSofaURI()"); }
_setStringValueNcWj(wrapGetIntCatchException(_FH_sofaURI), aURI);
}
public void setRemoteSofaURI(String aURI, String mimeType) {
setRemoteSofaURI(aURI);
setMimeType(mimeType);
}
public boolean isSofaDataSet() {
return getLocalStringData() != null || // string data
getLocalFSData() != null || // array data
getSofaURI() != null; // remote data
}
@Override
public String getSofaMime() { return _getStringValueNc(wrapGetIntCatchException(_FH_mimeType)); }
@Override
public String getSofaURI() { return _getStringValueNc(wrapGetIntCatchException(_FH_sofaURI)); }
// ** Note: this gets the feature named "sofaNum"
@Override
public int getSofaRef() { return _getIntValueNc(wrapGetIntCatchException(_FH_sofaNum)); }
@Override
public InputStream getSofaDataStream() {
return _casView.getSofaDataStream(this);
}
/**
* These getter methods are for creating method handle access
* The getter name must match the feature name + transformation
* - used in generic pretty printing routines
* @return -
*/
public TOP getSofaArray() { return _getFeatureValueNc(wrapGetIntCatchException(_FH_sofaArray)); }
public String getSofaString() { return _getStringValueNc(wrapGetIntCatchException(_FH_sofaString)); }
// override setStringValue for SofaFS to prohibit setting in this manner!
@Override
public void setStringValue(Feature feat, String val) {
throw new CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
}
@Override
public void setFeatureValue(Feature feat, FeatureStructure fs) {
throw new CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
}
// override setIntValue for SofaFS to prohibit setting in this manner!
public void setIntValue(Feature feat, Integer val) {
throw new CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
}
private void throwAlreadySet(String msg) {
throw new CASRuntimeException(CASRuntimeException.SOFADATA_ALREADY_SET, msg);
}
public void setMimeType(String v) { _setStringValueNcWj(wrapGetIntCatchException(_FH_mimeType), v); }
}