-
Olivier Langella authoredOlivier Langella authored
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;
}