Skip to content
Snippets Groups Projects
project.cpp 2.57 KiB

/*******************************************************************************
* Copyright (c) 2015 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 "project.h"
#include "../input/xpipsaxhandler.h"

Project::Project()
{

}

Project::~Project()
{
    auto it = _identification_goup_list.begin();
    while (it != _identification_goup_list.end()) {
        delete (*it);
        it++;
    }
}

ProjectSp Project::makeProjectSp() const {
    return std::make_shared<Project>(*this);
}


IdentificationGroup* Project::newIdentificationGroup() {
    _p_current_identification_group =  new IdentificationGroup(this);
    _identification_goup_list.push_back(_p_current_identification_group);
    return _p_current_identification_group;
}
void Project::readXpipFile(QFileInfo xpip_fileinfo) {


    XpipSaxHandler * parser = new XpipSaxHandler(this);

    QXmlSimpleReader simplereader;
    simplereader.setContentHandler(parser);
    simplereader.setErrorHandler(parser);

    qDebug() << "Read XPIP XML result file '" << xpip_fileinfo.absoluteFilePath() << "'";

    QFile qfile(xpip_fileinfo.absoluteFilePath());
    QXmlInputSource xmlInputSource(&qfile);

    if (simplereader.parse(xmlInputSource)) {

        qfile.close();
    } else {
        qDebug() << parser->errorString();
        // throw PappsoException(
        //    QObject::tr("error reading tandem XML result file :\n").append(
        //         parser->errorString()));

        qfile.close();

        throw pappso::PappsoException(QObject::tr("Error reading %1 XPIP file :\n %2").arg(xpip_fileinfo.absoluteFilePath()).arg(parser->errorString()));
    }

}

IdentificationGroup* Project::getCurrentIdentificationGroupP() const {
    return _p_current_identification_group;
}