Package org.apache.uima.analysis_engine.metadata.impl

Source Code of org.apache.uima.analysis_engine.metadata.impl.FlowControllerDeclaration_impl

/*
* 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.analysis_engine.metadata.impl;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import org.apache.uima.UIMAFramework;
import org.apache.uima.analysis_engine.metadata.FlowControllerDeclaration;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.ResourceSpecifier;
import org.apache.uima.resource.metadata.Import;
import org.apache.uima.resource.metadata.impl.MetaDataObject_impl;
import org.apache.uima.resource.metadata.impl.PropertyXmlInfo;
import org.apache.uima.resource.metadata.impl.XmlizationInfo;
import org.apache.uima.util.InvalidXMLException;
import org.apache.uima.util.Level;
import org.apache.uima.util.XMLInputSource;
import org.apache.uima.util.XMLParser;
import org.apache.uima.util.XMLParser.ParsingOptions;
import org.w3c.dom.Element;
import org.xml.sax.helpers.AttributesImpl;

/**
* Declares which FlowController is used by the Aggregate Analysis Engine.
*/
public class FlowControllerDeclaration_impl extends MetaDataObject_impl implements
        FlowControllerDeclaration {
  private static final long serialVersionUID = 1526130202197517743L;

  private String mKey;

  private Import mImport;

  private ResourceSpecifier mSpecifier;

  /*
   * (non-Javadoc)
   *
   * @see org.apache.uima.analysis_engine.metadata.FlowControllerDeclaration#getKey()
   */
  public String getKey() {
    return mKey;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.apache.uima.analysis_engine.metadata.FlowControllerDeclaration#setKey(java.lang.String)
   */
  public void setKey(String aKey) {
    mKey = aKey;
  }

  /*
   * (non-Javadoc)
   *
   * @see FlowControllerDeclaration#getImport()
   */
  public Import getImport() {
    return mImport;
  }

  /*
   * (non-Javadoc)
   *
   * @see FlowControllerDeclaration#setImport(org.apache.uima.resource.metadata.Import)
   */
  public void setImport(Import aImport) {
    mImport = aImport;
  }

  /*
   * (non-Javadoc)
   *
   * @see FlowControllerDeclaration#getSpecifier()
   */
  public ResourceSpecifier getSpecifier() {
    return mSpecifier;
  }

  /*
   * (non-Javadoc)
   *
   * @see FlowControllerDeclaration#setSpecifier(org.apache.uima.resource.ResourceSpecifier)
   */
  public void setSpecifier(ResourceSpecifier aSpecifier) {
    mSpecifier = aSpecifier;
  }

  /*
   * (non-Javadoc)
   *
   * @see FlowControllerDeclaration#resolveImports()
   */
  public void resolveImports() throws InvalidXMLException {
    resolveImports(UIMAFramework.newDefaultResourceManager());
  }

  /*
   * (non-Javadoc)
   *
   * @see FlowControllerDeclaration#resolveImports(org.apache.uima.resource.ResourceManager)
   */
  public void resolveImports(ResourceManager aResourceManager) throws InvalidXMLException {
    Import theImport = getImport();
    if (theImport != null) {
      URL url = theImport.findAbsoluteUrl(aResourceManager);
      InputStream stream = null;
      try {
        stream = url.openStream();
        XMLInputSource input = new XMLInputSource(url);
        ResourceSpecifier spec = UIMAFramework.getXMLParser().parseResourceSpecifier(input);
        setSpecifier(spec);
        setImport(null);
      } catch (IOException e) {
        throw new InvalidXMLException(e);
      } finally {
        try {
          if (stream != null) {
            stream.close();
          }
        } catch (IOException e1) {
          UIMAFramework.getLogger(this.getClass()).log(Level.SEVERE, "", e1);
        }
      }
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see org.apache.uima.resource.metadata.impl.MetaDataObject_impl#buildFromXMLElement(org.w3c.dom.Element,
   *      org.apache.uima.util.XMLParser, org.apache.uima.util.XMLParser.ParsingOptions)
   */
  public void buildFromXMLElement(Element aElement, XMLParser aParser, ParsingOptions aOptions)
          throws InvalidXMLException {
    super.buildFromXMLElement(aElement, aParser, aOptions);
    // set key from attributes
    mKey = aElement.getAttribute("key");
  }

  /*
   * (non-Javadoc)
   *
   * @see org.apache.uima.resource.metadata.impl.MetaDataObject_impl#getXMLAttributes()
   */
  protected AttributesImpl getXMLAttributes() {
    // write key as attribute
    AttributesImpl attrs = new AttributesImpl();
    if (mKey != null && mKey.length() > 0) {
      attrs.addAttribute(null, null, "key", "string", mKey);
    }
    return attrs;
  }

  protected XmlizationInfo getXmlizationInfo() {
    return XMLIZATION_INFO;
  }

  static final private XmlizationInfo XMLIZATION_INFO = new XmlizationInfo("flowController",
          new PropertyXmlInfo[] { new PropertyXmlInfo("import", null),
              new PropertyXmlInfo("specifier", null) });
}
TOP

Related Classes of org.apache.uima.analysis_engine.metadata.impl.FlowControllerDeclaration_impl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.