Log in Help
Print
Homereleasesgate-5.1-beta2-build3402-ALLpluginsOntologysrcgatecreoleontologyimplsesame 〉 OntologyLR.java
 
/*
 *  Copyright (c) 1998-2009, The University of Sheffield.
 *
 *  This file is part of GATE (see http://gate.ac.uk/), and is free
 *  software, licenced under the GNU Library General Public License,
 *  Version 2, June 1991 (in the distribution as file licence.html,
 *  and also available at http://gate.ac.uk/gate/licence.html).
 *
 *  Johann Petrak 2009-08-13
 *
 *  $Id: OntologyLR.java 11598 2009-10-13 13:44:17Z johann_p $
 */
package gate.creole.ontology.impl.sesame;

import gate.Gate;
import gate.Resource;
import gate.event.CreoleEvent;
import gate.event.CreoleListener;
import gate.gui.ActionsPublisher;

import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractAction;

import org.apache.log4j.Logger;

/**
 * The common abstract base class for all ontology LRs in this implementation.
 * 
 * @author Johann Petrak
 * 
 */
public abstract class OntologyLR
    extends AbstractOntologyImplSesame
    implements ActionsPublisher, CreoleListener {

  /**
   * If true, the debug information is printed.
   */
  protected final static boolean DEBUG = true;

  /**
   * Actions for the remote ontology LR.
   */
  protected List<AbstractAction> actionsList;

  private Logger logger;

  /**
   * Constructor
   */
  public OntologyLR()  {
    super();
    logger = Logger.getLogger(this.getClass().getName());
    actionsList = new ArrayList<AbstractAction>();
    actionsList.add(new ActionLoadOntology("Load",this));
    actionsList.add(new ActionSaveOntology("Save as ...",this));
    actionsList.add(new ActionCleanOntology("Delete ontology data",this));
  }



  public List getActions() {
    return actionsList;
  }

  // ************ Creole Listener Methods ************
  public void resourceLoaded(CreoleEvent ce) {
    // do nothing
  }

  public void datastoreClosed(CreoleEvent ce) {
  }

  public void resourceRenamed(Resource resource, String oldname, String newname) {
  }

  public void datastoreOpened(CreoleEvent ce) {
  }

  public void datastoreCreated(CreoleEvent ce) {
  }

  /**
   * This method removes the repository, provided that user has decided
   * not to persist this, when this resource is unloaded
   */
  // TODO: when does this get executed?
  public void resourceUnloaded(CreoleEvent ce) {
    logger.debug("============= Running resourceUnloaded!");
    if(ce.getResource() == this) {
      //unload();
      Gate.getCreoleRegister().removeCreoleListener(this);
    }
  }

  /**
   * This method deletes the repository from memory and releases all
   * resources occupied by the ontology. Please note that after calling
   * this method, any call to any method of the ontology will throw an
   * exception complaining that the repository does not exist. So this
   * should be the last call to this ontology when you decide to discard
   * this instance of ontology.
   */
  public void cleanup() {
    super.cleanup();
    logger.debug("Running cleanup ...");
    if(ontologyService != null) {
      ontologyService.shutdown();
      ontologyService = null;
    } else {
      logger.debug("ongologyService is already null in cleanup!");
    }
  }

  // just for testing
  public OntologyServiceImplSesame getService() {
    return (OntologyServiceImplSesame)ontologyService;
  }

}