corpus-services  1.0
EXB2Chat.java
Go to the documentation of this file.
1 
4 package de.uni_hamburg.corpora.conversion;
5 
9 import org.exmaralda.partitureditor.jexmaralda.BasicTranscription;
10 import org.jdom.JDOMException;
11 import org.jdom.transform.XSLTransformException;
12 import org.xml.sax.SAXException;
13 import java.io.FileNotFoundException;
14 import java.io.IOException;
15 import org.exmaralda.partitureditor.jexmaralda.JexmaraldaException;
16 import org.exmaralda.partitureditor.fsm.FSMException;
17 import org.exmaralda.partitureditor.jexmaralda.segment.CHATSegmentation;
18 import org.exmaralda.partitureditor.jexmaralda.ListTranscription;
22 import java.util.Collection;
23 import java.net.URL;
25 import javax.xml.transform.TransformerException;
26 import javax.xml.parsers.ParserConfigurationException;
27 import net.sf.saxon.trans.XPathException;
28 import javax.xml.xpath.XPathExpressionException;
29 
34 public class EXB2Chat extends Converter implements CorpusFunction {
35 
36  Boolean COMA = false;
37 
38  public EXB2Chat() {
39 
40  }
41 
42  public static final String EXB2CHAT = "exb2chat";
43 
44  /*
45  * this method takes a CorpusData object, converts it into CHAT and saves it
46  * next to the CorpusData object
47  * and gives back a report how it worked
48  */
60  public Report function(CorpusData cd) throws SAXException,
61  FSMException,
62  XSLTransformException,
63  JDOMException,
64  IOException,
65  Exception {
66  //it cannot be a coma file alone
67  return convert(cd);
68  }
69 
70  public Report function(Corpus c) throws SAXException,
71  FSMException,
72  XSLTransformException,
73  JDOMException,
74  IOException,
75  Exception {
76  COMA = true;
77  ComaData comad = c.getComaData();
78  return convert(comad);
79  }
80 
81  public Report convert(CorpusData cod) {
82  Report stats = new Report();
83  try {
84  String basicTranscription = cod.toSaveableString();
85  BasicTranscription bt = TypeConverter.String2BasicTranscription(basicTranscription);
86  String data = exportCHATTranscript(bt, "UTF-8");
87  URL targeturl = new URL(cd.getParentURL() + cd.getFilenameWithoutFileEnding() + ".chat");
88  CorpusIO cio = new CorpusIO();
89  cio.write(data, targeturl);
90  stats.addCorrect(EXB2CHAT, cod, "Conversion of file was successfully saved at " + targeturl);
91  } catch (JexmaraldaException je) {
92  stats.addException(je, EXB2CHAT, cod, "Input Output Exception");
93  } catch (FSMException fe) {
94  stats.addException(fe, EXB2CHAT, cod, "Input Output Exception");
95  } catch (SAXException se) {
96  stats.addException(se, EXB2CHAT, cod, "Input Output Exception");
97  } catch (FileNotFoundException fnfe) {
98  stats.addException(fnfe, EXB2CHAT, cod, "Input Output Exception");
99  } catch (IOException ioe) {
100  stats.addException(ioe, EXB2CHAT, cod, "Input Output Exception");
101  } catch (XPathException xe) {
102  stats.addException(xe, EXB2CHAT, cod, "Input Output Exception");
103  } catch (XPathExpressionException xee) {
104  stats.addException(xee, EXB2CHAT, cod, "Input Output Exception");
105  } catch (ParserConfigurationException pe) {
106  stats.addException(pe, EXB2CHAT, cod, "Input Output Exception");
107  } catch (TransformerException te) {
108  stats.addException(te, EXB2CHAT, cod, "Input Output Exception");
109  }
110  return stats;
111  }
112 
118  @Override
119  public Collection<Class<? extends CorpusData>> getIsUsableFor() {
120  try {
121  Class cl = Class.forName("de.uni_hamburg.corpora.BasicTranscriptionData");
122  IsUsableFor.add(cl);
123  } catch (ClassNotFoundException ex) {
124  report.addException(ex, "Usable class not found.");
125  }
126  return IsUsableFor;
127  }
128 
129 
133  String exportCHATTranscript(BasicTranscription bt, String encoding)
134  throws JexmaraldaException, FSMException, SAXException,
135  FileNotFoundException, IOException {
136  // segment the basic transcription and transform it into a list transcription
137  CHATSegmentation segmenter = new org.exmaralda.partitureditor.jexmaralda.segment.CHATSegmentation();
138  ListTranscription lt = segmenter.BasicToUtteranceList(bt);
139  String text = CHATSegmentation.toText(lt);
140  return text;
141  }
142 
143  @Override
144  public String getDescription() {
145  String description = "This class takes an exb as input and converts it into CHAT format. ";
146  return description;
147  }
148 
149 }
Collection< Class<?extends CorpusData > > getIsUsableFor()
Definition: EXB2Chat.java:119
static BasicTranscription String2BasicTranscription(String btAsString)
void addCorrect(String statId, String description)
Definition: Report.java:217
void addException(Throwable e, String description)
Definition: Report.java:287