Mercurial > hg > mpdl-group
view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/db/DBMorphWriter.java @ 0:408254cf2f1d
Erstellung
author | Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 24 Nov 2010 17:24:23 +0100 |
parents | |
children |
line wrap: on
line source
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.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; import de.mpg.mpiwg.berlin.mpdl.general.MpdlConstants; public class DBMorphWriter { private static DBMorphWriter instance; private static String MPDL_DATA_DIR = MpdlConstants.MPDL_DATA_DIR; private static String DB_DIR_DONATUS = MPDL_DATA_DIR + "/dataBerkeleyDB/donatus"; private static String DATA_FILES_DIR = MPDL_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(); } }