corpus-services  1.0
CmdiData.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.Collection;
16 import java.util.logging.Level;
17 import java.util.logging.Logger;
18 import javax.xml.parsers.ParserConfigurationException;
19 import javax.xml.transform.TransformerException;
20 import javax.xml.xpath.XPathExpressionException;
21 import org.apache.commons.io.FilenameUtils;
22 import org.jdom.Document;
23 import org.jdom.JDOMException;
24 import org.jdom.input.SAXBuilder;
25 import org.xml.sax.SAXException;
26 
31 public class CmdiData implements CorpusData, XMLData, Metadata {
32 
33  Document jdom;
34  URL url;
35  String originalstring;
36  URL parenturl;
37  String filename;
38  String filenamewithoutending;
39 
40  public CmdiData() {
41 
42  }
43 
44  public CmdiData(URL url) {
45  try {
46  this.url = url;
47  SAXBuilder builder = new SAXBuilder();
48  jdom = builder.build(url);
49  originalstring = new String(Files.readAllBytes(Paths.get(url.toURI())), "UTF-8");
50  URI uri = url.toURI();
51  URI parentURI = uri.getPath().endsWith("/") ? uri.resolve("..") : uri.resolve(".");
52  parenturl = parentURI.toURL();
53  filename = FilenameUtils.getName(url.getPath());
54  filenamewithoutending = FilenameUtils.getBaseName(url.getPath());
55  } catch (JDOMException ex) {
56  Logger.getLogger(CmdiData.class.getName()).log(Level.SEVERE, null, ex);
57  } catch (IOException ex) {
58  Logger.getLogger(CmdiData.class.getName()).log(Level.SEVERE, null, ex);
59  } catch (URISyntaxException ex) {
60  Logger.getLogger(CmdiData.class.getName()).log(Level.SEVERE, null, ex);
61  }
62  }
63 
64  @Override
65  public URL getURL() {
66  return url;
67  }
68 
69  @Override
70  public String toSaveableString() throws TransformerException, ParserConfigurationException, SAXException, IOException, XPathExpressionException {
71  return toPrettyPrintedXML();
72  }
73 
74  @Override
75  public String toUnformattedString() {
76  return originalstring;
77  }
78 
79  private String toPrettyPrintedXML() throws TransformerException, ParserConfigurationException, SAXException, IOException, XPathExpressionException {
80  PrettyPrinter pp = new PrettyPrinter();
81  String prettyCorpusData = pp.indent(toUnformattedString(), "event");
82  //String prettyCorpusData = indent(bt.toXML(bt.getTierFormatTable()), "event");
83  return prettyCorpusData;
84  }
85 
86  @Override
87  public void updateUnformattedString(String newUnformattedString) {
88  originalstring = newUnformattedString;
89  }
90 
91  @Override
92  public URL getParentURL() {
93  return parenturl;
94  }
95 
96  @Override
97  public Document getJdom() {
98  return jdom;
99  }
100 
101  @Override
102  public void setJdom(Document doc) {
103  jdom = doc;
104  }
105 
106  @Override
107  public void setURL(URL nurl) {
108  url = nurl;
109  }
110 
111  @Override
112  public void setParentURL(URL url) {
113  parenturl = url;
114  }
115 
116  @Override
117  public String getFilename() {
118  return filename;
119  }
120 
121  @Override
122  public void setFilename(String s) {
123  filename = s;
124  }
125 
126  @Override
128  return filenamewithoutending;
129  }
130 
131  @Override
132  public void setFilenameWithoutFileEnding(String s) {
133  filenamewithoutending = s;
134  }
135 
136  @Override
137  public Collection<URL> getReferencedCorpusDataURLs() {
138  throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
139  }
140 
141 }
Collection< URL > getReferencedCorpusDataURLs()
Definition: CmdiData.java:137
void setFilenameWithoutFileEnding(String s)
Definition: CmdiData.java:132
void setJdom(Document doc)
Definition: CmdiData.java:102
String indent(String xml, String suppressedElements)
void updateUnformattedString(String newUnformattedString)
Definition: CmdiData.java:87