Log in Help
Print
Homewikicode-repositorysrcsheffieldexamples 〉 DataStoreApplication.java
 
package sheffield.examples;

/*
 *  DataStoreApplication.java
 *
 *  Copyright (c) 1998-2003, 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).
 *
 *  Marin Dimitrov, 18/Jan/2003
 *
 *  $Id: DataStoreApplication.java,v 1.3 2004/12/14 14:36:24 niraj Exp $
 */

import java.net.*;

import gate.*;
import gate.persist.SerialDataStore;
import gate.util.Err;
import gate.util.Out;

import gate.creole.ResourceInstantiationException;
import gate.util.GateException;


public class DataStoreApplication {

  //the directory must EXIST and be EMPTY
  //private static final String dsDir = "/var/tmp/gate001";
  private static final String DS_DIR = "file:///c:/temp/gate001";

  public DataStoreApplication() {
  }


  public static void main(String[] args) {

    DataStoreApplication dsApp = new DataStoreApplication();

    //init GATE
    //    this is the first thing to be done
    try {
      Gate.init();
    }
    catch (GateException gex) {
      Err.prln("cannot initialise GATE...");
      gex.printStackTrace();
      return;
    }


    try {

      //create&open a new Serial Data Store
      //    pass the datastore class and path as parameteres
      SerialDataStore sds  = (SerialDataStore)Factory.createDataStore("gate.persist.SerialDataStore",
                                                                      DS_DIR);
      sds.open();
      Out.prln("serial datastore created...");

      //create test corpus
      Corpus corp = dsApp.createTestCorpus();
      Corpus persistCorp = null;

      //save corpus in datastore
      //    SecurityInfo is ingored for SerialDataStore - just pass null
      //    a new persisent corpus is returned
      persistCorp = (Corpus)sds.adopt(corp,null);
      sds.sync(persistCorp);
      Out.prln("corpus saved in datastore...");

      //change corpus and sync it with the datastore
      persistCorp.setName("new name");
      persistCorp.sync();

      //load corpus from datastore using its persistent ID
      Object corpusID  = persistCorp.getLRPersistenceId();
      persistCorp = null;

      FeatureMap corpFeatures = Factory.newFeatureMap();
      corpFeatures.put(DataStore.LR_ID_FEATURE_NAME, corpusID);
      corpFeatures.put(DataStore.DATASTORE_FEATURE_NAME, sds);

      //tell the factory to load the Serial Corpus with the specified ID from the specified  datastore
      persistCorp = (Corpus)Factory.createResource("gate.corpora.SerialCorpusImpl", corpFeatures);
      Out.prln("corpus loaded from datastore...");

      //remove corpus from datastore
      sds.delete("gate.corpora.SerialCorpusImpl", corpusID);
      Out.prln("corpus deleted from datastore...");
      persistCorp = null;

      //close data store
      sds.close();
      sds = null;

      //reopen it
      sds = new SerialDataStore(DS_DIR);
      sds.open();

      //save, load and delete a document
      Document doc = dsApp.createTestDocument();
      Document persistDoc = null;

      //save document in datastore
      //    SecurityInfo is ingored for SerialDataStore - just pass null
      persistDoc = (Document)sds.adopt(doc,null);
      sds.sync(persistDoc);
      Out.prln("document saved in datastore...");

      //change document and sync it with the datastore
      persistDoc.setName("new name");
      persistDoc.sync();

      //load document from datastore
      Object docID  = persistDoc.getLRPersistenceId();
      persistDoc = null;

      FeatureMap docFeatures = Factory.newFeatureMap();
      docFeatures.put(DataStore.LR_ID_FEATURE_NAME, docID);
      docFeatures.put(DataStore.DATASTORE_FEATURE_NAME, sds);

      persistDoc = (Document)Factory.createResource("gate.corpora.DocumentImpl", docFeatures);
      Out.prln("document loaded from datastore...");

      //remove document from datastore
      sds.delete("gate.corpora.DocumentImpl", docID);
      Out.prln("document deleted from datastore...");
      persistDoc = null;

      //close data store
      sds.close();

      //delete datastore
      sds.delete();

    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }





  public Corpus createTestCorpus()
    throws MalformedURLException, ResourceInstantiationException {

    Document doc1 = Factory.newDocument(new URL("http://gate.ac.uk/index.html"));
    //Document doc1 = Factory.newDocument(new URL("file:///c:/temp/test.txt"));
    Document doc2 = Factory.newDocument(new URL("http://gate.ac.uk/documentation.html"));

    assert doc1!=null && doc2!=null;

    // create a corpus with the above documents
    Corpus result = Factory.newCorpus("test corpus");
    assert result != null;
    result.add(doc1);
    result.add(doc2);

    return result;
  }


  public Document createTestDocument()
    throws MalformedURLException, ResourceInstantiationException {

    Document result = Factory.newDocument(new URL("http://gate.ac.uk/index.html"));
    assert result!=null;

    return result;
  }


}