diff software/mpdl-services/mpiwg-mpdl-lt/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/db/DBMorphWriter.java @ 19:4a3641ae14d2

Erstellung
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Wed, 09 Nov 2011 15:32:05 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/software/mpdl-services/mpiwg-mpdl-lt/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/db/DBMorphWriter.java	Wed Nov 09 15:32:05 2011 +0100
@@ -0,0 +1,168 @@
+package de.mpg.mpiwg.berlin.mpdl.lt.morph.db;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Date;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+
+import com.sun.org.apache.xerces.internal.parsers.SAXParser;
+
+import de.mpg.mpiwg.berlin.mpdl.lt.general.Constants;
+import de.mpg.mpiwg.berlin.mpdl.lt.morph.app.Form;
+import de.mpg.mpiwg.berlin.mpdl.lt.morph.app.Lemma;
+import de.mpg.mpiwg.berlin.mpdl.lt.morph.db.DBMorphHandler;
+import de.mpg.mpiwg.berlin.mpdl.util.Util;
+import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;
+
+public class DBMorphWriter {
+  private static DBMorphWriter instance;
+  private static String DATA_DIR = Constants.getInstance().getDataDir();
+  private static String DB_DIR_DONATUS = DATA_DIR + "/dataBerkeleyDB/donatus";
+  private static String DATA_FILES_DIR = DATA_DIR + "/dataFiles";
+  private DBMorphHandler dbMorphHandler;
+  private Date beginOfOperation;
+  private Date endOfOperation;
+  
+  public static DBMorphWriter getInstance() throws ApplicationException {
+    if (instance == null) {
+      instance = new DBMorphWriter();
+      instance.init();
+    }
+    return instance;
+  }
+
+  /**
+   * 
+   */
+  public static void main(String[] args) throws ApplicationException {
+    getInstance();
+    instance.beginOperation();
+    System.out.println("Start ...");
+    instance.init();
+    instance.openMorphData();
+    // instance.deleteMorphData();
+    long size = instance.getSize();
+    System.out.println("Count forms: " + size);
+    // instance.writeMorphData();
+    // instance.readSampleData();
+    instance.end();
+    instance.endOperation();
+    Double elapsedTime = new Util().getSecondWithMillisecondsBetween(instance.beginOfOperation, instance.endOfOperation);
+    System.out.println("End.");
+    System.out.println("Needed time: " + elapsedTime + " seconds");
+  }
+
+  private void init() throws ApplicationException {
+    dbMorphHandler = new DBMorphHandler(DB_DIR_DONATUS);
+    dbMorphHandler.start();
+  }
+  
+  private void openMorphData() throws ApplicationException {
+    dbMorphHandler.openDatabases();
+  }
+  
+  private void deleteMorphData() throws ApplicationException {
+    dbMorphHandler.deleteMorphData();
+  }
+  
+  private void writeMorphData() throws ApplicationException {
+    String inputFileNameLatin = DATA_FILES_DIR + "/" + "perseus-latin-forms.xml";
+    instance.write(inputFileNameLatin);
+    String inputFileNameGreek = DATA_FILES_DIR + "/" + "perseus-greek-forms.xml";
+    instance.write(inputFileNameGreek);
+    String inputFileNameArabic = DATA_FILES_DIR + "/" + "perseus-arabic-forms.xml";
+    instance.write(inputFileNameArabic);
+    String inputFileNameDutch = DATA_FILES_DIR + "/" + "celex-dutch-forms.xml";
+    instance.write(inputFileNameDutch);
+    String inputFileNameGerman = DATA_FILES_DIR + "/" + "celex-german-forms.xml";
+    instance.write(inputFileNameGerman);
+    String inputFileNameEnglish = DATA_FILES_DIR + "/" + "celex-english-forms.xml";
+    instance.write(inputFileNameEnglish);
+    String inputFileNameFrench = DATA_FILES_DIR + "/" + "lexique-french-forms.xml";
+    instance.write(inputFileNameFrench);
+    String inputFileNameItalian = DATA_FILES_DIR + "/" + "donatus-italian-forms.xml";
+    instance.write(inputFileNameItalian);
+    String[] languages = {"ar", "de", "en", "el", "fr", "it", "la"};
+    for (int i = 0; i < languages.length; i++) {
+      String language = languages[i];
+      String inputFileNameDonatusSup = DATA_FILES_DIR + "/" + "donatus-sup-" + language + "-forms.xml";
+      instance.write(inputFileNameDonatusSup);
+    }
+    String[] donatusAdditionalSups = {"cache-la", "cache-el", "cache-it"};
+    for (int i = 0; i < donatusAdditionalSups.length; i++) {
+      String donatusAdditionalSupName = donatusAdditionalSups[i];
+      String inputFileNameDonatusAddSup = DATA_FILES_DIR + "/donatusAdditionalSup/" + "donatus-sup-" + donatusAdditionalSupName + ".xml";
+      instance.write(inputFileNameDonatusAddSup);
+    }
+  }
+  
+  private void write(String inputFileName) throws ApplicationException {
+    File inputFile = new File(inputFileName);
+    if (! inputFile.exists()) {
+      System.out.println("Input file: " + inputFile.getAbsolutePath() + " does not exist.");
+      return;
+    }
+    DBMorphWriterContentHandler morphContentHandler = new DBMorphWriterContentHandler(dbMorphHandler);
+    try {
+      XMLReader xmlParser = new SAXParser();
+      xmlParser.setContentHandler(morphContentHandler);
+      InputStream inputStream = new FileInputStream(inputFile);
+      BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
+      InputSource input = new InputSource(bufferedInputStream);
+      xmlParser.parse(input);
+      bufferedInputStream.close();
+    } catch (SAXException e) {
+      throw new ApplicationException(e);
+    } catch (IOException e) {
+      throw new ApplicationException(e);
+    }
+  }
+  
+  private long getSize() throws ApplicationException {
+    long size = dbMorphHandler.getSize();
+    return size;
+  }
+  
+  private void addSampleData() throws ApplicationException {
+    Lemma l1 = new Lemma("perseus", "la", "abrogo");
+    Form f1 = new Form("perseus", "la", "abrogare");
+    Form f2 = new Form("perseus", "la", "abroges");
+    dbMorphHandler.writeFormLemma(f1, l1);
+    dbMorphHandler.writeLemmaForm(l1, f1);
+    dbMorphHandler.writeLemmaForm(l1, f2);
+  }
+  
+  private void readSampleData() throws ApplicationException {
+    ArrayList<Form> forms = dbMorphHandler.readForms("la", "abrogo");
+    System.out.println("Forms: " + forms);
+  }
+  
+  private void deleteSampleData() throws ApplicationException {
+    Lemma l1 = new Lemma("perseus", "la", "abrogo");
+    Form f1 = new Form("perseus", "la", "abrogare");
+    Form f2 = new Form("perseus", "la", "abroges");
+    dbMorphHandler.deleteLemma(l1);
+    dbMorphHandler.deleteForm(f1);
+    dbMorphHandler.deleteForm(f2);
+  }
+  
+  private void end() throws ApplicationException {
+    dbMorphHandler.closeDatabases();
+  }
+
+  private void beginOperation() {
+    beginOfOperation = new Date();
+  }
+
+  private void endOperation() {
+    endOfOperation = new Date();
+  }
+
+}
\ No newline at end of file