diff --git a/ChangeLog b/ChangeLog index add82b3f..77a8cc2c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -18369,3 +18369,7 @@ notifications. 2019-01-11 Fred Gleason * Incremented the package version to 3.0.0alpha05. +2019-01-14 Patrick Linstruth + * Fixed regression in scheduler that caused events with two + scheduler codes to fail. + * Updated scheduler reports to indicate scheduler codes. diff --git a/lib/librd_cs.ts b/lib/librd_cs.ts index 020d825e..a018d2c3 100644 --- a/lib/librd_cs.ts +++ b/lib/librd_cs.ts @@ -553,22 +553,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -761,6 +745,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/librd_de.ts b/lib/librd_de.ts index b5cff07b..bb614933 100644 --- a/lib/librd_de.ts +++ b/lib/librd_de.ts @@ -549,22 +549,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -757,6 +741,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/librd_es.ts b/lib/librd_es.ts index 72ae9d2e..b7f30efb 100644 --- a/lib/librd_es.ts +++ b/lib/librd_es.ts @@ -549,22 +549,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -757,6 +741,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/librd_fr.ts b/lib/librd_fr.ts index 08039ed8..785830e5 100644 --- a/lib/librd_fr.ts +++ b/lib/librd_fr.ts @@ -519,22 +519,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -727,6 +711,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/librd_nb.ts b/lib/librd_nb.ts index fd44465a..6239c676 100644 --- a/lib/librd_nb.ts +++ b/lib/librd_nb.ts @@ -549,22 +549,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -757,6 +741,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/librd_nn.ts b/lib/librd_nn.ts index fd44465a..6239c676 100644 --- a/lib/librd_nn.ts +++ b/lib/librd_nn.ts @@ -549,22 +549,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -757,6 +741,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/librd_pt_BR.ts b/lib/librd_pt_BR.ts index 5e77a069..4ba63dfe 100644 --- a/lib/librd_pt_BR.ts +++ b/lib/librd_pt_BR.ts @@ -549,22 +549,6 @@ Database version mismatch, should be - - Rule broken: Must have code - - - - Rule broken: Must have second code - - - - Rule broken: Title Separation - - - - Rule broken: Artist Separation - - Rule broken: Max. in a Row/Min. Wait for @@ -757,6 +741,22 @@ MP4 + + Rule broken: Title separation + + + + with sched code(s): + + + + Rule broken: Artist separation + + + + No carts found in group + + RDAddCart diff --git a/lib/rdevent_line.cpp b/lib/rdevent_line.cpp index bd3f4498..799dd8a7 100644 --- a/lib/rdevent_line.cpp +++ b/lib/rdevent_line.cpp @@ -446,7 +446,7 @@ bool RDEventLine::save(RDConfig *config) bool RDEventLine::generateLog(QString logname,const QString &svcname, - QString *errors, unsigned artistsep, + QString *report, unsigned artistsep, QString clockname) { QString sql; @@ -579,9 +579,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, grace_time=-1; } -// Scheduler + // Scheduler - if(event_import_source == RDEventLine::Scheduler ) { + if(event_import_source == RDEventLine::Scheduler) { int titlesep; int stackid; int counter; @@ -591,18 +591,17 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, svcname_rp.replace(" ","_"); time.addMSecs(postimport_length); - - sql=QString("select ")+ - "NUMBER,"+ - "ARTIST, "+ - "SCHED_CODE "+ - "from CART "+ - "left join CART_SCHED_CODES on CART.NUMBER=CART_SCHED_CODES.CART_NUMBER "+ - "where "+ - "GROUP_NAME=\""+RDEscapeString(SchedGroup())+"\""; + + sql=QString("select NUMBER,ARTIST from CART"); + if(event_have_code!="") { + sql+=" INNER JOIN CART_SCHED_CODES AS S1 on (NUMBER=S1.CART_NUMBER AND S1.SCHED_CODE='"+RDEscapeString(event_have_code)+"')"; + } + if(event_have_code2!="") { + sql+=" INNER JOIN CART_SCHED_CODES AS S2 on (NUMBER=S2.CART_NUMBER AND S2.SCHED_CODE='"+RDEscapeString(event_have_code2)+"')"; + } + sql+=" where GROUP_NAME='"+RDEscapeString(SchedGroup())+"'"; q=new RDSqlQuery(sql); - if(q->size()>0) - { + if(q->size()>0) { if(event_title_sep>=0 && event_title_sep<=50000) { titlesep = (int)event_title_sep; @@ -616,12 +615,10 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, SchedCartList *schedCL; schedCL=new SchedCartList(querysize); - QString schedcode; + QString schedcode; // No longer needed - possibly remove at a later date for(counter=0;counterseek(counter); - schedcode=q->value(2).toString()+" "; - schedcode=schedcode.left(11); schedCL->insertItem(q->value(0).toUInt(),0,0,q->value(1).toString(),schedcode); } delete q; @@ -644,39 +641,6 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, // Add deconflicting rules here - // Reduce schedCL to match requested scheduler code - if(event_have_code!="") { - schedCL->save(); - for(counter=0;countergetNumberOfItems();counter++) { - if(!schedCL->itemHasCode(counter,event_have_code)) { - schedCL->removeItem(counter); - counter--; - } - } - if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+ - " "+QObject::tr("Rule broken: Must have code")+" "+event_have_code+"\n"; - } - schedCL->restore(); - } - - // Reduce schedCL to match second requested scheduler code - if(event_have_code2!="") { - schedCL->save(); - for(counter=0;countergetNumberOfItems();counter++) { - if(!schedCL->itemHasCode(counter,event_have_code2)) { - schedCL->removeItem(counter); - counter--; - } - } - if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+" "+ - QObject::tr("Rule broken: Must have second code")+" "+ - event_have_code2+"\n"; - } - schedCL->restore(); - } - // Title separation schedCL->save(); sql=QString("select CART from STACK_LINES where ")+ @@ -692,9 +656,14 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } } delete q; - if(schedCL->getNumberOfItems()==0) - *errors+=time.toString("hh:mm:ss")+" "+ - QObject::tr("Rule broken: Title Separation")+"\n"; + if(schedCL->getNumberOfItems()==0) { + *report+=time.toString("hh:mm:ss")+" "+ + QObject::tr("Rule broken: Title separation"); + if(!HaveCode().isEmpty()) { + *report+=QObject::tr(" with sched code(s): ")+HaveCode()+" "+HaveCode2(); + } + *report+="\n"; + } schedCL->restore(); // Artist separation @@ -713,8 +682,12 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } delete q; if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+" "+ - QObject::tr("Rule broken: Artist Separation")+"\n"; + *report+=time.toString("hh:mm:ss")+" "+ + QObject::tr("Rule broken: Artist separation"); + if(!HaveCode().isEmpty()) { + *report+=QObject::tr(" with sched code(s): ")+HaveCode()+" "+HaveCode2(); + } + *report+="\n"; } schedCL->restore(); @@ -751,7 +724,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } delete q1; if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+" "+ + *report+=time.toString("hh:mm:ss")+" "+ QObject::tr("Rule broken: Max. in a Row/Min. Wait for ")+ q->value(0).toString()+"\n"; } @@ -776,7 +749,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } delete q1; if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+" "+ + *report+=time.toString("hh:mm:ss")+" "+ QObject::tr("Rule broken: Do not schedule ")+ q->value(0).toString()+" "+QObject::tr("after")+" "+ q->value(3).toString()+"\n"; @@ -802,7 +775,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } delete q1; if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+" "+ + *report+=time.toString("hh:mm:ss")+" "+ QObject::tr("Rule broken: Do not schedule")+" "+ q->value(0).toString()+" "+QObject::tr("after")+" "+ q->value(4).toString()+"\n"; @@ -828,7 +801,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } delete q1; if(schedCL->getNumberOfItems()==0) { - *errors+=time.toString("hh:mm:ss")+" "+ + *report+=time.toString("hh:mm:ss")+" "+ QObject::tr("Rule broken: Do not schedule")+" "+ q->value(0).toString()+" "+QObject::tr("after")+" "+ q->value(5).toString()+"\n"; @@ -837,8 +810,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } } delete q; - - + // end of deconflicting rules int schedpos=rand()%schedCL->getNumberOfItems(); @@ -875,6 +847,13 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname, } else { + // We don't have any carts to work with + *report+=time.toString("hh:mm:ss")+ + " "+QObject::tr("No carts found in group")+" "+SchedGroup(); + if(!HaveCode().isEmpty()) { + *report+=QObject::tr(" with sched code(s): ")+HaveCode()+" "+HaveCode2(); + } + *report+="\n"; delete q; } } diff --git a/lib/rdlog_event.cpp b/lib/rdlog_event.cpp index 97ba31de..4b32af83 100644 --- a/lib/rdlog_event.cpp +++ b/lib/rdlog_event.cpp @@ -200,7 +200,7 @@ int RDLogEvent::validate(QString *report,const QDate &date) // Report Header // *report="Rivendell Log Exception Report\n"; - *report=QString("Generated at: ")+ + *report+=QString("Generated at: ")+ QDate::currentDate().toString("MM/dd/yyyy")+" - "+ QTime::currentTime().toString("hh:mm:ss")+"\n"; *report+=QString("Log: ")+log_name+"\n"; @@ -277,10 +277,10 @@ int RDLogEvent::validate(QString *report,const QDate &date) } *report+="\n"; if(errs==1) { - *report+=QString().sprintf("%d exception found.\n\n",errs); + *report+=QString().sprintf("%d validation exception found.\n\n",errs); } else { - *report+=QString().sprintf("%d exceptions found.\n\n",errs); + *report+=QString().sprintf("%d validation exceptions found.\n\n",errs); } return errs; } diff --git a/lib/schedcartlist.cpp b/lib/schedcartlist.cpp index 222a3527..8b81f3f7 100644 --- a/lib/schedcartlist.cpp +++ b/lib/schedcartlist.cpp @@ -39,6 +39,9 @@ SchedCartList::~SchedCartList() delete []sched_codes; } +// +// stack_schedcodes should no longer be needed. Possibly remove at a later date. P. Linstruth 01/12/2019 +// void SchedCartList::insertItem(unsigned cartnumber,int cartlength,int stack_id,QString stack_artist,QString stack_schedcodes) { cartnum[itemcounter]=cartnumber; diff --git a/rdlogmanager/generate_log.cpp b/rdlogmanager/generate_log.cpp index 22148937..ee5f5375 100644 --- a/rdlogmanager/generate_log.cpp +++ b/rdlogmanager/generate_log.cpp @@ -367,10 +367,19 @@ void GenerateLog::createData() event->load(); if((event->validate(&report,gen_date_edit->date())==0)&& unused_report.isEmpty()) { - QMessageBox::information(this,tr("No Errors"),tr("No exceptions found.")); + QMessageBox::information(this,tr("No Errors"),\ + tr("No broken rules or validation exceptions found.")); } else { - RDTextFile(report+"\n\n"+unused_report); + int errs=unused_report.count("\n"); + if(errs==1) { + unused_report+=QString().sprintf("\n%d broken rule.\n",errs); + } + else { + unused_report+=QString().sprintf("\n%d broken rules.\n",errs); + } + + RDTextFile(report+"\n"+unused_report); } delete event; diff --git a/rdlogmanager/rdlogmanager_cs.ts b/rdlogmanager/rdlogmanager_cs.ts index c898ea03..8bd064c7 100644 --- a/rdlogmanager/rdlogmanager_cs.ts +++ b/rdlogmanager/rdlogmanager_cs.ts @@ -891,7 +891,7 @@ Pokračovat? No exceptions found. - Nenalezena žádná chyba. + Nenalezena žádná chyba. already contains merged music and/or traffic data. @@ -981,6 +981,10 @@ Opětovné sloučení tato data smaže. Sloučit znovu? cannot be relinked. + + No broken rules or validation exceptions found. + + ImportListView diff --git a/rdlogmanager/rdlogmanager_de.ts b/rdlogmanager/rdlogmanager_de.ts index bd847aac..68f1f970 100644 --- a/rdlogmanager/rdlogmanager_de.ts +++ b/rdlogmanager/rdlogmanager_de.ts @@ -891,7 +891,7 @@ Fortfahren? No exceptions found. - Keine Fehler gefunden. + Keine Fehler gefunden. already contains merged music and/or traffic data. @@ -981,6 +981,10 @@ Einbinden wird diese entfernen. Fortfahren? cannot be relinked. + + No broken rules or validation exceptions found. + + ImportListView diff --git a/rdlogmanager/rdlogmanager_es.ts b/rdlogmanager/rdlogmanager_es.ts index 0acddc3b..9c27e076 100644 --- a/rdlogmanager/rdlogmanager_es.ts +++ b/rdlogmanager/rdlogmanager_es.ts @@ -845,7 +845,7 @@ Do you want to save? No exceptions found. - No se encontraron errores. + No se encontraron errores. This will also delete the @@ -983,6 +983,10 @@ removerá estos datos. ¿Remezclar? cannot be relinked. + + No broken rules or validation exceptions found. + + ImportListView diff --git a/rdlogmanager/rdlogmanager_fr.ts b/rdlogmanager/rdlogmanager_fr.ts index f54ce99e..b54e03e3 100644 --- a/rdlogmanager/rdlogmanager_fr.ts +++ b/rdlogmanager/rdlogmanager_fr.ts @@ -874,11 +874,11 @@ Do you want to save? - No exceptions found. + cannot be relinked. - cannot be relinked. + No broken rules or validation exceptions found. diff --git a/rdlogmanager/rdlogmanager_nb.ts b/rdlogmanager/rdlogmanager_nb.ts index 5abe5c64..4ed94e9e 100644 --- a/rdlogmanager/rdlogmanager_nb.ts +++ b/rdlogmanager/rdlogmanager_nb.ts @@ -904,7 +904,7 @@ Hald fram? No exceptions found. - Fann ingen unntak. + Fann ingen unntak. already contains merged music and/or traffic data. @@ -986,6 +986,10 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt? cannot be relinked. + + No broken rules or validation exceptions found. + + ImportListView diff --git a/rdlogmanager/rdlogmanager_nn.ts b/rdlogmanager/rdlogmanager_nn.ts index 5abe5c64..4ed94e9e 100644 --- a/rdlogmanager/rdlogmanager_nn.ts +++ b/rdlogmanager/rdlogmanager_nn.ts @@ -904,7 +904,7 @@ Hald fram? No exceptions found. - Fann ingen unntak. + Fann ingen unntak. already contains merged music and/or traffic data. @@ -986,6 +986,10 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt? cannot be relinked. + + No broken rules or validation exceptions found. + + ImportListView diff --git a/rdlogmanager/rdlogmanager_pt_BR.ts b/rdlogmanager/rdlogmanager_pt_BR.ts index 95d7eda8..58af0109 100644 --- a/rdlogmanager/rdlogmanager_pt_BR.ts +++ b/rdlogmanager/rdlogmanager_pt_BR.ts @@ -897,7 +897,7 @@ Continue No exceptions found. - Exceções não encontradas. Parabéns. + Exceções não encontradas. Parabéns. already contains merged music and/or traffic data. @@ -983,6 +983,10 @@ Re-agregar removerá estes dados. Re-agregar? cannot be relinked. + + No broken rules or validation exceptions found. + + ImportListView