// commandline_ops.cpp // // Command Line Operations for RDLogManager // // (C) Copyright 2012-2018 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program 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 this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // #include #include #include #include #include #include #include #include #include #include #include #include int RunReportOperation(int argc,char *argv[],const QString &rptname, bool protect_existing,int start_offset,int end_offset) { QString out_path; QString err_msg; QApplication a(argc,argv,false); if(end_offsetopen(&err_msg)) { fprintf(stderr,"rdlogmanager: %s\n",err_msg.toUtf8().constData()); exit(RDApplication::ExitNoDb); } // // Open Report Generator // RDReport *report=new RDReport(rptname,rda->station(),rda->config()); if(!report->exists()) { fprintf(stderr,"rdlogmanager: no such report\n"); return RDApplication::ExitNoReport; } // // Generate Report // QDate yesterday=QDate::currentDate().addDays(-1); if(protect_existing&&report->outputExists(yesterday.addDays(start_offset))) { fprintf(stderr,"report \"%s\" for %s already exists\n", (const char *)rptname.utf8(), (const char *)yesterday.addDays(start_offset).toString()); exit(RDApplication::ExitOutputProtected); } if(!report->generateReport(yesterday.addDays(start_offset), yesterday.addDays(end_offset),rda->station(), &out_path)) { fprintf(stderr,"rdlogmanager: report generation failed [%s]\n", (const char *)RDReport::errorText(report->errorCode())); return RDApplication::ExitReportFailed; } return RDApplication::ExitOk; }