From 3973ab5f0121fd6f28506781ccfd99ff06d774ef Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 10 Jul 2018 11:05:46 -0400 Subject: [PATCH] 2018-07-10 Fred Gleason * Added a 'STACK_LINES' table to the database. * Incremented the database version to 293. --- ChangeLog | 3 + docs/tables/Makefile.am | 1 + docs/tables/stack_lines.txt | 13 +++ lib/Makefile.am | 1 - lib/dbversion.h | 2 +- lib/lib.pro | 2 - lib/rdcreate_log.cpp | 154 ------------------------------ lib/rdcreate_log.h | 32 ------- lib/rdevent_line.cpp | 36 ++++--- lib/rdlog.cpp | 1 - lib/rdlog_event.cpp | 20 ++-- lib/rdreport.cpp | 1 - lib/rdsvc.cpp | 10 +- rdairplay/list_log.cpp | 2 - rdlogedit/edit_log.cpp | 1 - rdlogmanager/commandline_ops.cpp | 1 - rdlogmanager/edit_clock.cpp | 1 - rdlogmanager/edit_eventline.cpp | 6 +- rdlogmanager/edit_grid.cpp | 11 +-- rdlogmanager/edit_note.cpp | 5 +- rdlogmanager/edit_track.cpp | 5 +- rdlogmanager/generate_log.cpp | 14 --- rdlogmanager/list_clocks.cpp | 1 - rdlogmanager/list_events.cpp | 1 - rdlogmanager/list_grids.cpp | 7 +- rdlogmanager/logobject.cpp | 11 --- rdlogmanager/rdlogmanager.cpp | 1 - rdlogmanager/rename_item.cpp | 7 +- utils/rdclilogedit/operations.cpp | 1 - utils/rddbmgr/check.cpp | 1 - utils/rddbmgr/revertschema.cpp | 56 +++++++++++ utils/rddbmgr/schemamap.cpp | 2 +- utils/rddbmgr/updateschema.cpp | 71 ++++++++++++++ utils/rdmaint/rdmaint.cpp | 21 ++-- utils/rdmarkerset/rdmarkerset.cpp | 1 - web/rdxport/logs.cpp | 1 - 36 files changed, 210 insertions(+), 294 deletions(-) delete mode 100644 lib/rdcreate_log.cpp delete mode 100644 lib/rdcreate_log.h diff --git a/ChangeLog b/ChangeLog index 520f3c15..c4077984 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17112,3 +17112,6 @@ 2018-07-10 Fred Gleason * Added a 'RULE_LINES' table to the database. * Incremented the database version to 292. +2018-07-10 Fred Gleason + * Added a 'STACK_LINES' table to the database. + * Incremented the database version to 293. diff --git a/docs/tables/Makefile.am b/docs/tables/Makefile.am index 75de8491..2042ef11 100644 --- a/docs/tables/Makefile.am +++ b/docs/tables/Makefile.am @@ -75,6 +75,7 @@ EXTRA_DIST = audio_cards.txt\ service_clocks.txt\ services.txt\ sources.txt\ + stack_lines.txt\ stations.txt\ system.txt\ triggers.txt\ diff --git a/docs/tables/stack_lines.txt b/docs/tables/stack_lines.txt index e69de29b..0e863c77 100644 --- a/docs/tables/stack_lines.txt +++ b/docs/tables/stack_lines.txt @@ -0,0 +1,13 @@ + Stack Lines Table Layout for Rivendell + +The STACK_LINES table holds history data for the music scheduler. + +FIELD NAME TYPE REMARKS +------------------------------------------------------------------------ +ID int(10) unsigned Primary key, auto_increment +SCHED_STACK_ID int(10) unsigned +SERVICE_NAME char(10) From SERVICES.NAME +CART int(10) unsigned From CART.NUMBER +ARTIST varchar(255) From CART.ARTIST +SCHED_CODES varchar(255) +SCHEDULED_AT datetime diff --git a/lib/Makefile.am b/lib/Makefile.am index d6c8b694..4d714b16 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -103,7 +103,6 @@ dist_librd_la_SOURCES = dbversion.h\ rdconf.cpp rdconf.h\ rdconfig.cpp rdconfig.h\ rdcopyaudio.cpp rdcopyaudio.h\ - rdcreate_log.cpp rdcreate_log.h\ rdcreateauxfieldstable.cpp rdcreateauxfieldstable.h\ rdcueedit.cpp rdcueedit.h\ rdcueeditdialog.cpp rdcueeditdialog.h\ diff --git a/lib/dbversion.h b/lib/dbversion.h index f8961d6c..6c413589 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 292 +#define RD_VERSION_DATABASE 293 #endif // DBVERSION_H diff --git a/lib/lib.pro b/lib/lib.pro index c16e208f..095962d0 100644 --- a/lib/lib.pro +++ b/lib/lib.pro @@ -55,7 +55,6 @@ SOURCES += rdcmd_switch.cpp SOURCES += rdcombobox.cpp SOURCES += rdconf.cpp SOURCES += rdconfig.cpp -SOURCES += rdcreate_log.cpp SOURCES += rdcut.cpp SOURCES += rddatedialog.cpp SOURCES += rddatedecode.cpp @@ -201,7 +200,6 @@ HEADERS += rdcmd_switch.h HEADERS += rdcombobox.h HEADERS += rdconf.h HEADERS += rdconfig.h -HEADERS += rdcreate_log.h HEADERS += rdcut.h HEADERS += rddatedecode.h HEADERS += rddatedialog.h diff --git a/lib/rdcreate_log.cpp b/lib/rdcreate_log.cpp deleted file mode 100644 index ac80cc0f..00000000 --- a/lib/rdcreate_log.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// rdcreate_log.cpp -// -// Create a new, empty Rivendell log table. -// -// (C) Copyright 2002-2014,2016 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 - -/* -void RDCreateLogTable(const QString &name,RDConfig *config) -{ - QString sql=RDCreateLogTableSql(name,config); - RDSqlQuery *q=new RDSqlQuery(sql); - delete q; -} -*/ -/* -QString RDCreateLogTableSql(QString name,RDConfig *config) -{ - return QString("create table if not exists `")+name+"`"+ - "(ID INT NOT NULL PRIMARY KEY,"+ - "COUNT INT NOT NULL,"+ - "TYPE INT DEFAULT 0,"+ - "SOURCE INT NOT NULL,"+ - "START_TIME int,"+ - "GRACE_TIME int default 0,"+ - "CART_NUMBER INT UNSIGNED NOT NULL default 0,"+ - "TIME_TYPE INT NOT NULL,"+ - "POST_POINT enum('N','Y') default 'N',"+ - "TRANS_TYPE INT NOT NULL,"+ - "START_POINT INT NOT NULL DEFAULT -1,"+ - "END_POINT INT NOT NULL DEFAULT -1,"+ - "FADEUP_POINT int default -1,"+ - QString().sprintf("FADEUP_GAIN int default %d,",RD_FADE_DEPTH)+ - "FADEDOWN_POINT int default -1,"+ - QString().sprintf("FADEDOWN_GAIN int default %d,",RD_FADE_DEPTH)+ - "SEGUE_START_POINT INT NOT NULL DEFAULT -1,"+ - "SEGUE_END_POINT INT NOT NULL DEFAULT -1,"+ - QString().sprintf("SEGUE_GAIN int default %d,",RD_FADE_DEPTH)+ - "DUCK_UP_GAIN int default 0,"+ - "DUCK_DOWN_GAIN int default 0,"+ - "COMMENT CHAR(255),"+ - "LABEL CHAR(64),"+ - "ORIGIN_USER char(255),"+ - "ORIGIN_DATETIME datetime,"+ - "EVENT_LENGTH int default -1,"+ - "LINK_EVENT_NAME char(64),"+ - "LINK_START_TIME int,"+ - "LINK_LENGTH int default 0,"+ - "LINK_START_SLOP int default 0,"+ - "LINK_END_SLOP int default 0,"+ - "LINK_ID int default -1,"+ - "LINK_EMBEDDED enum('N','Y') default 'N',"+ - "EXT_START_TIME time,"+ - "EXT_LENGTH int,"+ - "EXT_CART_NAME char(32),"+ - "EXT_DATA char(32),"+ - "EXT_EVENT_ID char(32),"+ - "EXT_ANNC_TYPE char(8),"+ - "index COUNT_IDX (COUNT),"+ - "index CART_NUMBER_IDX (CART_NUMBER),"+ - "index LABEL_IDX (LABEL))"+ - config->createTablePostfix(); -} -*/ -/* -QString RDCreateClockTableSql(QString name,RDConfig *config) -{ - return QString("create table `")+name+"` ("+ - "ID int unsigned auto_increment not null primary key,"+ - "EVENT_NAME char(64) not null,"+ - "START_TIME int not null,"+ - "LENGTH int not null,"+ - "INDEX EVENT_NAME_IDX (EVENT_NAME))"+ - config->createTablePostfix(); -} -*/ -/* -QString RDCreateReconciliationTableSql(QString name,RDConfig *config) -{ - QString sql=QString("create table `")+name+"` ("+ - "ID int unsigned auto_increment primary key,"+ - "LENGTH int,"+ - "LOG_NAME char(64),"+ - "LOG_ID int,"+ - "CART_NUMBER int unsigned,"+ - "CUT_NUMBER int,"+ - "TITLE char(255),"+ - "ARTIST char(255),"+ - "PUBLISHER char(64),"+ - "COMPOSER char(64),"+ - "USER_DEFINED char(255),"+ - "SONG_ID char(32),"+ - "ALBUM char(255),"+ - "LABEL char(64),"+ - "CONDUCTOR char(64),"+ - "USAGE_CODE int,"+ - "DESCRIPTION char(64),"+ - "OUTCUE char(64),"+ - "ISRC char(12),"+ - "ISCI char(32),"+ - "STATION_NAME char(64),"+ - "EVENT_DATETIME datetime,"+ - "SCHEDULED_TIME time,"+ - "EVENT_TYPE int,"+ - "EVENT_SOURCE int,"+ - "PLAY_SOURCE int,"+ - "START_SOURCE int default 0,"+ - "ONAIR_FLAG enum('N','Y') default 'N',"+ - "EXT_START_TIME time,"+ - "EXT_LENGTH int,"+ - "EXT_CART_NAME char(32),"+ - "EXT_DATA char(32),"+ - "EXT_EVENT_ID char(8),"+ - "EXT_ANNC_TYPE char(8),"+ - "index EVENT_DATETIME_IDX(EVENT_DATETIME))"+ - config->createTablePostfix(); - - return sql; -} -*/ - -QString RDCreateStackTableSql(QString name,RDConfig *config) -{ - QString sql; - sql=QString().sprintf("create table if not exists `%s_STACK` (\ - SCHED_STACK_ID int unsigned not null primary key,\ - CART int unsigned not null,\ - ARTIST varchar(255),\ - SCHED_CODES varchar(255),\ - SCHEDULED_AT datetime default '1000-01-01 00:00:00')", - (const char *)name.replace(" ","_"))+ - config->createTablePostfix(); - return sql; -} diff --git a/lib/rdcreate_log.h b/lib/rdcreate_log.h deleted file mode 100644 index 4799f339..00000000 --- a/lib/rdcreate_log.h +++ /dev/null @@ -1,32 +0,0 @@ -// rdcreate_log.h -// -// Create a new, empty Rivendell log table. -// -// (C) Copyright 2002-2003,2016 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 "rdconfig.h" - -#ifndef RDCREATE_LOG_H -#define RDCREATE_LOG_H - -//void RDCreateLogTable(const QString &name,RDConfig *config); -//QString RDCreateLogTableSql(QString name,RDConfig *config); -//QString RDCreateClockTableSql(QString name,RDConfig *config); -//QString RDCreateReconciliationTableSql(QString name,RDConfig *config); -QString RDCreateStackTableSql(QString name,RDConfig *config); - -#endif diff --git a/lib/rdevent_line.cpp b/lib/rdevent_line.cpp index b5e8c683..f1219b40 100644 --- a/lib/rdevent_line.cpp +++ b/lib/rdevent_line.cpp @@ -620,7 +620,10 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } delete q; - sql=QString("SELECT MAX(SCHED_STACK_ID) from `"+svcname_rp+"_STACK`"); + sql=QString("select ")+ + "MAX(SCHED_STACK_ID) "+ + "from STACK_LINES where "+ + "SERVICE_NAME=\""+RDEscapeString(svcname)+"\""; q=new RDSqlQuery(sql); if (q->next()) { @@ -667,10 +670,10 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, // Title separation schedCL->save(); - sql=QString("select CART from `")+svcname_rp+"_STACK` where "+ + sql=QString("select CART from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+ QString().sprintf("SCHED_STACK_ID >= %d",stackid-titlesep); q=new RDSqlQuery(sql); - while (q->next()) { for(counter=0;countergetNumberOfItems();counter++) { if(q->value(0).toUInt()==schedCL->getItemCartnumber(counter)) { @@ -686,7 +689,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, // Artist separation schedCL->save(); - sql=QString("select ARTIST from `")+svcname_rp+"_STACK` where "+ + sql=QString("select ARTIST from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+ QString().sprintf("SCHED_STACK_ID >= %d",stackid-artistsep); q=new RDSqlQuery(sql); while (q->next()) { @@ -722,8 +726,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, QString wstr=q->value(0).toString(); wstr+=" "; wstr=wstr.left(11); - sql=QString("select CART from `")+svcname_rp+"_STACK` where "+ - QString().sprintf("SCHED_STACK_ID > %d and ",stackid-range)+ + sql=QString("select CART from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+ + QString().sprintf("SCHED_STACK_ID > %d && ",stackid-range)+ "SCHED_CODES like \"%%"+RDEscapeString(wstr)+"%%\""; q1=new RDSqlQuery(sql); if(q1->size()>=allowed || allowed==0) { @@ -744,8 +749,10 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, QString wstr=q->value(3).toString(); wstr+=" "; wstr=wstr.left(11); - sql=QString().sprintf("select CART from %s_STACK \ - where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr); + sql=QString("select CART from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+ + QString().sprintf("SCHED_STACK_ID=%d && ",stackid-1)+ + "SCHED_CODES like \"%"+RDEscapeString(wstr)+"%\""; q1=new RDSqlQuery(sql); if(q1->size()>0) { for(counter=0;countergetNumberOfItems();counter++) { @@ -766,8 +773,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, QString wstr=q->value(4).toString(); wstr+=" "; wstr=wstr.left(11); - sql=QString().sprintf("select CART from %s_STACK \ - where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr); + sql=QString("select CART from STACK_LINES where ")+ + QString().sprintf("SCHED_STACK_ID=%d && ",stackid-1)+ + "SCHED_CODES like \"%"+RDEscapeString(wstr)+"%\""; q1=new RDSqlQuery(sql); if(q1->size()>0) { for(counter=0;countergetNumberOfItems();counter++) { @@ -788,8 +796,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, QString wstr=q->value(5).toString(); wstr+=" "; wstr=wstr.left(11); - sql=QString().sprintf("select CART from %s_STACK \ - where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr); + sql=QString("select CART from STACK_LINES where ")+ + QString().sprintf("SCHED_STACK_ID=%d && ",stackid-1)+ + "SCHED_CODES like \"%"+RDEscapeString(wstr)+"%\""; q1=new RDSqlQuery(sql); if(q1->size()>0) { for(counter=0;countergetNumberOfItems();counter++) { @@ -830,7 +839,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, count++; - sql=QString("insert into `")+svcname_rp+"_STACK` set "+ + sql=QString("insert into STACK_LINES set ")+ + "SERVICE_NAME=\""+RDEscapeString(svcname)+"\","+ "SCHEDULED_AT=now(),"+ QString().sprintf("SCHED_STACK_ID=%u,",stackid)+ QString().sprintf("CART=%u,",schedCL->getItemCartnumber(schedpos))+ diff --git a/lib/rdlog.cpp b/lib/rdlog.cpp index a9cf0c99..6f6f7d6a 100644 --- a/lib/rdlog.cpp +++ b/lib/rdlog.cpp @@ -23,7 +23,6 @@ #include "rdapplication.h" #include "rddb.h" #include "rdconf.h" -#include "rdcreate_log.h" #include "rdescape_string.h" #include "rdlog.h" #include "rdlog_line.h" diff --git a/lib/rdlog_event.cpp b/lib/rdlog_event.cpp index e8e7effb..cc15ade0 100644 --- a/lib/rdlog_event.cpp +++ b/lib/rdlog_event.cpp @@ -2,7 +2,7 @@ // // Abstract Rivendell Log Events. // -// (C) Copyright 2002-2014,2016 Fred Gleason +// (C) Copyright 2002-2014,2016-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 @@ -19,15 +19,15 @@ // #include -#include -#include -#include -#include -#include -#include -#include -#include -#include + +#include "rd.h" +#include "rdapplication.h" +#include "rdconf.h" +#include "rddb.h" +#include "rddebug.h" +#include "rdescape_string.h" +#include "rdlog.h" +#include "rdlog_event.h" // // Global Classes diff --git a/lib/rdreport.cpp b/lib/rdreport.cpp index 7b726ae3..3313a200 100644 --- a/lib/rdreport.cpp +++ b/lib/rdreport.cpp @@ -25,7 +25,6 @@ #include "rdapplication.h" #include "rdconf.h" -#include "rdcreate_log.h" #include "rddatedecode.h" #include "rdescape_string.h" #include "rdlog_line.h" diff --git a/lib/rdsvc.cpp b/lib/rdsvc.cpp index 6ac15990..edb3737a 100644 --- a/lib/rdsvc.cpp +++ b/lib/rdsvc.cpp @@ -23,7 +23,6 @@ #include "rdapplication.h" #include "rdclock.h" #include "rdconf.h" -#include "rdcreate_log.h" #include "rddatedecode.h" #include "rddb.h" #include "rd.h" @@ -32,9 +31,6 @@ #include "rdsvc.h" #include "rdweb.h" -// -// Global Classes -// RDSvc::RDSvc(QString svcname,RDStation *station,RDConfig *config,QObject *parent) : QObject(parent) { @@ -1453,9 +1449,9 @@ void RDSvc::remove(const QString &name) } delete q; - QString tablename=name; - tablename.replace(" ","_"); - rda->dropTable(tablename+"_STACK"); + sql=QString("delete from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(name)+"\""; + RDSqlQuery::apply(sql); sql=QString("delete from ELR_LINES where ")+ "SERVICE_NAME=\""+RDEscapeString(name)+"\""; diff --git a/rdairplay/list_log.cpp b/rdairplay/list_log.cpp index 1a59d785..6d82ab6e 100644 --- a/rdairplay/list_log.cpp +++ b/rdairplay/list_log.cpp @@ -25,7 +25,6 @@ #include #include -#include #include #include #include @@ -45,7 +44,6 @@ #include "../icons/traffic.xpm" #include "../icons/music.xpm" - ListLog::ListLog(RDLogPlay *log,RDCae *cae,int id,bool allow_pause, QWidget *parent) : QWidget(parent) diff --git a/rdlogedit/edit_log.cpp b/rdlogedit/edit_log.cpp index c7b3da43..e0dd8078 100644 --- a/rdlogedit/edit_log.cpp +++ b/rdlogedit/edit_log.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include diff --git a/rdlogmanager/commandline_ops.cpp b/rdlogmanager/commandline_ops.cpp index d60308aa..7190a5e3 100644 --- a/rdlogmanager/commandline_ops.cpp +++ b/rdlogmanager/commandline_ops.cpp @@ -25,7 +25,6 @@ #include #include -#include #include #include #include diff --git a/rdlogmanager/edit_clock.cpp b/rdlogmanager/edit_clock.cpp index 0b480318..26341545 100644 --- a/rdlogmanager/edit_clock.cpp +++ b/rdlogmanager/edit_clock.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include diff --git a/rdlogmanager/edit_eventline.cpp b/rdlogmanager/edit_eventline.cpp index 70b6d037..32b071ae 100644 --- a/rdlogmanager/edit_eventline.cpp +++ b/rdlogmanager/edit_eventline.cpp @@ -2,7 +2,7 @@ // // Edit Rivendell Log Eventline // -// (C) Copyright 2002-2004,2016 Fred Gleason +// (C) Copyright 2002-2004,2016-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 @@ -25,16 +25,14 @@ #include #include -#include #include +#include #include -#include #include #include #include - EditEventLine::EditEventLine(RDEventLine *eventline,RDClock *clock,int line, QWidget *parent) : QDialog(parent,"",true) diff --git a/rdlogmanager/edit_grid.cpp b/rdlogmanager/edit_grid.cpp index 272c736d..e2e500b1 100644 --- a/rdlogmanager/edit_grid.cpp +++ b/rdlogmanager/edit_grid.cpp @@ -2,7 +2,7 @@ // // Edit Rivendell Log Grid // -// (C) Copyright 2002-2016 Fred Gleason +// (C) Copyright 2002-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 @@ -30,15 +30,14 @@ #include #include -#include #include +#include #include #include -#include -#include -#include -#include +#include "edit_grid.h" +#include "list_clocks.h" +#include "edit_clock.h" EditGrid::EditGrid(QString servicename,QWidget *parent) : QDialog(parent,"",true) diff --git a/rdlogmanager/edit_note.cpp b/rdlogmanager/edit_note.cpp index 4b346360..f48f5eee 100644 --- a/rdlogmanager/edit_note.cpp +++ b/rdlogmanager/edit_note.cpp @@ -2,7 +2,7 @@ // // Edit a Rivendell LogManager Note // -// (C) Copyright 2002-2004,2016 Fred Gleason +// (C) Copyright 2002-2004,2016-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 @@ -27,9 +27,8 @@ #include #include -#include -#include +#include "edit_note.h" EditNote::EditNote(QString *text,QWidget *parent) : QDialog(parent,"",true) diff --git a/rdlogmanager/edit_track.cpp b/rdlogmanager/edit_track.cpp index 5ff2933d..bd4706ba 100644 --- a/rdlogmanager/edit_track.cpp +++ b/rdlogmanager/edit_track.cpp @@ -2,7 +2,7 @@ // // Edit a Rivendell LogManager Track // -// (C) Copyright 2002-2004,2016 Fred Gleason +// (C) Copyright 2002-2004,2016-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 @@ -27,9 +27,8 @@ #include #include -#include -#include +#include "edit_track.h" EditTrack::EditTrack(QString *text,QWidget *parent) : QDialog(parent,"",true) diff --git a/rdlogmanager/generate_log.cpp b/rdlogmanager/generate_log.cpp index 833ee5f6..1f97a2ff 100644 --- a/rdlogmanager/generate_log.cpp +++ b/rdlogmanager/generate_log.cpp @@ -29,7 +29,6 @@ #include #include -#include #include #include #include @@ -49,7 +48,6 @@ #include "../icons/greenball.xpm" #include "../icons/redball.xpm" - GenerateLog::GenerateLog(QWidget *parent,int cmd_switch,QString *cmd_service, QDate *cmd_date) : QDialog(parent,"",true) @@ -348,18 +346,6 @@ void GenerateLog::createData() RDSqlQuery *q; srand(QTime::currentTime().msec()); - sql=RDCreateStackTableSql(gen_service_box->currentText().replace(" ","_"), - rda->config()); - - q=new RDSqlQuery(sql); - if(!q->isActive()) { - fprintf(stderr,"SQL: %s\n",(const char *)sql); - fprintf(stderr,"SQL Error: %s\n", - (const char *)q->lastError().databaseText()); - delete q; - } - delete q; - connect(svc,SIGNAL(generationProgress(int)), gen_progress_dialog,SLOT(setProgress(int))); if(!svc->generateLog(gen_date_edit->date(), diff --git a/rdlogmanager/list_clocks.cpp b/rdlogmanager/list_clocks.cpp index 053fd2b4..4b01d2f0 100644 --- a/rdlogmanager/list_clocks.cpp +++ b/rdlogmanager/list_clocks.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include #include diff --git a/rdlogmanager/list_events.cpp b/rdlogmanager/list_events.cpp index 9607fadc..62e7def0 100644 --- a/rdlogmanager/list_events.cpp +++ b/rdlogmanager/list_events.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include #include diff --git a/rdlogmanager/list_grids.cpp b/rdlogmanager/list_grids.cpp index e9f394da..172fe783 100644 --- a/rdlogmanager/list_grids.cpp +++ b/rdlogmanager/list_grids.cpp @@ -27,11 +27,10 @@ #include #include #include -#include -#include -#include -#include +#include "edit_grid.h" +#include "globals.h" +#include "list_grids.h" ListGrids::ListGrids(QWidget *parent) : QDialog(parent,"",true) diff --git a/rdlogmanager/logobject.cpp b/rdlogmanager/logobject.cpp index 4de608eb..2df06495 100644 --- a/rdlogmanager/logobject.cpp +++ b/rdlogmanager/logobject.cpp @@ -23,7 +23,6 @@ #include #include -#include #include #include #include @@ -62,8 +61,6 @@ LogObject::LogObject(const QString &svcname,int start_offset, void LogObject::userData() { QString err_msg; - QString sql; - RDSqlQuery *q; QString report; QString unused_report; QString svcname_table=log_service_name; @@ -96,14 +93,6 @@ void LogObject::userData() SendNotification(RDNotification::DeleteAction,log->name()); log->removeTracks(rda->station(),rda->user(),rda->config()); srand(QTime::currentTime().msec()); - sql=RDCreateStackTableSql(svcname_table,rda->config()); - q=new RDSqlQuery(sql); - if(!q->isActive()) { - fprintf(stderr,"SQL: %s\n",(const char *)sql); - fprintf(stderr,"SQL Error: %s\n", - (const char *)q->lastError().databaseText()); - } - delete q; if(!svc->generateLog(start_date, RDDateDecode(svc->nameTemplate(),start_date, rda->station(),rda->config(),svc->name()), diff --git a/rdlogmanager/rdlogmanager.cpp b/rdlogmanager/rdlogmanager.cpp index 06b790a8..9b0b2b58 100644 --- a/rdlogmanager/rdlogmanager.cpp +++ b/rdlogmanager/rdlogmanager.cpp @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include diff --git a/rdlogmanager/rename_item.cpp b/rdlogmanager/rename_item.cpp index 78fda104..22507e09 100644 --- a/rdlogmanager/rename_item.cpp +++ b/rdlogmanager/rename_item.cpp @@ -2,7 +2,7 @@ // // Edit a Rivendell LogManager Note // -// (C) Copyright 2002-2004,2016 Fred Gleason +// (C) Copyright 2002-2004,2016-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 @@ -24,13 +24,12 @@ #include #include -#include #include +#include #include -#include #include -#include +#include "rename_item.h" RenameItem::RenameItem(QString *text,QString table,QWidget *parent) : QDialog(parent,"",true) diff --git a/utils/rdclilogedit/operations.cpp b/utils/rdclilogedit/operations.cpp index b8eda2fe..9017f995 100644 --- a/utils/rdclilogedit/operations.cpp +++ b/utils/rdclilogedit/operations.cpp @@ -20,7 +20,6 @@ #include #include -#include #include #include diff --git a/utils/rddbmgr/check.cpp b/utils/rddbmgr/check.cpp index 7321dce9..c1cb311a 100644 --- a/utils/rddbmgr/check.cpp +++ b/utils/rddbmgr/check.cpp @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff --git a/utils/rddbmgr/revertschema.cpp b/utils/rddbmgr/revertschema.cpp index 6a9e193c..89d0bfca 100644 --- a/utils/rddbmgr/revertschema.cpp +++ b/utils/rddbmgr/revertschema.cpp @@ -38,6 +38,62 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) co // + // + // Revert 293 + // + if((cur_schema==293)&&(set_schemanext()) { + QString tablename=q->value(0).toString()+"_STACK"; + tablename.replace(" ","_"); + sql=QString("create table `")+tablename+"` ("+ + "SCHED_STACK_ID int unsigned not null primary key,"+ + "CART int unsigned not null,"+ + "ARTIST varchar(255),"+ + "SCHED_CODES varchar(255),"+ + "SCHEDULED_AT datetime default '1000-01-01 00:00:00')"+ + db_table_create_postfix; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + sql=QString("select ")+ + "SCHED_STACK_ID,"+ // 00 + "CART,"+ // 01 + "ARTIST,"+ // 02 + "SCHED_CODES,"+ // 03 + "SCHEDULED_AT "+ // 04 + "from STACK_LINES where "+ + "SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; + q1=new RDSqlQuery(sql,false); + while(q1->next()) { + sql=QString("insert into `")+tablename+"` set "+ + QString().sprintf("SCHED_STACK_ID=%u,",q1->value(0).toUInt())+ + QString().sprintf("CART=%u,",q1->value(1).toUInt())+ + "ARTIST=\""+RDEscapeString(q1->value(2).toString())+"\","+ + "SCHED_CODES=\""+RDEscapeString(q1->value(3).toString())+"\","+ + "SCHEDULED_AT=\""+RDEscapeString(q1->value(4).toDateTime(). + toString("yyyy-MM-dd hh:mm:ss"))+"\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + sql=QString("update `")+tablename+"` set "+ + "SCHEDULED_AT=\"1000-01-01 00:00:00\" where "+ + "SCHEDULED_AT=\"1752-09-14 00:00:00\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + delete q; + + if(!DropTable("STACK_LINES",err_msg)) { + return false; + } + + WriteSchemaVersion(--cur_schema); + } + // // Revert 292 // diff --git a/utils/rddbmgr/schemamap.cpp b/utils/rddbmgr/schemamap.cpp index e0ec159f..3f16ec39 100644 --- a/utils/rddbmgr/schemamap.cpp +++ b/utils/rddbmgr/schemamap.cpp @@ -132,7 +132,7 @@ void MainObject::InitializeSchemaMap() { global_version_map["2.17"]=268; global_version_map["2.18"]=272; global_version_map["2.19"]=275; - global_version_map["2.20"]=292; + global_version_map["2.20"]=293; } diff --git a/utils/rddbmgr/updateschema.cpp b/utils/rddbmgr/updateschema.cpp index c0baca72..9d3c9c04 100644 --- a/utils/rddbmgr/updateschema.cpp +++ b/utils/rddbmgr/updateschema.cpp @@ -7722,6 +7722,77 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) co WriteSchemaVersion(++cur_schema); } + if((cur_schema<293)&&(set_schema>cur_schema)) { + sql=QString("create table if not exists STACK_LINES (")+ + "ID int unsigned not null auto_increment primary key,"+ + "SCHED_STACK_ID int unsigned not null,"+ + "SERVICE_NAME char(10) not null,"+ + "CART int unsigned not null,"+ + "ARTIST varchar(255),"+ + "SCHED_CODES varchar(255),"+ + "SCHEDULED_AT datetime default '1752-09-14 00:00:00',"+ + "index SERVICE_NAME_IDX(SERVICE_NAME),"+ + "index SCHED_STACK_ID_IDX(SERVICE_NAME,SCHED_STACK_ID,SCHED_CODES))"+ + db_table_create_postfix; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + sql=QString("select NAME from SERVICES"); + q=new RDSqlQuery(sql,false); + while(q->next()) { + QString tablename=q->value(0).toString()+"_STACK"; + tablename.replace(" ","_"); + // + // 9/14/1752 is the earliest valid QDate + // + sql=QString("update `")+tablename+"` set "+ + "SCHEDULED_AT=\"1752-09-14 00:00:00\" where "+ + "SCHEDULED_AT<\"1752-09-14 00:00:00\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + sql=QString("select ")+ + "SCHED_STACK_ID,"+ // 00 + "CART,"+ // 01 + "ARTIST,"+ // 02 + "SCHED_CODES,"+ // 03 + "SCHEDULED_AT "+ // 04 + "from `"+tablename+"` "+ + "order by SCHEDULED_AT"; + q1=new RDSqlQuery(sql,false); + while(q1->next()) { + sql=QString("insert into STACK_LINES set ")+ + "SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\","+ + QString().sprintf("SCHED_STACK_ID=%u,",q1->value(0).toUInt())+ + QString().sprintf("CART=%u,",q1->value(1).toUInt())+ + "ARTIST=\""+RDEscapeString(q1->value(2).toString())+"\","+ + "SCHED_CODES=\""+RDEscapeString(q1->value(3).toString())+"\","+ + "SCHEDULED_AT=\""+RDEscapeString(q1->value(4).toDateTime(). + toString("yyyy-MM-dd hh:mm:ss"))+"\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + } + delete q1; + if(!DropTable(tablename,err_msg)) { + return false; + } + } + delete q; + + sql=QString("show tables where ")+ + "Tables_in_"+db_config->mysqlDbname()+" like \"%_STACK\""; + q=new RDSqlQuery(sql); + while(q->next()) { + if(DropTable(q->value(0).toString(),err_msg)) { + fprintf(stderr,"rddbmgr: dropping orphaned STACK table \"%s\"\n", + (const char *)q->value(0).toString()); + } + } + delete q; + + WriteSchemaVersion(++cur_schema); + } diff --git a/utils/rdmaint/rdmaint.cpp b/utils/rdmaint/rdmaint.cpp index 037a7e3c..4163e44b 100644 --- a/utils/rdmaint/rdmaint.cpp +++ b/utils/rdmaint/rdmaint.cpp @@ -220,7 +220,6 @@ void MainObject::PurgeElr() { QString sql; RDSqlQuery *q; - RDSqlQuery *q1; QDateTime dt=QDateTime(QDate::currentDate(),QTime::currentTime()); sql=QString("select ")+ @@ -319,19 +318,21 @@ void MainObject::PurgeStacks() sql="select NAME from SERVICES"; q=new RDSqlQuery(sql); while(q->next()) { - QString tablename=q->value(0).toString()+"_STACK"; - tablename.replace(" ","_"); - sql=QString().sprintf("SELECT MAX(SCHED_STACK_ID) from %s",(const char*)tablename); + sql=QString().sprintf("select MAX(SCHED_STACK_ID) from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; q1=new RDSqlQuery(sql); - if (q1->next()) - { + if (q1->next()) { stackid=q1->value(0).toUInt(); if (stackid-stacksize > 0) { - sql=QString().sprintf("DELETE from `%s` where SCHED_STACK_ID <= %d", (const char*)tablename, stackid-stacksize); - q2=new RDSqlQuery(sql); - delete q2; + sql=QString("delete from STACK_LINES where ")+ + "SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\" && "+ + QString().sprintf("SCHED_STACK_ID<=%d",stackid-stacksize); + RDSqlQuery::apply(sql); - sql=QString().sprintf("UPDATE `%s` SET SCHED_STACK_ID=SCHED_STACK_ID-%d", (const char*)tablename, stackid-stacksize); + sql=QString("update STACK_LINES set ")+ + QString().sprintf("SCHED_STACK_ID=SCHED_STACK_ID-%d where ", + stackid-stacksize)+ + "SERVICE_NAME=\""+RDEscapeString(q->value(0).toString())+"\""; q2=new RDSqlQuery(sql); delete q2; } diff --git a/utils/rdmarkerset/rdmarkerset.cpp b/utils/rdmarkerset/rdmarkerset.cpp index faecbcde..86aaeec0 100644 --- a/utils/rdmarkerset/rdmarkerset.cpp +++ b/utils/rdmarkerset/rdmarkerset.cpp @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include diff --git a/web/rdxport/logs.cpp b/web/rdxport/logs.cpp index 9d293b4b..f95a45e8 100644 --- a/web/rdxport/logs.cpp +++ b/web/rdxport/logs.cpp @@ -26,7 +26,6 @@ #include #include -#include #include #include #include