Merge branch 'deltecent-scheduler'

This commit is contained in:
Fred Gleason 2019-01-14 14:34:33 -05:00
commit 4150c62789
19 changed files with 205 additions and 186 deletions

View File

@ -18369,3 +18369,7 @@
notifications.
2019-01-11 Fred Gleason <fredg@paravelsystems.com>
* Incremented the package version to 3.0.0alpha05.
2019-01-14 Patrick Linstruth <patrick@deltecent.com>
* Fixed regression in scheduler that caused events with two
scheduler codes to fail.
* Updated scheduler reports to indicate scheduler codes.

View File

@ -553,22 +553,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -761,6 +745,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -549,22 +549,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -757,6 +741,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -549,22 +549,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -757,6 +741,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -519,22 +519,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -727,6 +711,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -549,22 +549,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -757,6 +741,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -549,22 +549,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -757,6 +741,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -549,22 +549,6 @@
<source>Database version mismatch, should be</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Must have second code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist Separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Max. in a Row/Min. Wait for </source>
<translation type="unfinished"></translation>
@ -757,6 +741,22 @@
<source>MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Title separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> with sched code(s): </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rule broken: Artist separation</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No carts found in group</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RDAddCart</name>

View File

@ -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;counter<querysize;counter++)
{
q->seek(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;counter<schedCL->getNumberOfItems();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;counter<schedCL->getNumberOfItems();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;
}
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -891,7 +891,7 @@ Pokračovat?</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished">Nenalezena žádná chyba.</translation>
<translation type="obsolete">Nenalezena žádná chyba.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -981,6 +981,10 @@ Opětovné sloučení tato data smaže. Sloučit znovu?</translation>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -891,7 +891,7 @@ Fortfahren?</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished">Keine Fehler gefunden.</translation>
<translation type="obsolete">Keine Fehler gefunden.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -981,6 +981,10 @@ Einbinden wird diese entfernen. Fortfahren?</translation>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -845,7 +845,7 @@ Do you want to save?</source>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished">No se encontraron errores.</translation>
<translation type="obsolete">No se encontraron errores.</translation>
</message>
<message>
<source>This will also delete the</source>
@ -983,6 +983,10 @@ removerá estos datos. ¿Remezclar?</translation>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -874,11 +874,11 @@ Do you want to save?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No exceptions found.</source>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@ -904,7 +904,7 @@ Hald fram?</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished">Fann ingen unntak.</translation>
<translation type="obsolete">Fann ingen unntak.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -986,6 +986,10 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt?</translation>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -904,7 +904,7 @@ Hald fram?</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished">Fann ingen unntak.</translation>
<translation type="obsolete">Fann ingen unntak.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -986,6 +986,10 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt?</translation>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -897,7 +897,7 @@ Continue</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished">Exceções não encontradas. Parabéns. </translation>
<translation type="obsolete">Exceções não encontradas. Parabéns. </translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -983,6 +983,10 @@ Re-agregar removerá estes dados. Re-agregar? </translation>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No broken rules or validation exceptions found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>