Mercurial > hg > anteater
view 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 source
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"); } }