Skip to content
Snippets Groups Projects
identificationdatasource.cpp 3.36 KiB
Newer Older

/*******************************************************************************
* Copyright (c) 2016 Olivier Langella <Olivier.Langella@moulon.inra.fr>.
*
* This file is part of XTPcpp.
*
*     XTPcpp is free software: you can redistribute it and/or modify
*     it under the terms of the GNU General Public License as published by
*     the Free Software Foundation, either version 3 of the License, or
*     (at your option) any later version.
*
*     XTPcpp is distributed in the hope that it will be useful,
*     but WITHOUT ANY WARRANTY; without even the implied warranty of
*     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*     GNU General Public License for more details.
*
*     You should have received a copy of the GNU General Public License
*     along with XTPcpp.  If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
*     Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and implementation
******************************************************************************/
#include "identificationdatasource.h"
#include "identificationxtandemfile.h"
#include <pappsomspp/pappsoexception.h>
Olivier Langella's avatar
Olivier Langella committed
#include <QFileInfo>
Olivier Langella's avatar
Olivier Langella committed
#include "../../utils/readspectrum.h"

IdentificationDataSource::MapIdentificationDataSources IdentificationDataSource::_map_identification_data_sources = []
     MapIdentificationDataSources ret;

    return ret;
}();

IdentificationDataSource::IdentificationDataSource(const QString resource_name)
{
    _resource_name = resource_name;
}

IdentificationDataSource::IdentificationDataSource(const IdentificationDataSource& other)
{
    _ms_run_sp = other._ms_run_sp;
    _resource_name = other._resource_name;
}

IdentificationDataSource::~IdentificationDataSource()
{

}

bool IdentificationDataSource::operator==(const IdentificationDataSource& other) const
{

}

Olivier Langella's avatar
Olivier Langella committed
IdentificationDataSource * IdentificationDataSource::getInstance(const QString & location) {

    std::map< QString, IdentificationDataSource* >::iterator it = IdentificationDataSource::_map_identification_data_sources.find(location);
    if (it != IdentificationDataSource::_map_identification_data_sources.end()) {
Olivier Langella's avatar
Olivier Langella committed
        return it->second;
    }
    else {
        QFileInfo location_file(location);
        QString ext = location_file.suffix();
        //QString sample_name = location_file.baseName();
Olivier Langella's avatar
Olivier Langella committed
        if (ext.toLower() == "xml") {
            //X!Tandem result file
	    IdentificationXtandemFile * p_xtfile = new IdentificationXtandemFile(location_file);
	    _map_identification_data_sources.insert(std::pair< QString, IdentificationDataSource* >(location, p_xtfile));
	    _map_identification_data_sources.insert(std::pair< QString, IdentificationDataSource* >(location_file.absoluteFilePath(), p_xtfile));
	    return p_xtfile;
Olivier Langella's avatar
Olivier Langella committed
        }
    }
    throw pappso::PappsoException(QObject::tr("Identification resource %1 not recognized").arg(location));
Olivier Langella's avatar
Olivier Langella committed
}

const QString & IdentificationDataSource::getResourceName () const {
    return _resource_name;
}


void IdentificationDataSource::setMsRunSp (pappso::MsRunIdSp ms_run_sp) {
    _ms_run_sp = ms_run_sp;
}
pappso::MsRunIdSp IdentificationDataSource::getMsRunSp () const {
    return (_ms_run_sp);
}
Olivier Langella's avatar
Olivier Langella committed


pappso::SpectrumSp IdentificationDataSource::getSpectrumSp(unsigned int scan_number) const {
    pappso::SpectrumSp spectrum_sp = SpectrumStore::getSpectrumSpFromMsRunIdSp(_ms_run_sp, scan_number);
    return spectrum_sp;
}