TyErrorId typeSystemInit(TypeSystem const & crTypeSystem) {
    cout << "SofaExampleAnnotator::typeSystemInit()" << endl;

    // get Type and Feature objects for use in process()
    annot  = crTypeSystem.getType("uima.tcas.Annotation");
    cross  = crTypeSystem.getType("sofa.test.CrossAnnotation");
    other = cross.getFeatureByBaseName("otherAnnotation");
    if (!(annot.isValid() && cross.isValid() && other.isValid())) {
      cout << "SofaExampleAnnotator::typeSystemInit() - Error getting Type or Feature objects" << endl;
      return (TyErrorId)UIMA_ERR_RESMGR_INVALID_RESOURCE;
    }
    return(TyErrorId)UIMA_ERR_NONE;
  }
        /**
         * Gathers all output capabilities from the TAE specifier.
         * This result spec is implicitly assumed when calling process(CAS) without a result spec.
         */
        TyErrorId EngineBase::initializeCompleteResultSpec() {
            iv_completeResultSpec.clear();

            assert(EXISTS(iv_casDefinition));
            uima::TypeSystem const& rTypeSystem = iv_casDefinition->getTypeSystem();

            AnnotatorContext const& crANC = getAnnotatorContext();

            AnalysisEngineMetaData::TyVecpCapabilities const& crVecCaps = crANC.getTaeSpecifier().getAnalysisEngineMetaData()->getCapabilites();
            AnalysisEngineMetaData::TyVecpCapabilities::const_iterator citCaps;

            for (citCaps = crVecCaps.begin(); citCaps != crVecCaps.end(); ++citCaps) {
                Capability const* cpCap = *citCaps;
                Capability::TyVecCapabilityTofs const& crTypes = cpCap->getCapabilityTypes(Capability::OUTPUT);
                Capability::TyVecCapabilityTofs::const_iterator citTOFs;
                for (citTOFs = crTypes.begin(); citTOFs != crTypes.end(); ++citTOFs) {
                    Type t = rTypeSystem.getType(*citTOFs);
                    if (!t.isValid()) {
                        ErrorInfo errInf(
                        ErrorMessage(UIMA_MSG_ID_UNKNOWN_FEATURE_IN_CAPBILITY_SPEC, (*citTOFs)),
                        UIMA_ERR_ANNOTATOR_MGR_CONFIG_INVALID_RESULTSPECIFICATION,
                        ErrorInfo::unrecoverable);
                        getAnnotatorContext().getLogger().logError(errInf);
                        return UIMA_ERR_ANNOTATOR_MGR_CONFIG_INVALID_RESULTSPECIFICATION;
                    }
                    iv_completeResultSpec.add(t);
                }

                Capability::TyVecCapabilityTofs const& crFeatures = cpCap->getCapabilityFeatures(Capability::OUTPUT);
                for (citTOFs = crFeatures.begin(); citTOFs != crFeatures.end(); ++citTOFs) {
                    Feature f = rTypeSystem.getFeatureByFullName(*citTOFs);
                    if (!f.isValid()) {
                        ErrorInfo errInf(
                        ErrorMessage(UIMA_MSG_ID_UNKNOWN_FEATURE_IN_CAPBILITY_SPEC, (*citTOFs)),
                        UIMA_ERR_ANNOTATOR_MGR_CONFIG_INVALID_RESULTSPECIFICATION,
                        ErrorInfo::unrecoverable);
                        getAnnotatorContext().getLogger().logError(errInf);
                        return UIMA_ERR_ANNOTATOR_MGR_CONFIG_INVALID_RESULTSPECIFICATION;
                    }
                    iv_completeResultSpec.add(f);
                }

            }
            return UIMA_ERR_NONE;
        }
Exemple #3
0
int main(int argc, char** argv) {
  Feature feature;
  // добавлена обработка ошибок
  FILE * file;
  if ((file = fopen("features.dat", "r")) == NULL) {
    perror("open file");
    exit(EXIT_FAILURE);
  }

  if (!feature.read(file)) {
    perror("fread");
    exit(EXIT_FAILURE);
  }

  if (!feature.isValid())
    return 1;
  return 0;
}
 /*static*/
 void
 CapabilityContainer::initTypeOrFeatures(
   TyMapLang2TypeOrFeatures & rMap, // output argument
   Capability::TyVecCapabilityTofs const & vecTofs,
   Capability::TyVecCapabilityLanguages const & vecLangs,
   TypeSystem const & typeSystem) {
   const int BUF_SIZE = 0x100;
   char  cBuf[BUF_SIZE];
   Capability::TyVecCapabilityLanguages::const_iterator itLang;
   for (itLang = vecLangs.begin(); itLang != vecLangs.end(); ++itLang) {
     // convert unicode lang string to single-byte lang string
     assert((*itLang).length() < BUF_SIZE);
     // Note: this conversion can be used only for invariant characters
     u_UCharsToChars((*itLang).getBuffer(), cBuf, (*itLang).length());
     // zero terminate single-byte buffer
     cBuf[(*itLang).length()] = '\0';
     // Special workaround code for the new way to specify the unspecified language
     if (strcasecmp(cBuf, "x-unspecified") == 0) {
       strcpy(cBuf, Language::UNSPECIFIED);
     }
     // create a language object based on single-byte lang string
     Language lang(cBuf);
     if (!lang.isValid()) {
       /* taph 06.02.2003: once we have more detailed information about
       the origin of the error we need to replace "unknown configuration file"
       with the filename of the XML file (and maybe line number?) */
       UIMA_EXC_THROW_NEW(uima::CapabilityException,          // exc-type
                          UIMA_ERR_ENGINE_LANGUAGE_INVALID,   // error code
                          ErrorMessage(UIMA_MSG_ID_EXC_INVALID_LANGUAGE, cBuf), // error message
                          ErrorMessage(UIMA_MSG_ID_EXCON_CHECKING_CAPABILITY_SPEC,"unknown configuration file"),  // error context message
                          ErrorInfo::recoverable);
     }
     // create a new empty vector in the map for this lang
     TySetTypeOrFeatures & setTofs = rMap[lang];
     // now fill the vector with tof objects created from tof strings
     Capability::TyVecCapabilityTofs::const_iterator itTof;
     for (itTof = vecTofs.begin(); itTof != vecTofs.end(); ++itTof) {
       TypeOrFeature tof;
       // the tof string may be a type...
       Type t = typeSystem.getType(*itTof);
       if (t.isValid()) {
         tof = TypeOrFeature(t);
       } else {
         // or the tof string may be a feature
         Feature f = typeSystem.getFeatureByFullName(*itTof);
         if (f.isValid()) {
           tof = TypeOrFeature(f);
         } else {
           /* taph 06.02.2003: once we have more detailed information about
           the origin of the error we need to replace "unknown configuration file"
           with the filename of the XML file (and maybe line number?) */
           if (tof.isType()) {
             UIMA_EXC_THROW_NEW(uima::CapabilityException,        // exc-type
                                UIMA_ERR_INVALID_FSTYPE_OBJECT,   // error code
                                ErrorMessage(UIMA_MSG_ID_EXC_UNKNOWN_TYPE_NAME, *itTof), // error message
                                ErrorMessage(UIMA_MSG_ID_EXCON_CHECKING_CAPABILITY_SPEC, "unknown configuration file"),  // error context message
                                ErrorInfo::recoverable);
           } else {
             UIMA_EXC_THROW_NEW(uima::CapabilityException,        // exc-type
                                UIMA_ERR_INVALID_FSFEATURE_OBJECT,// error code
                                ErrorMessage(UIMA_MSG_ID_EXC_UNKNOWN_FEATURE_NAME, *itTof), // error message
                                ErrorMessage(UIMA_MSG_ID_EXCON_CHECKING_CAPABILITY_SPEC, "unknown configuration file"),  // error context message
                                ErrorInfo::recoverable);
           }
         }
       }
       assert(tof.isValid());
       setTofs.insert(tof);
     } // for all tof strings
   } // for all lang strings
 }