corpus-services  1.0
UnspecifiedXMLData.java
Go to the documentation of this file.
1 /*
2  * To change this license header, choose License Headers in Project Properties.
3  * To change this template file, choose Tools | Templates
4  * and open the template in the editor.
5  */
6 package de.uni_hamburg.corpora;
7 
9 import java.io.IOException;
10 import java.net.URI;
11 import java.net.URISyntaxException;
12 import java.net.URL;
13 import java.nio.file.Files;
14 import java.nio.file.Paths;
15 import java.util.logging.Level;
16 import java.util.logging.Logger;
17 import javax.xml.parsers.ParserConfigurationException;
18 import javax.xml.transform.TransformerException;
19 import javax.xml.xpath.XPathExpressionException;
20 import org.apache.commons.io.FilenameUtils;
21 import org.jdom.Document;
22 import org.jdom.JDOMException;
23 import org.jdom.input.SAXBuilder;
24 import org.xml.sax.SAXException;
25 
30 public class UnspecifiedXMLData implements CorpusData, XMLData {
31 
32  Document jdom;
33  URL url;
34  String originalstring;
35  URL parenturl;
36  String filename;
37  String filenamewithoutending;
38 
39  public UnspecifiedXMLData() {
40 
41  }
42 
43  public UnspecifiedXMLData(URL url) {
44  try {
45  this.url = url;
46  SAXBuilder builder = new SAXBuilder();
47  jdom = builder.build(url);
48  originalstring = new String(Files.readAllBytes(Paths.get(url.toURI())), "UTF-8");
49  URI uri = url.toURI();
50  URI parentURI = uri.getPath().endsWith("/") ? uri.resolve("..") : uri.resolve(".");
51  parenturl = parentURI.toURL();
52  filename = FilenameUtils.getName(url.getPath());
53  filenamewithoutending = FilenameUtils.getBaseName(url.getPath());
54  } catch (JDOMException ex) {
55  Logger.getLogger(UnspecifiedXMLData.class.getName()).log(Level.SEVERE, null, ex);
56  } catch (IOException ex) {
57  Logger.getLogger(UnspecifiedXMLData.class.getName()).log(Level.SEVERE, null, ex);
58  } catch (URISyntaxException ex) {
59  Logger.getLogger(UnspecifiedXMLData.class.getName()).log(Level.SEVERE, null, ex);
60  }
61  }
62 
63  @Override
64  public URL getURL() {
65  return url;
66  }
67 
68  @Override
69  public String toSaveableString() throws TransformerException, ParserConfigurationException, SAXException, IOException, XPathExpressionException {
70  return toPrettyPrintedXML();
71  }
72 
73  @Override
74  public String toUnformattedString() {
75  return originalstring;
76  }
77 
78  private String toPrettyPrintedXML() throws TransformerException, ParserConfigurationException, SAXException, IOException, XPathExpressionException {
79  PrettyPrinter pp = new PrettyPrinter();
80  String prettyCorpusData = pp.indent(toUnformattedString(), "event");
81  //String prettyCorpusData = pp.indent(bt.toXML(bt.getTierFormatTable()), "event");
82  return prettyCorpusData;
83  }
84 
85  @Override
86  public void updateUnformattedString(String newUnformattedString) {
87  originalstring = newUnformattedString;
88  }
89 
90  @Override
91  public Document getJdom() {
92  return jdom;
93  }
94 
95  @Override
96  public void setJdom(Document doc) {
97  jdom = doc;
98  }
99 
100  @Override
101  public URL getParentURL() {
102  return parenturl;
103  }
104 
105  @Override
106  public void setURL(URL nurl) {
107  url = nurl;
108  }
109 
110  @Override
111  public void setParentURL(URL url) {
112  parenturl = url;
113  }
114 
115  @Override
116  public String getFilename() {
117  return filename;
118  }
119 
120  @Override
121  public void setFilename(String s) {
122  filename = s;
123  }
124 
125  @Override
127  return filenamewithoutending;
128  }
129 
130  @Override
131  public void setFilenameWithoutFileEnding(String s) {
132  filenamewithoutending = s;
133  }
134 }
String indent(String xml, String suppressedElements)
void updateUnformattedString(String newUnformattedString)