Mercurial > hg > anteater
diff src/de/mpiwg/anteater/xml/impl/AnalysisXMLManager.java @ 0:036535fcd179
anteater
author | jdamerow |
---|---|
date | Fri, 14 Sep 2012 10:30:43 +0200 |
parents | |
children | 1c2b4f5e2c05 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/anteater/xml/impl/AnalysisXMLManager.java Fri Sep 14 10:30:43 2012 +0200 @@ -0,0 +1,156 @@ +package de.mpiwg.anteater.xml.impl; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; + +import org.jdom2.Element; +import org.jdom2.output.XMLOutputter; + +import de.mpiwg.anteater.xml.IXMLParser; + + +public class AnalysisXMLManager extends JDOMParser { + + private String analysisFilepath; + + public AnalysisXMLManager(String analysisFilepath) { + super(); + this.analysisFilepath = analysisFilepath; + + File analysisFile = new File(analysisFilepath); + if (analysisFile.exists()) + init(analysisFilepath); + else { + InputStream stream = getClass().getResourceAsStream("templates/analysisFile.xml"); + init(stream); + } + } + + public List<String> getSummaryTexts() { + return getResults("/analysis/texts/summaries/summary"); + } + + public List<String> getSupplementaryInfoTexts() { + return getResults("/analysis/texts/supplementary_information/supplInfo"); + } + + public List<String> getSummaryNamesResults() { + return getResults("/analysis/scientificNames/summaries/result"); + } + + public List<String> getSupplementaryInfoNamesResults() { + return getResults("/analysis/scientificNames/supplementary_information/result"); + } + + public List<String> getSummaryPlacesResults() { + return getResultsViaParent("/analysis/places/summaries"); + } + + public List<String> getSupplementaryInfoPlacesResults() { + return getResultsViaParent("/analysis/places/supplementary_information"); + } + + public List<String> getSummaryPersonsResult() { + return getResults("/analysis/persons/summaries/stanford_ner"); + } + + public List<String> getSupplementaryInfoPersonsResult() { + return getResults("/analysis/persons/supplementary_information/stanford_ner"); + } + + public List<String> getResults(String xpath) { + List<Element> results = executeXPath(xpath, null); + if (results != null && !results.isEmpty()) + return getResultsString(results); + return new ArrayList<String>(); + } + + public List<String> getResultsContents(String xpath) { + List<Element> results = executeXPath(xpath, null); + if (results != null && !results.isEmpty()) { + List<String> resultStrings = new ArrayList<String>(); + for (Element elem : results) { + resultStrings.add(elem.getText()); + } + return resultStrings; + } + return new ArrayList<String>(); + } + + public List<String> getResultsViaParent(String xpath) { + List<Element> results = executeXPath(xpath, null); + if (results != null && !results.isEmpty()) { + Element parent = results.get(0); + List<Element> children = parent.getChildren(); + return getResultsString(children); + } + return new ArrayList<String>(); + } + + protected List<String> getResultsString(List<Element> roots) { + List<String> results = new ArrayList<String>(); + + for (Element rootNode : roots) { + XMLOutputter output = new XMLOutputter(); + StringWriter writer = new StringWriter(); + try { + output.output(rootNode, writer); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + results.add(writer.toString()); + } + + return results; + } + + public void addSummaryNamesResult(String result) { + addElementToDoc(result, "/analysis/scientificNames/summaries"); + } + + public void addSupplInfNamesResult(String result) { + addElementToDoc(result, "/analysis/scientificNames/supplementary_information"); + } + + private void addElementToDoc(String result, String xpath) { + IXMLParser parser = new JDOMParser(result, false); + Element root = parser.getRoot(); + + List<Element> nodes = executeXPath(xpath, null); + + if (nodes != null && nodes.size() > 0) { + nodes.get(0).addContent(root.clone()); + } + + save(analysisFilepath, true); + } + + public void addSummaryPlacesResult(String result) { + addElementToDoc(result, "/analysis/places/summaries"); + } + + public void addSupplInfPlacesResult(String result) { + addElementToDoc(result, "/analysis/places/supplementary_information"); + } + + public void addSummaryPersonsResult(String result) { + addElementToDoc(result, "/analysis/persons/summaries"); + } + + public void addSupplInfPersonsResult(String result) { + addElementToDoc(result, "/analysis/persons/supplementary_information"); + } + + public void addSummaryText(String text) { + addElementToDoc(text, "/analysis/texts/summaries"); + } + + public void addSupplInfText(String text) { + addElementToDoc(text, "/analysis/texts/supplementary_information"); + } +}