From 828d761f9c0c5036a669ee743d634f91bd35bb56 Mon Sep 17 00:00:00 2001 From: Patrick Linstruth Date: Tue, 22 Dec 2020 12:07:16 -0800 Subject: [PATCH] Fixed title separation in rdlogmanager(1) scheduler. Added a 'STACK_LINES.TITLE' field to the database. Incremented the database version to 347. --- ChangeLog | 4 ++++ docs/tables/stack_lines.txt | 1 + lib/dbversion.h | 2 +- lib/rdevent_line.cpp | 15 +++++++------ lib/rdschedcartlist.cpp | 12 +++++++++++ lib/rdschedcartlist.h | 4 ++++ utils/rddbmgr/rddbmgr.h | 1 + utils/rddbmgr/revertschema.cpp | 9 ++++++++ utils/rddbmgr/schemamap.cpp | 2 +- utils/rddbmgr/updateschema.cpp | 39 ++++++++++++++++++++++++++++++++++ 10 files changed, 80 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 47c885ae..03c828d7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20686,3 +20686,7 @@ * Incremented the package version to 3.4.1int9. 2020-12-12 Fred Gleason * Incremented the package version to 3.5.0. +2020-12-22 Patrick Linstruth + * Fixed title separation in rdlogmanager(1) scheduler. + * Added a 'STACK_LINES.TITLE' field to the database. + * Incremented the database version to 347. diff --git a/docs/tables/stack_lines.txt b/docs/tables/stack_lines.txt index 630a174f..3ac16825 100644 --- a/docs/tables/stack_lines.txt +++ b/docs/tables/stack_lines.txt @@ -9,4 +9,5 @@ SCHED_STACK_ID int(10) unsigned SERVICE_NAME varchar(10) From SERVICES.NAME CART int(10) unsigned From CART.NUMBER ARTIST varchar(191) From CART.ARTIST +TITLE varchar(191) From CART.TITLE SCHEDULED_AT datetime diff --git a/lib/dbversion.h b/lib/dbversion.h index 62086b3f..b4cd10d0 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 346 +#define RD_VERSION_DATABASE 347 #endif // DBVERSION_H diff --git a/lib/rdevent_line.cpp b/lib/rdevent_line.cpp index 155c6be4..f6e2cf6f 100644 --- a/lib/rdevent_line.cpp +++ b/lib/rdevent_line.cpp @@ -591,7 +591,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, // // Load all carts in requested group into schedCL // - sql=QString("select NUMBER,ARTIST,")+ + sql=QString("select NUMBER,ARTIST,TITLE,")+ "CONCAT(GROUP_CONCAT(RPAD(SC.SCHED_CODE,11,' ') separator ''),'.') as SCHED_CODES"+ " from CART LEFT JOIN CART_SCHED_CODES AS SC on (NUMBER=SC.CART_NUMBER)"+ " where GROUP_NAME='"+RDEscapeString(schedGroup())+"'"+ @@ -599,12 +599,12 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, RDSchedCartList *schedCL=new RDSchedCartList(); q=new RDSqlQuery(sql); while(q->next()) { - QStringList codes=q->value(2).toString().split(" ",QString::SkipEmptyParts); + QStringList codes=q->value(3).toString().split(" ",QString::SkipEmptyParts); if((codes.size()>0)&&(codes.last()==".")) { codes.removeLast(); } schedCL-> - insertItem(q->value(0).toUInt(),0,0,q->value(1).toString(),codes); + insertItem(q->value(0).toUInt(),0,0,q->value(1).toString(),q->value(2).toString(),codes); } delete q; @@ -636,17 +636,17 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, // Title separation // // Iterate through schedCL and remove carts from schedCL that - // match cart number on the stack essentially removing matched titles. + // match title on the stack. // if(titlesep>=0) { schedCL->save(); - sql=QString("select CART from STACK_LINES where ")+ + sql=QString("select TITLE 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)) { + if(q->value(0).toString()==schedCL->getItemTitle(counter)) { schedCL->removeItem(counter); counter--; } @@ -859,7 +859,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, "SCHEDULED_AT=now(),"+ QString().sprintf("SCHED_STACK_ID=%u,",stackid)+ QString().sprintf("CART=%u,",schedCL->getItemCartNumber(schedpos))+ - "ARTIST=\""+RDEscapeString(schedCL->getItemArtist(schedpos))+"\""; + "ARTIST=\""+RDEscapeString(schedCL->getItemArtist(schedpos))+"\","+ + "TITLE=\""+RDEscapeString(schedCL->getItemTitle(schedpos))+"\""; unsigned line_id=RDSqlQuery::run(sql).toUInt(); QStringList codes=schedCL->getItemSchedCodes(schedpos); for(int i=0;i list_stackid; QList list_savestackid; QStringList list_artist; + QStringList list_title; QStringList list_saveartist; + QStringList list_savetitle; QList list_schedcodes; QList list_saveschedcodes; }; diff --git a/utils/rddbmgr/rddbmgr.h b/utils/rddbmgr/rddbmgr.h index ef55cbe9..3620dd29 100644 --- a/utils/rddbmgr/rddbmgr.h +++ b/utils/rddbmgr/rddbmgr.h @@ -105,6 +105,7 @@ class MainObject : public QObject bool ConvertTimeField186(const QString &table,const QString &field, QString *err_msg) const; bool ConvertArtistSep307(QString *err_msg) const; + bool StackLineTitles347(QString *err_msg) const; // // revertschema.cpp diff --git a/utils/rddbmgr/revertschema.cpp b/utils/rddbmgr/revertschema.cpp index 5cf4c0bf..0d825909 100644 --- a/utils/rddbmgr/revertschema.cpp +++ b/utils/rddbmgr/revertschema.cpp @@ -40,6 +40,15 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) // NEW SCHEMA REVERSIONS GO HERE... + // + // Revert 347 + // + if((cur_schema==347)&&(set_schemacur_schema)) { + sql=QString("alter table STACK_LINES add column ")+ + "TITLE varchar(191) not null after ARTIST"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + if (!StackLineTitles347(err_msg)) { + return false; + } + + WriteSchemaVersion(++cur_schema); + } // NEW SCHEMA UPDATES GO HERE... @@ -10714,3 +10727,29 @@ bool MainObject::ConvertArtistSep307(QString *err_msg) const return true; } + +bool MainObject::StackLineTitles347(QString *err_msg) const +{ + QString sql; + RDSqlQuery *q; + + // + // Add titles to STACK_LINES + // + q=new RDSqlQuery("select NUMBER,TITLE from CART",false); + while(q->next()) { + if(!q->value(1).isNull()) { + sql=QString("update STACK_LINES set ")+ + "TITLE=\""+RDEscapeString(q->value(1).toString().lower().replace(" ",""))+"\" "+ + "where CART=\""+RDEscapeString(q->value(0).toString())+"\""; + if(!RDSqlQuery::apply(sql,err_msg)) { + delete q; + return false; + } + } + } + delete q; + + return true; +} +