libpappsomspp
Library for mass spectrometry
pappso::XtandemInputSaxHandler Class Reference

#include <xtandeminputsaxhandler.h>

Inheritance diagram for pappso::XtandemInputSaxHandler:

Public Member Functions

 XtandemInputSaxHandler (const QString &destinationMzXmlFile, const QString &destinationTandemInputFile, const QString &destinationTandemOutputFile)
 
 ~XtandemInputSaxHandler ()
 
bool startElement (const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &attributes) override
 
bool endElement (const QString &namespaceURI, const QString &localName, const QString &qName) override
 
bool startDocument () override
 
bool endDocument () override
 
bool characters (const QString &str) override
 
bool fatalError (const QXmlParseException &exception) override
 
bool error (const QXmlParseException &exception) override
 
QString errorString () const
 
const QString & getOriginalMsDataFileName () const
 
const QString & getOriginalTandemOutputFileName () const
 
const QString & getOriginalTandemPresetFileName () const
 

Private Member Functions

bool startElement_note (QXmlAttributes attributes)
 
bool endElement_note ()
 
void writeOpenTag (const QString &qName, const QXmlAttributes &attributes)
 

Private Attributes

QString m_destinationMzXmlFileName
 
QString m_originMzDataFileName
 
QString m_destinationTandemInputFileName
 
QString m_originTandemPresetFileName
 
QString m_originTandemOutpuFileName
 
QString m_destinationTandemOutputFileName
 
QFile m_destinationTandemInputFile
 
QXmlStreamWriter * p_writeXmlTandemInput
 
std::vector< QString > m_tagStack
 
bool m_isTandemParameter = false
 
QString m_errorString
 
QString m_currentText
 
QString m_currentLabel
 
QString m_labelName
 

Detailed Description

Definition at line 38 of file xtandeminputsaxhandler.h.

Constructor & Destructor Documentation

◆ XtandemInputSaxHandler()

pappso::XtandemInputSaxHandler::XtandemInputSaxHandler ( const QString &  destinationMzXmlFile,
const QString &  destinationTandemInputFile,
const QString &  destinationTandemOutputFile 
)

Default constructor

Definition at line 34 of file xtandeminputsaxhandler.cpp.

38  : m_destinationTandemInputFile(destinationTandemInputFile)
39 {
40  m_destinationMzXmlFileName = destinationMzXmlFile;
41  m_destinationTandemOutputFileName = destinationTandemOutputFile;
43  QFileInfo(destinationTandemInputFile).absoluteFilePath();
44 
45  if(!m_destinationTandemInputFile.open(QIODevice::WriteOnly))
46  {
48  QObject::tr("ERROR: unable to open %1 tandem output file for write")
49  .arg(destinationTandemInputFile));
50  }
51 
52  p_writeXmlTandemInput = new QXmlStreamWriter();
54 }

References m_destinationMzXmlFileName, m_destinationTandemInputFile, m_destinationTandemInputFileName, m_destinationTandemOutputFileName, and p_writeXmlTandemInput.

◆ ~XtandemInputSaxHandler()

pappso::XtandemInputSaxHandler::~XtandemInputSaxHandler ( )

Destructor

Definition at line 56 of file xtandeminputsaxhandler.cpp.

57 {
58  if(p_writeXmlTandemInput != nullptr)
59  {
61  delete p_writeXmlTandemInput;
62  }
63 }

References m_destinationTandemInputFile, and p_writeXmlTandemInput.

Member Function Documentation

◆ characters()

bool pappso::XtandemInputSaxHandler::characters ( const QString &  str)
override

Definition at line 224 of file xtandeminputsaxhandler.cpp.

225 {
226  m_currentText += str;
227  return true;
228 }

References m_currentText.

◆ endDocument()

bool pappso::XtandemInputSaxHandler::endDocument ( )
override

Definition at line 213 of file xtandeminputsaxhandler.cpp.

214 {
215  p_writeXmlTandemInput->writeEndDocument();
216 
218  delete p_writeXmlTandemInput;
219  p_writeXmlTandemInput = nullptr;
220  return true;
221 }

References m_destinationTandemInputFile, and p_writeXmlTandemInput.

◆ endElement()

bool pappso::XtandemInputSaxHandler::endElement ( const QString &  namespaceURI,
const QString &  localName,
const QString &  qName 
)
override

Definition at line 158 of file xtandeminputsaxhandler.cpp.

161 {
162 
163  bool is_ok = true;
164  // endElement_peptide_list
165  try
166  {
167 
168  if(qName == "note")
169  {
170  is_ok = endElement_note();
171  }
172  else
173  {
174  p_writeXmlTandemInput->writeCharacters(m_currentText);
175  p_writeXmlTandemInput->writeEndElement();
176  }
177  }
178  catch(pappso::PappsoException &exception_pappso)
179  {
180  m_errorString = QObject::tr(
181  "ERROR in XtandemInputSaxHandler::endElement tag "
182  "%1, PAPPSO exception:\n%2")
183  .arg(qName)
184  .arg(exception_pappso.qwhat());
185  return false;
186  }
187  catch(std::exception &exception_std)
188  {
189  m_errorString = QObject::tr(
190  "ERROR in XtandemInputSaxHandler::endElement tag "
191  "%1, std exception:\n%2")
192  .arg(qName)
193  .arg(exception_std.what());
194  return false;
195  }
196 
197  m_currentText.clear();
198  m_tagStack.pop_back();
199 
200  return is_ok;
201 }

References endElement_note(), m_currentText, m_errorString, m_tagStack, p_writeXmlTandemInput, and pappso::PappsoException::qwhat().

◆ endElement_note()

bool pappso::XtandemInputSaxHandler::endElement_note ( )
private

Definition at line 286 of file xtandeminputsaxhandler.cpp.

287 {
288  // qDebug() << "XtandemParamSaxHandler::endElement_note begin " <<
289  // _current_label << " " << _current_text.simplified();
290  if(m_currentLabel == "output, path")
291  {
294  }
295  else if(m_currentLabel == "list path, default parameters")
296  {
297  // <note type="input" label="list path, default parameters">
298  p_writeXmlTandemInput->writeCharacters(m_currentText);
300  QFileInfo(m_currentText).absoluteFilePath();
301  }
302  else if(m_currentLabel == "spectrum, path")
303  {
304  //<note type="input"
305  // label="spectrum,path">/gorgone/pappso/jouy/raw/2019_Lumos/20191222_107_Juste/20191222_18_EF1.mzXML</note>
308  }
309  else
310  {
311  p_writeXmlTandemInput->writeCharacters(m_currentText);
312  }
313  p_writeXmlTandemInput->writeEndElement();
314  return true;
315 }

References m_currentLabel, m_currentText, m_destinationMzXmlFileName, m_destinationTandemOutputFileName, m_originMzDataFileName, m_originTandemOutpuFileName, m_originTandemPresetFileName, and p_writeXmlTandemInput.

Referenced by endElement().

◆ error()

bool pappso::XtandemInputSaxHandler::error ( const QXmlParseException &  exception)
override

Definition at line 232 of file xtandeminputsaxhandler.cpp.

233 {
234  m_errorString = QObject::tr(
235  "Parse error at line %1, column %2 :\n"
236  "%3")
237  .arg(exception.lineNumber())
238  .arg(exception.columnNumber())
239  .arg(exception.message());
240  qDebug() << m_errorString;
241  return false;
242 }

References m_errorString.

◆ errorString()

QString pappso::XtandemInputSaxHandler::errorString ( ) const

Definition at line 259 of file xtandeminputsaxhandler.cpp.

260 {
261  return m_errorString;
262 }

References m_errorString.

Referenced by pappso::TandemWrapperRun::wrapTandemInputFile().

◆ fatalError()

bool pappso::XtandemInputSaxHandler::fatalError ( const QXmlParseException &  exception)
override

Definition at line 246 of file xtandeminputsaxhandler.cpp.

247 {
248  m_errorString = QObject::tr(
249  "Parse error at line %1, column %2 :\n"
250  "%3")
251  .arg(exception.lineNumber())
252  .arg(exception.columnNumber())
253  .arg(exception.message());
254  qDebug() << m_errorString;
255  return false;
256 }

References m_errorString.

◆ getOriginalMsDataFileName()

const QString & pappso::XtandemInputSaxHandler::getOriginalMsDataFileName ( ) const

Definition at line 319 of file xtandeminputsaxhandler.cpp.

320 {
321  return m_originMzDataFileName;
322 }

References m_originMzDataFileName.

Referenced by pappso::TandemWrapperRun::wrapTandemInputFile().

◆ getOriginalTandemOutputFileName()

const QString & pappso::XtandemInputSaxHandler::getOriginalTandemOutputFileName ( ) const

Definition at line 325 of file xtandeminputsaxhandler.cpp.

326 {
328 }

References m_originTandemOutpuFileName.

Referenced by pappso::TandemWrapperRun::wrapTandemInputFile().

◆ getOriginalTandemPresetFileName()

const QString & pappso::XtandemInputSaxHandler::getOriginalTandemPresetFileName ( ) const

Definition at line 331 of file xtandeminputsaxhandler.cpp.

332 {
334 }

References m_originTandemPresetFileName.

Referenced by pappso::TandemWrapperRun::wrapTandemInputFile().

◆ startDocument()

bool pappso::XtandemInputSaxHandler::startDocument ( )
override

Definition at line 204 of file xtandeminputsaxhandler.cpp.

205 {
206 
207  p_writeXmlTandemInput->setAutoFormatting(true);
208  p_writeXmlTandemInput->writeStartDocument("1.0");
209  return true;
210 }

References p_writeXmlTandemInput.

◆ startElement()

bool pappso::XtandemInputSaxHandler::startElement ( const QString &  namespaceURI,
const QString &  localName,
const QString &  qName,
const QXmlAttributes &  attributes 
)
override

Definition at line 78 of file xtandeminputsaxhandler.cpp.

83 {
84  /*
85 <?xml version="1.0" encoding="UTF-8"?>
86 <bioml label="20191222_18_EF1_test_condor_22janv_third_step.xml">
87 <note type="heading">Paths</note>
88 <note type="input" label="list path, default
89 parameters">/gorgone/pappso/jouy/presets/metapappso/Lumos_04112019_PROTEOCARDIS_THIRD_STEP_AB.xml</note>
90 <note type="input" label="list path, taxonomy
91 information">/gorgone/pappso/jouy/users/Celine/2019_Lumos/20191222_107_Juste_APD/metapappso_condor/params/xtandem_database_third_step_test_condor_22janv.database</note>
92 <note type="input" label="spectrum,
93 path">/gorgone/pappso/jouy/raw/2019_Lumos/20191222_107_Juste/20191222_18_EF1.mzXML</note>
94 <note type="heading">Protein general</note>
95 <note type="input" label="protein, taxon">usedefined</note>
96 <note type="heading">Output</note>
97 <note type="input" label="output,
98 path">/gorgone/pappso/jouy/users/Celine/2019_Lumos/20191222_107_Juste_APD/metapappso_condor/test_run/20191222_18_EF1_third_step_test_condor_22janv.xml</note>
99 </bioml>
100 */
101  m_tagStack.push_back(qName);
102  bool is_ok = true;
103 
104  try
105  {
106  m_currentText.clear();
107  //<bioml label="example api document">
108  if(m_tagStack.size() == 1)
109  {
110  if(qName != "bioml")
111  {
112  m_errorString = QObject::tr(
113  "ERROR in XtandemInputSaxHandler::startElement "
114  "root tag %1 is not <bioml>")
115  .arg(qName);
116  m_isTandemParameter = false;
117  return false;
118  }
119  else
120  {
121 
122  m_isTandemParameter = true;
123  // label="20191222_18_EF1_test_condor_22janv_third_step.xml"
124  m_labelName = attributes.value("label");
125 
126  writeOpenTag(qName, attributes);
127  }
128  }
129  // startElement_group
130 
131  if(qName == "note")
132  {
133  is_ok = startElement_note(attributes);
134  }
135  }
136  catch(pappso::PappsoException &exception_pappso)
137  {
138  m_errorString = QObject::tr(
139  "ERROR in XtandemInputSaxHandler::startElement "
140  "tag %1, PAPPSO exception:\n%2")
141  .arg(qName)
142  .arg(exception_pappso.qwhat());
143  return false;
144  }
145  catch(std::exception &exception_std)
146  {
147  m_errorString = QObject::tr(
148  "ERROR in XtandemInputSaxHandler::startElement "
149  "tag %1, std exception:\n%2")
150  .arg(qName)
151  .arg(exception_std.what());
152  return false;
153  }
154  return is_ok;
155 }

References m_currentText, m_errorString, m_isTandemParameter, m_labelName, m_tagStack, pappso::PappsoException::qwhat(), startElement_note(), and writeOpenTag().

◆ startElement_note()

bool pappso::XtandemInputSaxHandler::startElement_note ( QXmlAttributes  attributes)
private

Definition at line 266 of file xtandeminputsaxhandler.cpp.

267 {
268  // qDebug() << "XtandemParamSaxHandler::startElement_note begin " <<
269  // <note type="input"
270  // label="output,path">/gorgone/pappso/jouy/users/Celine/2019_Lumos/20191222_107_Juste_APD/metapappso_condor/test_run/20191222_18_EF1_third_step_test_condor_22janv.xml</note>
271 
272  writeOpenTag("note", attributes);
273  m_currentLabel = "";
274 
275  if(attributes.value("type") == "input")
276  {
277  m_currentLabel = attributes.value("label");
278  }
279 
280  // qDebug() << "XtandemParamSaxHandler::startElement_note _current_label " <<
281  // _current_label;
282  return true;
283 }

References m_currentLabel, and writeOpenTag().

Referenced by startElement().

◆ writeOpenTag()

void pappso::XtandemInputSaxHandler::writeOpenTag ( const QString &  qName,
const QXmlAttributes &  attributes 
)
private

Definition at line 66 of file xtandeminputsaxhandler.cpp.

68 {
69  p_writeXmlTandemInput->writeStartElement(qName);
70  for(int i = 0; i < attributes.length(); i++)
71  {
72  p_writeXmlTandemInput->writeAttribute(attributes.qName(i),
73  attributes.value(i));
74  }
75 }

References p_writeXmlTandemInput.

Referenced by startElement(), and startElement_note().

Member Data Documentation

◆ m_currentLabel

QString pappso::XtandemInputSaxHandler::m_currentLabel
private

Definition at line 98 of file xtandeminputsaxhandler.h.

Referenced by endElement_note(), and startElement_note().

◆ m_currentText

QString pappso::XtandemInputSaxHandler::m_currentText
private

Definition at line 97 of file xtandeminputsaxhandler.h.

Referenced by characters(), endElement(), endElement_note(), and startElement().

◆ m_destinationMzXmlFileName

QString pappso::XtandemInputSaxHandler::m_destinationMzXmlFileName
private

Definition at line 86 of file xtandeminputsaxhandler.h.

Referenced by XtandemInputSaxHandler(), and endElement_note().

◆ m_destinationTandemInputFile

QFile pappso::XtandemInputSaxHandler::m_destinationTandemInputFile
private

◆ m_destinationTandemInputFileName

QString pappso::XtandemInputSaxHandler::m_destinationTandemInputFileName
private

Definition at line 88 of file xtandeminputsaxhandler.h.

Referenced by XtandemInputSaxHandler().

◆ m_destinationTandemOutputFileName

QString pappso::XtandemInputSaxHandler::m_destinationTandemOutputFileName
private

Definition at line 91 of file xtandeminputsaxhandler.h.

Referenced by XtandemInputSaxHandler(), and endElement_note().

◆ m_errorString

QString pappso::XtandemInputSaxHandler::m_errorString
private

Definition at line 96 of file xtandeminputsaxhandler.h.

Referenced by endElement(), error(), errorString(), fatalError(), and startElement().

◆ m_isTandemParameter

bool pappso::XtandemInputSaxHandler::m_isTandemParameter = false
private

Definition at line 95 of file xtandeminputsaxhandler.h.

Referenced by startElement().

◆ m_labelName

QString pappso::XtandemInputSaxHandler::m_labelName
private

Definition at line 99 of file xtandeminputsaxhandler.h.

Referenced by startElement().

◆ m_originMzDataFileName

QString pappso::XtandemInputSaxHandler::m_originMzDataFileName
private

Definition at line 87 of file xtandeminputsaxhandler.h.

Referenced by endElement_note(), and getOriginalMsDataFileName().

◆ m_originTandemOutpuFileName

QString pappso::XtandemInputSaxHandler::m_originTandemOutpuFileName
private

Definition at line 90 of file xtandeminputsaxhandler.h.

Referenced by endElement_note(), and getOriginalTandemOutputFileName().

◆ m_originTandemPresetFileName

QString pappso::XtandemInputSaxHandler::m_originTandemPresetFileName
private

Definition at line 89 of file xtandeminputsaxhandler.h.

Referenced by endElement_note(), and getOriginalTandemPresetFileName().

◆ m_tagStack

std::vector<QString> pappso::XtandemInputSaxHandler::m_tagStack
private

Definition at line 94 of file xtandeminputsaxhandler.h.

Referenced by endElement(), and startElement().

◆ p_writeXmlTandemInput

QXmlStreamWriter* pappso::XtandemInputSaxHandler::p_writeXmlTandemInput
private

The documentation for this class was generated from the following files:
pappso::XtandemInputSaxHandler::m_currentText
QString m_currentText
Definition: xtandeminputsaxhandler.h:97
pappso::XtandemInputSaxHandler::m_destinationTandemInputFile
QFile m_destinationTandemInputFile
Definition: xtandeminputsaxhandler.h:92
pappso::XtandemInputSaxHandler::endElement_note
bool endElement_note()
Definition: xtandeminputsaxhandler.cpp:286
pappso::XtandemInputSaxHandler::m_labelName
QString m_labelName
Definition: xtandeminputsaxhandler.h:99
pappso::XtandemInputSaxHandler::m_currentLabel
QString m_currentLabel
Definition: xtandeminputsaxhandler.h:98
pappso::XtandemInputSaxHandler::p_writeXmlTandemInput
QXmlStreamWriter * p_writeXmlTandemInput
Definition: xtandeminputsaxhandler.h:93
pappso::XtandemInputSaxHandler::m_originTandemOutpuFileName
QString m_originTandemOutpuFileName
Definition: xtandeminputsaxhandler.h:90
pappso::XtandemInputSaxHandler::writeOpenTag
void writeOpenTag(const QString &qName, const QXmlAttributes &attributes)
Definition: xtandeminputsaxhandler.cpp:66
pappso::XtandemInputSaxHandler::startElement_note
bool startElement_note(QXmlAttributes attributes)
Definition: xtandeminputsaxhandler.cpp:266
pappso::PappsoException::qwhat
virtual const QString & qwhat() const
Definition: pappsoexception.h:66
pappso::XtandemInputSaxHandler::m_destinationMzXmlFileName
QString m_destinationMzXmlFileName
Definition: xtandeminputsaxhandler.h:86
pappso::XtandemInputSaxHandler::m_originMzDataFileName
QString m_originMzDataFileName
Definition: xtandeminputsaxhandler.h:87
pappso::XtandemInputSaxHandler::m_originTandemPresetFileName
QString m_originTandemPresetFileName
Definition: xtandeminputsaxhandler.h:89
pappso::XtandemInputSaxHandler::m_destinationTandemInputFileName
QString m_destinationTandemInputFileName
Definition: xtandeminputsaxhandler.h:88
pappso::XtandemInputSaxHandler::m_errorString
QString m_errorString
Definition: xtandeminputsaxhandler.h:96
pappso::XtandemInputSaxHandler::m_isTandemParameter
bool m_isTandemParameter
Definition: xtandeminputsaxhandler.h:95
pappso::PappsoException
Definition: pappsoexception.h:42
pappso::XtandemInputSaxHandler::m_tagStack
std::vector< QString > m_tagStack
Definition: xtandeminputsaxhandler.h:94
pappso::XtandemInputSaxHandler::m_destinationTandemOutputFileName
QString m_destinationTandemOutputFileName
Definition: xtandeminputsaxhandler.h:91