Search in sources :

Example 16 with PersistenceException

use of gate.persist.PersistenceException in project gate-core by GateNLP.

the class CorpusBenchmarkTool method evaluateMarkedStored.

// evaluateCorpus
protected void evaluateMarkedStored(File markedDir, File storedDir, File errDir) {
    Document persDoc = null;
    Document cleanDoc = null;
    Document markedDoc = null;
    // open the datastore and process each document
    try {
        // open the data store
        DataStore sds = Factory.openDataStore("gate.persist.SerialDataStore", storedDir.toURI().toURL().toExternalForm());
        List<String> lrIDs = sds.getLrIds("gate.corpora.DocumentImpl");
        for (int i = 0; i < lrIDs.size(); i++) {
            String docID = lrIDs.get(i);
            // read the stored document
            FeatureMap features = Factory.newFeatureMap();
            features.put(DataStore.DATASTORE_FEATURE_NAME, sds);
            features.put(DataStore.LR_ID_FEATURE_NAME, docID);
            FeatureMap hparams = Factory.newFeatureMap();
            // Gate.setHiddenAttribute(hparams, true);
            persDoc = (Document) Factory.createResource("gate.corpora.DocumentImpl", features, hparams);
            if (isMoreInfoMode) {
                StringBuffer errName = new StringBuffer(persDoc.getName());
                errName.replace(persDoc.getName().lastIndexOf("."), persDoc.getName().length(), ".err");
                Out.prln("<H2>" + "<a href=\"err/" + errName.toString() + "\">" + persDoc.getName() + "</a>" + "</H2>");
            } else
                Out.prln("<H2>" + persDoc.getName() + "</H2>");
            if (!this.isMarkedDS) {
                // try finding the marked document as file
                StringBuffer docName = new StringBuffer(persDoc.getName());
                docName.replace(persDoc.getName().lastIndexOf("."), docName.length(), ".xml");
                File markedDocFile = new File(markedDir, docName.toString());
                if (!markedDocFile.exists()) {
                    Out.prln("Warning: Cannot find human-annotated document " + markedDocFile + " in " + markedDir);
                } else {
                    FeatureMap params = Factory.newFeatureMap();
                    params.put(Document.DOCUMENT_URL_PARAMETER_NAME, markedDocFile.toURI().toURL());
                    params.put(Document.DOCUMENT_ENCODING_PARAMETER_NAME, documentEncoding);
                    // create the document
                    markedDoc = (Document) Factory.createResource("gate.corpora.DocumentImpl", params, hparams);
                    markedDoc.setName(persDoc.getName());
                }
            // find marked as file
            } else {
                try {
                    // open marked from a DS
                    // open the data store
                    DataStore sds1 = Factory.openDataStore("gate.persist.SerialDataStore", markedDir.toURI().toURL().toExternalForm());
                    List<String> lrIDs1 = sds1.getLrIds("gate.corpora.DocumentImpl");
                    boolean found = false;
                    int k = 0;
                    // search for the marked doc with the same name
                    while (k < lrIDs1.size() && !found) {
                        String docID1 = lrIDs1.get(k);
                        // read the stored document
                        FeatureMap features1 = Factory.newFeatureMap();
                        features1.put(DataStore.DATASTORE_FEATURE_NAME, sds1);
                        features1.put(DataStore.LR_ID_FEATURE_NAME, docID1);
                        Document tempDoc = (Document) Factory.createResource("gate.corpora.DocumentImpl", features1, hparams);
                        // check whether this is our doc
                        if (((String) tempDoc.getFeatures().get("gate.SourceURL")).endsWith(persDoc.getName())) {
                            found = true;
                            markedDoc = tempDoc;
                        } else
                            k++;
                    }
                } catch (java.net.MalformedURLException ex) {
                    Out.prln("Error finding marked directory " + markedDir.getAbsolutePath());
                } catch (gate.persist.PersistenceException ex1) {
                    Out.prln("Error opening marked as a datastore (-marked_ds specified)");
                } catch (gate.creole.ResourceInstantiationException ex2) {
                    Out.prln("Error opening marked as a datastore (-marked_ds specified)");
                }
            }
            evaluateDocuments(persDoc, cleanDoc, markedDoc, errDir);
            if (persDoc != null) {
                final gate.Document pd = persDoc;
                javax.swing.SwingUtilities.invokeLater(new Runnable() {

                    @Override
                    public void run() {
                        Factory.deleteResource(pd);
                    }
                });
            }
            if (markedDoc != null) {
                final gate.Document md = markedDoc;
                javax.swing.SwingUtilities.invokeLater(new Runnable() {

                    @Override
                    public void run() {
                        Factory.deleteResource(md);
                    }
                });
            }
        }
        // for loop through saved docs
        sds.close();
    } catch (java.net.MalformedURLException ex) {
        throw (GateRuntimeException) new GateRuntimeException("CorpusBenchmark: " + ex.getMessage()).initCause(ex);
    } catch (PersistenceException ex1) {
        throw (GateRuntimeException) new GateRuntimeException("CorpusBenchmark: " + ex1.getMessage()).initCause(ex1);
    } catch (ResourceInstantiationException ex2) {
        throw (GateRuntimeException) new GateRuntimeException("CorpusBenchmark: " + ex2.getMessage()).initCause(ex2);
    }
}
Also used : ResourceInstantiationException(gate.creole.ResourceInstantiationException) Document(gate.Document) ResourceInstantiationException(gate.creole.ResourceInstantiationException) FeatureMap(gate.FeatureMap) PersistenceException(gate.persist.PersistenceException) SerialDataStore(gate.persist.SerialDataStore) DataStore(gate.DataStore) PersistenceException(gate.persist.PersistenceException) Document(gate.Document) File(java.io.File)

Example 17 with PersistenceException

use of gate.persist.PersistenceException in project gate-core by GateNLP.

the class SerialCorpusImpl method resourceDeleted.

/**
 * Called by a datastore when a resource has been deleted
 */
@Override
public void resourceDeleted(DatastoreEvent evt) {
    DataStore ds = (DataStore) evt.getSource();
    // 1. check whether this datastore fired the event. If not, return.
    if (!ds.equals(this.dataStore))
        return;
    Object docID = evt.getResourceID();
    if (docID == null)
        return;
    if (DEBUG)
        Out.prln("Resource deleted called for: " + docID);
    // unloaded immediately
    if (docID.equals(this.getLRPersistenceId())) {
        Factory.deleteResource(this);
        return;
    }
    // if
    boolean isDirty = false;
    // first
    for (int i = 0; i < docDataList.size(); i++) {
        DocumentData docData = docDataList.get(i);
        // don't break the loop, because it might appear more than once
        if (docID.equals(docData.getPersistentID())) {
            if (evt.getResource() == null) {
                // instead of calling remove() which tries to load the
                // document
                // remove it from the documents and docDataList
                documentRemoved(docDataList.get(i).persistentID.toString());
                docDataList.remove(i);
                documents.remove(i);
                isDirty = true;
                i--;
                continue;
            }
            remove(i);
            isDirty = true;
        }
    // if
    }
    if (isDirty)
        try {
            this.dataStore.sync(this);
        } catch (PersistenceException ex) {
            throw new GateRuntimeException("SerialCorpusImpl: " + ex.getMessage());
        } catch (SecurityException sex) {
            throw new GateRuntimeException("SerialCorpusImpl: " + sex.getMessage());
        }
}
Also used : DataStore(gate.DataStore) GateRuntimeException(gate.util.GateRuntimeException) PersistenceException(gate.persist.PersistenceException)

Aggregations

PersistenceException (gate.persist.PersistenceException)17 ResourceInstantiationException (gate.creole.ResourceInstantiationException)9 DataStore (gate.DataStore)6 GateRuntimeException (gate.util.GateRuntimeException)6 FeatureMap (gate.FeatureMap)5 SerialDataStore (gate.persist.SerialDataStore)5 MalformedURLException (java.net.MalformedURLException)5 URL (java.net.URL)5 Document (gate.Document)4 ParameterException (gate.creole.ParameterException)4 ResourceData (gate.creole.ResourceData)4 Resource (gate.Resource)3 File (java.io.File)3 AbstractResource (gate.creole.AbstractResource)2 Parameter (gate.creole.Parameter)2 ParameterList (gate.creole.ParameterList)2 Plugin (gate.creole.Plugin)2 StatusListener (gate.event.StatusListener)2 GateException (gate.util.GateException)2 IOException (java.io.IOException)2