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