diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp index 53b08bcf9c576893ebe5a946698ac0cd7253e609..6c7066f63036bd76214a86ba466dd673592e8a72 100644 --- a/src/files/tandemparametersfile.cpp +++ b/src/files/tandemparametersfile.cpp @@ -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(¶meters); + 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(¶m); + + 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; + } + } +} diff --git a/src/files/tandemparametersfile.h b/src/files/tandemparametersfile.h index fa73769d72a76fc3f3500975a732ac2b016ce69e..4a01c1ac8391f4f481f45915f3242074b2f9c3e0 100644 --- a/src/files/tandemparametersfile.h +++ b/src/files/tandemparametersfile.h @@ -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 ¶meters) const; + void setTandemParametersFileType(); private: QFileInfo _param_source; bool m_isTandemParameterFile = false; - QString m_methodName; + ParamFileType m_fileType; + QFileInfo m_presetFileInfo; }; diff --git a/src/input/xtandemparamsaxhandler.cpp b/src/input/xtandemparamsaxhandler.cpp index b387abd467f75866d1f9a85bc2c2d91a821f3d03..adaa54b1fe2e793fcee3e133c4203d26239147d3 100644 --- a/src/input/xtandemparamsaxhandler.cpp +++ b/src/input/xtandemparamsaxhandler.cpp @@ -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; } diff --git a/src/input/xtandemparamsaxhandler.h b/src/input/xtandemparamsaxhandler.h index e6e039328616befa9968040974b1cec140db70c2..5a59557cb30a9b34380248c427cefd117652494f 100644 --- a/src/input/xtandemparamsaxhandler.h +++ b/src/input/xtandemparamsaxhandler.h @@ -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; }; diff --git a/src/resources/model/QExactive_analysis_FDR_nosemi.xml b/src/resources/model/QExactive_analysis_FDR_nosemi.xml old mode 100755 new mode 100644