1
0
mirror of https://github.com/ElvishArtisan/rivendell.git synced 2025-04-16 22:23:16 +02:00

2014-10-24 Fred Gleason <fredg@paravelsystems.com>

* Added 'REPORTS.POST_EXPORT_CMD' and 'REPORTS.WIN_POST_EXPORT_CMD'
	fields to the database.
	* Incremented the database version to 242.
	* Added 'RDReport::postExportCommand()' and
	'RDReport::setPostExportCommand()' methods in 'lib/rdreport.cpp' and
	'lib/rdreport.h'.
	* Added 'Linux Post Export Cmd' and 'Windows Post Export Cmd' controls
	to the 'Edit Report' dialog in 'rdadmin/edit_report.cpp' and
	'rdadmin/edit_report.h'.
	* Implemented post export commands in 'lib/rdreport.cpp'.
This commit is contained in:
Fred Gleason 2014-10-24 15:35:20 -04:00
parent 0e927a1ba0
commit 4e48c93cb0
17 changed files with 244 additions and 80 deletions

@ -14564,3 +14564,14 @@
* Fixed a bug in the 'Edit Audio' dialog in 'lib/rdedit_audio.cpp'
that caused loss of precision when loading the Cut Gain control
[GitHub issue #000037].
2014-10-24 Fred Gleason <fredg@paravelsystems.com>
* Added 'REPORTS.POST_EXPORT_CMD' and 'REPORTS.WIN_POST_EXPORT_CMD'
fields to the database.
* Incremented the database version to 242.
* Added 'RDReport::postExportCommand()' and
'RDReport::setPostExportCommand()' methods in 'lib/rdreport.cpp' and
'lib/rdreport.h'.
* Added 'Linux Post Export Cmd' and 'Windows Post Export Cmd' controls
to the 'Edit Report' dialog in 'rdadmin/edit_report.cpp' and
'rdadmin/edit_report.h'.
* Implemented post export commands in 'lib/rdreport.cpp'.

@ -65,6 +65,7 @@ EXTRA_DIST = audio_perms.txt\
repl_cut_state.txt\
replicator_map.txt\
replicators.txt\
reports.txt\
services.txt\
sources.txt\
stations.txt\

29
docs/tables/reports.txt Normal file

@ -0,0 +1,29 @@
REPORTS Table Layout for Rivendell
The REPORTS table holds data concerning each report configured on the system.
FIELD NAME TYPE REMARKS
---------------------------------------------------------------
ID int(10) unsigned Primary Key
NAME char(64)
DESCRIPTION char(64)
EXPORT_FILTER int(11)
EXPORT_PATH char(255)
POST_EXPORT_CMD text
WIN_EXPORT_PATH char(255)
WIN_POST_EXPORT_CMD text
EXPORT_TFC enum('N','Y')
EXPORT_MUS enum('N','Y')
FORCE_MUS enum('N','Y')
EXPORT_GEN enum('N','Y')
STATION_ID char(16)
CART_DIGITS int(10) unsigned
USE_LEADING_ZEROS enum('N','Y')
LINES_PER_PAGE int(11)
SERVICE_NAME char(64)
STATION_TYPE int(11)
STATION_FORMAT char(64)
FILTER_ONAIR_FLAG enum('N','Y')
FILTER_GROUPS enum('N','Y')
START_TIME time
END_TIME time

@ -26,7 +26,7 @@
/*
* Current Database Version
*/
#define RD_VERSION_DATABASE 241
#define RD_VERSION_DATABASE 242
#endif // DBVERSION_H

@ -20,6 +20,8 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <stdlib.h>
#include <qfile.h>
#include <qobject.h>
@ -87,14 +89,27 @@ void RDReport::setFilter(ExportFilter filter) const
QString RDReport::exportPath(ExportOs ostype) const
{
return RDGetSqlValue("REPORTS","NAME",report_name,OsFieldName(ostype)).
toString();
return RDGetSqlValue("REPORTS","NAME",report_name,
OsFieldName(ostype)+"EXPORT_PATH").toString();
}
void RDReport::setExportPath(ExportOs ostype,const QString &path) const
{
SetRow(OsFieldName(ostype),path);
SetRow(OsFieldName(ostype)+"EXPORT_PATH",path);
}
QString RDReport::postExportCommand(ExportOs ostype) const
{
return RDGetSqlValue("REPORTS","NAME",report_name,
OsFieldName(ostype)+"POST_EXPORT_CMD").toString();
}
void RDReport::setPostExportCommand(ExportOs ostype,const QString &cmd) const
{
SetRow(OsFieldName(ostype)+"POST_EXPORT_CMD",cmd);
}
@ -549,69 +564,72 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
bool ret=false;
switch(filter()) {
case RDReport::CbsiDeltaFlex:
ret=ExportDeltaflex(startdate,enddate,mixname);
break;
case RDReport::CbsiDeltaFlex:
ret=ExportDeltaflex(startdate,enddate,mixname);
break;
case RDReport::TextLog:
ret=ExportTextLog(startdate,enddate,mixname);
break;
case RDReport::TextLog:
ret=ExportTextLog(startdate,enddate,mixname);
break;
case RDReport::BmiEmr:
ret=ExportBmiEmr(startdate,enddate,mixname);
break;
case RDReport::BmiEmr:
ret=ExportBmiEmr(startdate,enddate,mixname);
break;
case RDReport::NaturalLog:
case RDReport::Technical:
ret=ExportTechnical(startdate,enddate,mixname);
break;
case RDReport::NaturalLog:
case RDReport::Technical:
ret=ExportTechnical(startdate,enddate,mixname);
break;
case RDReport::SoundExchange:
ret=ExportSoundEx(startdate,enddate,mixname);
break;
case RDReport::SoundExchange:
ret=ExportSoundEx(startdate,enddate,mixname);
break;
case RDReport::NprSoundExchange:
ret=ExportNprSoundEx(startdate,enddate,mixname);
break;
case RDReport::NprSoundExchange:
ret=ExportNprSoundEx(startdate,enddate,mixname);
break;
case RDReport::RadioTraffic:
ret=ExportRadioTraffic(startdate,enddate,mixname);
break;
case RDReport::RadioTraffic:
ret=ExportRadioTraffic(startdate,enddate,mixname);
break;
case RDReport::VisualTraffic:
ret=ExportDeltaflex(startdate,enddate,mixname);
break;
case RDReport::VisualTraffic:
ret=ExportDeltaflex(startdate,enddate,mixname);
break;
case RDReport::CounterPoint:
case RDReport::WideOrbit:
ret=ExportRadioTraffic(startdate,enddate,mixname);
break;
case RDReport::CounterPoint:
case RDReport::WideOrbit:
ret=ExportRadioTraffic(startdate,enddate,mixname);
break;
case RDReport::Music1:
ret=ExportRadioTraffic(startdate,enddate,mixname);
break;
case RDReport::Music1:
ret=ExportRadioTraffic(startdate,enddate,mixname);
break;
case RDReport::MusicClassical:
ret=ExportMusicClassical(startdate,enddate,mixname);
break;
case RDReport::MusicClassical:
ret=ExportMusicClassical(startdate,enddate,mixname);
break;
case RDReport::MusicPlayout:
ret=ExportMusicPlayout(startdate,enddate,mixname);
break;
case RDReport::MusicPlayout:
ret=ExportMusicPlayout(startdate,enddate,mixname);
break;
case RDReport::MusicSummary:
ret=ExportMusicSummary(startdate,enddate,mixname);
break;
case RDReport::MusicSummary:
ret=ExportMusicSummary(startdate,enddate,mixname);
break;
default:
return false;
break;
default:
return false;
break;
}
#ifdef WIN32
*out_path=RDDateDecode(exportPath(RDReport::Windows),startdate);
QString post_cmd=RDDateDecode(postExportCommand(RDReport::Windows),startdate);
#else
*out_path=RDDateDecode(exportPath(RDReport::Linux),startdate);
QString post_cmd=RDDateDecode(postExportCommand(RDReport::Linux),startdate);
#endif
system(post_cmd);
// printf("MIXDOWN TABLE: %s_SRT\n",(const char *)mixname);
sql=QString().sprintf("drop table `%s_SRT`",(const char *)mixname);
q=new RDSqlQuery(sql);
@ -866,10 +884,10 @@ QString RDReport::OsFieldName(ExportOs os) const
{
switch(os) {
case RDReport::Linux:
return QString("EXPORT_PATH");
return QString("");
case RDReport::Windows:
return QString("WIN_EXPORT_PATH");
return QString("WIN_");
}
return QString();
}

@ -51,6 +51,8 @@ class RDReport
void setFilter(ExportFilter filter) const;
QString exportPath(ExportOs ostype) const;
void setExportPath(ExportOs ostype,const QString &path) const;
QString postExportCommand(ExportOs ostype) const;
void setPostExportCommand(ExportOs ostype,const QString &cmd) const;
bool exportTypeEnabled(ExportType type) const;
void setExportTypeEnabled(ExportType type,bool state) const;
bool exportTypeForced(ExportType type) const;

@ -1562,7 +1562,9 @@ bool CreateDb(QString name,QString pwd)
DESCRIPTION char(64),\
EXPORT_FILTER int,\
EXPORT_PATH char(255),\
POST_EXPORT_CMD text,\
WIN_EXPORT_PATH char(255),\
WIN_POST_EXPORT_CMD text,\
EXPORT_TFC enum('N','Y') default 'N',\
FORCE_TFC enum('N','Y') default 'N',\
EXPORT_MUS enum('N','Y') default 'N',\
@ -8071,6 +8073,18 @@ int UpdateDb(int ver)
delete q;
}
if(ver<242) {
sql=QString("alter table REPORTS add column ")+
"POST_EXPORT_CMD text after EXPORT_PATH";
q=new QSqlQuery(sql);
delete q;
sql=QString("alter table REPORTS add column ")+
"WIN_POST_EXPORT_CMD text after WIN_EXPORT_PATH";
q=new QSqlQuery(sql);
delete q;
}
// **** End of version updates ****

@ -204,14 +204,36 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
//
// Linux Post Export Command
//
edit_postexport_cmd_edit=new QLineEdit(this);
edit_postexport_cmd_edit->setGeometry(170,178,sizeHint().width()-180,19);
edit_postexport_cmd_edit->setValidator(validator);
label=new QLabel(edit_path_edit,tr("Linux Post Export Cmd:"),this);
label->setGeometry(10,178,155,19);
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
//
// Windows Export Path
//
edit_winpath_edit=new QLineEdit(this);
edit_winpath_edit->setGeometry(170,178,sizeHint().width()-180,19);
edit_winpath_edit->setGeometry(170,199,sizeHint().width()-180,19);
edit_winpath_edit->setMaxLength(255);
label=new QLabel(edit_winpath_edit,tr("Windows Export Path:"),this);
label->setGeometry(10,178,155,19);
label->setGeometry(10,199,155,19);
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
//
// Windows Post Export Command
//
edit_winpostexport_cmd_edit=new QLineEdit(this);
edit_winpostexport_cmd_edit->setGeometry(170,219,sizeHint().width()-180,19);
edit_winpostexport_cmd_edit->setValidator(validator);
label=new QLabel(edit_path_edit,tr("Windows Post Export Cmd:"),this);
label->setGeometry(10,219,155,19);
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
@ -219,28 +241,28 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
// Type Selectors
//
label=new QLabel(tr("Export Event Types:"),this);
label->setGeometry(10,199,155,19);
label->setGeometry(10,240,155,19);
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
edit_traffic_box=new QCheckBox(this);
edit_traffic_box->setGeometry(170,200,15,15);
edit_traffic_box->setGeometry(170,242,15,15);
edit_traffic_label=new QLabel(tr("Traffic"),this);
edit_traffic_label->setGeometry(187,199,80,19);
edit_traffic_label->setGeometry(187,241,80,19);
edit_traffic_label->setFont(check_font);
edit_traffic_label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
edit_music_box=new QCheckBox(this);
edit_music_box->setGeometry(270,201,15,15);
edit_music_box->setGeometry(270,243,15,15);
edit_music_label=new QLabel(tr("Music"),this);
edit_music_label->setGeometry(287,199,80,19);
edit_music_label->setGeometry(287,241,80,19);
edit_music_label->setFont(check_font);
edit_music_label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
edit_generic_box=new QCheckBox(this);
edit_generic_box->setGeometry(370,201,15,15);
edit_generic_box->setGeometry(370,243,15,15);
label=new QLabel(tr("All"),this);
label->setGeometry(387,199,80,19);
label->setGeometry(387,241,80,19);
label->setFont(check_font);
label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
connect(edit_generic_box,SIGNAL(toggled(bool)),
@ -250,21 +272,21 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
// Force Event Source Selectors
//
label=new QLabel(tr("Export Events From:"),this);
label->setGeometry(10,220,155,19);
label->setGeometry(10,262,155,19);
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
edit_forcetraffic_box=new QCheckBox(this);
edit_forcetraffic_box->setGeometry(170,222,15,15);
edit_forcetraffic_box->setGeometry(170,264,15,15);
label=new QLabel(tr("Traffic Log"),this);
label->setGeometry(187,220,80,19);
label->setGeometry(187,242,80,19);
label->setFont(check_font);
label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
edit_forcemusic_box=new QCheckBox(this);
edit_forcemusic_box->setGeometry(270,222,15,15);
edit_forcemusic_box->setGeometry(270,264,15,15);
label=new QLabel(tr("Music Log"),this);
label->setGeometry(287,220,80,19);
label->setGeometry(287,262,80,19);
label->setFont(check_font);
label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
@ -272,11 +294,11 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
// Include Only On Air Events
//
edit_onairflag_box=new QComboBox(this);
edit_onairflag_box->setGeometry(170,241,60,19);
edit_onairflag_box->setGeometry(170,283,60,19);
edit_onairflag_box->insertItem(tr("No"));
edit_onairflag_box->insertItem(tr("Yes"));
label=new QLabel(edit_onairflag_box,tr("Include Only OnAir Events:"),this);
label->setGeometry(10,241,155,19);
label->setGeometry(10,283,155,19);
label->setFont(font);
label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
@ -284,24 +306,24 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
// Daypart Filter
//
edit_daypart_check=new QCheckBox(this);
edit_daypart_check->setGeometry(60,271,15,15);
edit_daypart_check->setGeometry(60,313,15,15);
edit_daypart_label=
new QLabel(edit_daypart_check,tr("Filter by Daypart"),this);
edit_daypart_label->setGeometry(edit_daypart_check->geometry().x()+20,271,155,19);
edit_daypart_label->setGeometry(edit_daypart_check->geometry().x()+20,313,155,19);
edit_daypart_label->setFont(font);
edit_daypart_label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
edit_starttime_edit=new QTimeEdit(this);
edit_starttime_edit->setGeometry(150,292,80,20);
edit_starttime_edit->setGeometry(150,334,80,20);
edit_starttime_label=new QLabel(edit_starttime_edit,tr("Start Time:"),this);
edit_starttime_label->setGeometry(65,292,80,20);
edit_starttime_label->setGeometry(65,334,80,20);
edit_starttime_label->setFont(font);
edit_starttime_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
edit_endtime_edit=new QTimeEdit(this);
edit_endtime_edit->setGeometry(335,292,80,20);
edit_endtime_edit->setGeometry(335,334,80,20);
edit_endtime_label=new QLabel(edit_endtime_edit,tr("End Time:"),this);
edit_endtime_label->setGeometry(250,292,80,20);
edit_endtime_label->setGeometry(250,334,80,20);
edit_endtime_label->setFont(font);
edit_endtime_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
@ -320,7 +342,7 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
edit_service_sel=new RDListSelector(this);
edit_service_sel->
setGeometry((sizeHint().width()-edit_service_sel->sizeHint().width())/2,
331,edit_service_sel->sizeHint().width(),
373,edit_service_sel->sizeHint().width(),
edit_service_sel->sizeHint().height());
edit_service_sel->sourceSetLabel(tr("Available Services"));
edit_service_sel->destSetLabel(tr("Source Services"));
@ -331,7 +353,7 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
edit_station_sel=new RDListSelector(this);
edit_station_sel->
setGeometry((sizeHint().width()-edit_station_sel->sizeHint().width())/2,
445,edit_station_sel->sizeHint().width(),
477,edit_station_sel->sizeHint().width(),
edit_station_sel->sizeHint().height());
edit_station_sel->sourceSetLabel(tr("Available Hosts"));
edit_station_sel->destSetLabel(tr("Source Hosts"));
@ -342,15 +364,15 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
edit_group_sel=new RDListSelector(this);
edit_group_sel->
setGeometry((sizeHint().width()-edit_group_sel->sizeHint().width())/2,
576,edit_group_sel->sizeHint().width(),
593,edit_group_sel->sizeHint().width(),
edit_group_sel->sizeHint().height());
edit_group_sel->sourceSetLabel(tr("Available Groups"));
edit_group_sel->destSetLabel(tr("Allowed Groups"));
edit_group_box=new QCheckBox(this);
edit_group_box->setGeometry(60,552,15,15);
edit_group_box->setGeometry(60,574,15,15);
label=new QLabel(edit_group_box,tr("Filter by Groups"),this);
label->setGeometry(edit_group_box->geometry().x()+20,551,155,19);
label->setGeometry(edit_group_box->geometry().x()+20,573,155,19);
label->setFont(font);
label->setAlignment(AlignLeft|AlignVCenter|ShowPrefix);
connect(edit_group_box,SIGNAL(toggled(bool)),
@ -371,8 +393,7 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
// Cancel Button
//
button=new QPushButton(this);
button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,
80,50);
button->setGeometry(sizeHint().width()-90,sizeHint().height()-60,80,50);
button->setFont(font);
button->setText(tr("&Cancel"));
connect(button,SIGNAL(clicked()),this,SLOT(cancelData()));
@ -391,7 +412,11 @@ EditReport::EditReport(QString rptname,QWidget *parent,const char *name)
edit_stationformat_edit->setText(edit_report->stationFormat());
edit_linesperpage_spin->setValue(edit_report->linesPerPage());
edit_path_edit->setText(edit_report->exportPath(RDReport::Linux));
edit_postexport_cmd_edit->
setText(edit_report->postExportCommand(RDReport::Linux));
edit_winpath_edit->setText(edit_report->exportPath(RDReport::Windows));
edit_winpostexport_cmd_edit->
setText(edit_report->postExportCommand(RDReport::Windows));
edit_traffic_box->
setChecked(edit_report->exportTypeEnabled(RDReport::Traffic));
edit_music_box->
@ -482,7 +507,7 @@ EditReport::~EditReport()
QSize EditReport::sizeHint() const
{
return QSize(500,732);
return QSize(500,749);
}
@ -525,7 +550,11 @@ void EditReport::okData()
edit_report->setServiceName(edit_servicename_edit->text());
edit_report->setStationFormat(edit_stationformat_edit->text());
edit_report->setExportPath(RDReport::Linux,edit_path_edit->text());
edit_report->
setPostExportCommand(RDReport::Linux,edit_postexport_cmd_edit->text());
edit_report->setExportPath(RDReport::Windows,edit_winpath_edit->text());
edit_report->
setPostExportCommand(RDReport::Windows,edit_winpostexport_cmd_edit->text());
edit_report->
setExportTypeEnabled(RDReport::Traffic,edit_traffic_box->isChecked());
edit_report->

@ -65,7 +65,9 @@ class EditReport : public QDialog
QLineEdit *edit_stationformat_edit;
QSpinBox *edit_linesperpage_spin;
QLineEdit *edit_path_edit;
QLineEdit *edit_postexport_cmd_edit;
QLineEdit *edit_winpath_edit;
QLineEdit *edit_winpostexport_cmd_edit;
QLabel *edit_traffic_label;
QCheckBox *edit_traffic_box;
QLabel *edit_music_label;

@ -3336,6 +3336,14 @@ pro naplnění databáze zdroji zvuku.</translation>
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSettings</name>

@ -3302,6 +3302,14 @@ in order to populate the audio resources database.</source>
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSettings</name>

@ -3316,6 +3316,14 @@ para generar la base de datos con los recursos de audio disponibles.</translatio
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSchedCode</name>

@ -3026,6 +3026,14 @@ in order to populate the audio resources database.</source>
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSettings</name>

@ -3301,6 +3301,14 @@ for lydressursar.</translation>
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSettings</name>

@ -3301,6 +3301,14 @@ for lydressursar.</translation>
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSettings</name>

@ -3294,6 +3294,14 @@ Isto para popular os recursos de áudio na Base de Dados.</translation>
<source>End Time:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Linux Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Windows Post Export Cmd:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSettings</name>

@ -20,6 +20,8 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
#include <stdio.h>
#include <rdhpiinformation.h>