Skip to content
Snippets Groups Projects
Commit 0fe79a33 authored by Renne Thomas's avatar Renne Thomas
Browse files

Handle different Tandem Parameters file type

parent c9e22c3c
No related branches found
No related tags found
1 merge request!22Willy's issues
......@@ -42,31 +42,41 @@ TandemParametersFile::TandemParametersFile(const QString &fasta_source)
qDebug() << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " "
<< fasta_source;
setMethodName(_param_source.baseName());
}
TandemParametersFile::TandemParametersFile(const QFileInfo &fasta_source)
: _param_source(fasta_source)
{
setMethodName(_param_source.baseName());
}
TandemParametersFile::TandemParametersFile(const TandemParametersFile &other)
: _param_source(other._param_source)
{
setMethodName(_param_source.baseName());
}
TandemParametersFile::~TandemParametersFile()
{
}
const QString
TandemParametersFile::getMethodName() const
TandemParametersFile::getMethodName()
{
return m_methodName;
}
void
TandemParametersFile::setMethodName(QString method_name)
{
m_methodName = method_name;
setTandemParametersFileType();
if(m_fileType == ParamFileType::preset)
{
return _param_source.baseName();
}
else if(m_fileType == ParamFileType::result)
{
return m_presetFileInfo.baseName();
}
else if(m_fileType == ParamFileType::not_xtandem)
{
throw pappso::PappsoException(
QObject::tr("error : %1 is not a TandemParameters file\n")
.arg(_param_source.fileName()));
}
else // m_fileType == ParamFileType::no_file
{
throw pappso::PappsoException(QObject::tr("error : %1 Doesn't exist'\n")
.arg(_param_source.fileName()));
}
}
const QString
......@@ -162,6 +172,8 @@ TandemParametersFile::getTandemParameters()
TandemParameters parameters;
XtandemParamSaxHandler *parser = new XtandemParamSaxHandler(&parameters);
setTandemParametersFileType();
QXmlSimpleReader simplereader;
simplereader.setContentHandler(parser);
simplereader.setErrorHandler(parser);
......@@ -192,44 +204,26 @@ TandemParametersFile::getTandemParameters()
.arg(_param_source.absoluteFilePath())
.arg(parser->errorString()));
}
if(m_isTandemParameterFile)
{
setMethodName(parser->getTandemPresetName());
}
m_presetFileInfo = parser->getTandemPresetFileInfo();
delete parser;
parameters.setMethodName(getMethodName());
return parameters;
}
bool
TandemParametersFile::isTandemPresetFile()
{
if(this->exists())
getTandemParameters();
if(m_fileType == ParamFileType::result || m_fileType == ParamFileType::preset)
{
try
{
TandemParameters param = getTandemParameters();
if(!m_isTandemParameterFile)
return false;
param.getValue("spectrum, threads");
}
catch(pappso::ExceptionNotFound &error)
{
if(!m_isTandemParameterFile)
return false;
}
catch(pappso::PappsoException &error)
{
if(!m_isTandemParameterFile)
return false;
}
return true;
}
return false;
else
{
return false;
}
}
void
......@@ -258,3 +252,40 @@ TandemParametersFile::writeXmlParametersFile(
p_out->writeEndElement();
p_out->writeEndDocument();
}
void
TandemParametersFile::setTandemParametersFileType()
{
if(this->exists())
{
try
{
TandemParameters param;
XtandemParamSaxHandler *parser = new XtandemParamSaxHandler(&param);
if(parser->getTandemPresetFileInfo().exists())
{
m_fileType = ParamFileType::result;
}
else
{
m_fileType = ParamFileType::preset;
}
delete parser;
}
catch(pappso::ExceptionNotFound &error)
{
throw pappso::ExceptionNotFound(
QObject::tr("error : %1 Doesn't exist'\n")
.arg(_param_source.fileName()));
m_fileType = ParamFileType::no_file;
}
catch(pappso::PappsoException &error)
{
throw pappso::PappsoException(
QObject::tr("error : %1 Doesn't exist'\n")
.arg(_param_source.fileName()));
m_fileType = ParamFileType::not_xtandem;
}
}
}
......@@ -34,6 +34,15 @@
#include <QXmlStreamWriter>
#include "../core/tandem_run/tandemparameters.h"
enum class ParamFileType : std::int8_t
{
preset = 0, ///< Preset file type
result = 1, ///< Result file type
not_xtandem = 2, ///< Not XTandem file type
no_file = 3, ///< No parameters file found
};
class TandemParametersFile
{
......@@ -47,7 +56,7 @@ class TandemParametersFile
* File name if its a TandemPresetFile
* or "list path, default parameters" value if its a Tandem result
*/
const QString getMethodName() const;
const QString getMethodName();
const QString getFilename() const;
const QDir getAbsoluteDir() const;
const QString getAbsoluteFilePath() const;
......@@ -68,14 +77,15 @@ class TandemParametersFile
/** @brief set param file directory
*/
void setDirectory(const QDir &directory);
void setMethodName(const QString method_name);
private:
void writeXmlParametersFile(QXmlStreamWriter *p_out,
const TandemParameters &parameters) const;
void setTandemParametersFileType();
private:
QFileInfo _param_source;
bool m_isTandemParameterFile = false;
QString m_methodName;
ParamFileType m_fileType;
QFileInfo m_presetFileInfo;
};
......@@ -31,7 +31,6 @@
#include "xtandemparamsaxhandler.h"
#include <pappsomspp/pappsoexception.h>
#include <QDebug>
#include <QFileInfo>
XtandemParamSaxHandler::XtandemParamSaxHandler(
......@@ -244,8 +243,7 @@ XtandemParamSaxHandler::endElement_note()
{
if(_current_label == "list path, default parameters")
{
m_presetFileName =
QFileInfo(_current_text.simplified()).baseName();
m_presetFileInfo = QFileInfo(_current_text.simplified());
}
_p_tandem_parameters->setParamLabelValue(_current_label,
_current_text.simplified());
......@@ -264,8 +262,8 @@ XtandemParamSaxHandler::endElement_note()
return true;
}
QString
XtandemParamSaxHandler::getTandemPresetName() const
QFileInfo
XtandemParamSaxHandler::getTandemPresetFileInfo() const
{
return m_presetFileName;
return m_presetFileInfo;
}
......@@ -33,6 +33,7 @@
#include <QXmlDefaultHandler>
#include <vector>
#include "../core/tandem_run/tandemparameters.h"
#include <QFileInfo>
class XtandemParamSaxHandler : public QXmlDefaultHandler
{
......@@ -62,7 +63,7 @@ class XtandemParamSaxHandler : public QXmlDefaultHandler
bool isTandemParameter() const;
QString getTandemPresetName() const;
QFileInfo getTandemPresetFileInfo() const;
private:
bool startElement_note(QXmlAttributes attributes);
......@@ -77,5 +78,5 @@ class XtandemParamSaxHandler : public QXmlDefaultHandler
QString _current_label;
bool m_isTandemParameter = false;
QString m_presetFileName;
QFileInfo m_presetFileInfo;
};
File mode changed from 100755 to 100644
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment