Mercurial > hg > mpdl-group
view software/eXist/mpdl-modules/src/de/mpg/mpiwg/berlin/mpdl/lt/morph/db/DBMorphWriterContentHandler.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.util.Hashtable; import org.xml.sax.*; import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException; import de.mpg.mpiwg.berlin.mpdl.lt.morph.app.Form; import de.mpg.mpiwg.berlin.mpdl.lt.morph.app.Lemma; public class DBMorphWriterContentHandler implements ContentHandler { private DBMorphHandler dbMorphHandler; private Element currentElement; private Form form; private Lemma lemma; private Hashtable<String, Form> forms; public DBMorphWriterContentHandler(DBMorphHandler dbMorphHandler) { this.dbMorphHandler = dbMorphHandler; } public void startDocument() throws SAXException { forms = new Hashtable<String, Form>(); } public void endDocument() throws SAXException { forms = null; } // TODO setPos etc. ersetzen durch addPos etc. public void characters(char[] c, int start, int length) throws SAXException { if (currentElement != null) { String elemName = currentElement.name; if (form != null) { char[] cCopy = new char[length]; System.arraycopy(c, start, cCopy, 0, length); String charactersStr = String.valueOf(cCopy); if (charactersStr != null && ! (charactersStr.trim().equals(""))) { if (elemName.equals("provider")) { form.addProvider(charactersStr); lemma.addProvider(charactersStr); } else if (elemName.equals("language")) { form.addLanguage(charactersStr); lemma.addLanguage(charactersStr); } else if (elemName.equals("form-name")) { form.addFormName(charactersStr); } else if (elemName.equals("lemma-name")) { form.addLemmaName(charactersStr); lemma.addLemmaName(charactersStr); } else if (elemName.equals("pos")) { form.addPos(charactersStr); } else if (elemName.equals("tense")) { form.addTense(charactersStr); } else if (elemName.equals("voice")) { form.addVoice(charactersStr); } else if (elemName.equals("casus")) { form.addCasus(charactersStr); } else if (elemName.equals("number")) { form.addNumber(charactersStr); } else if (elemName.equals("mood")) { form.addMood(charactersStr); } else if (elemName.equals("person")) { form.addPerson(charactersStr); } else if (elemName.equals("gender")) { form.addGender(charactersStr); } else if (elemName.equals("definite")) { form.addDefinite(charactersStr); } } } } } public void ignorableWhitespace(char[] c, int start, int length) throws SAXException { } public void processingInstruction(String target, String data) throws SAXException { } public void setDocumentLocator(org.xml.sax.Locator arg1) { } public void endPrefixMapping(String prefix) throws SAXException { } public void skippedEntity(String name) throws SAXException { } public void startElement(String uri, String localName, String name, Attributes attrs) throws SAXException { currentElement = new Element(name, ""); if (localName.equals("form")) { form = new Form(); lemma = new Lemma(); } } public void endElement(String uri, String localName, String name) throws SAXException { currentElement = null; if (localName.equals("form")) { String keyStr = form.getFormName(); forms.put(keyStr, form); write(form, lemma); form = null; lemma = null; } } public void startPrefixMapping(String prefix, String uri) throws SAXException { } private void write(Form form, Lemma lemma) throws SAXException { try { dbMorphHandler.writeFormLemma(form, lemma); dbMorphHandler.writeLemmaForm(lemma, form); } catch (ApplicationException e) { throw new SAXException(e); } } private class Element { String name; String value; Element(String name) { this.name = name; } Element(String name, String value) { this.name = name; this.value = value; } } }