Fixed a regression that broke clock scheduler rules in rdlogmanager(1).

This commit is contained in:
Patrick Linstruth 2019-04-02 18:02:09 -07:00
parent dee0f5d168
commit 2a51c4c788

View File

@ -596,71 +596,75 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
time.addMSecs(postimport_length); time.addMSecs(postimport_length);
// if(event_artist_sep>=-1 && event_artist_sep<=50000) {
// Load all carts with requested scheduler codes into schedCL artistsep = event_artist_sep;
//
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!="") { else {
sql+=" INNER JOIN CART_SCHED_CODES AS S2 on (NUMBER=S2.CART_NUMBER AND S2.SCHED_CODE='"+RDEscapeString(event_have_code2)+"')"; artistsep = 15;
} }
sql+=" where GROUP_NAME='"+RDEscapeString(SchedGroup())+"'";
if(event_title_sep>=-1 && event_title_sep<=50000) {
titlesep = event_title_sep;
}
else {
titlesep = 100;
}
//
// Get next stack id from the stack
//
sql=QString("select ")+
"MAX(SCHED_STACK_ID) "+
"from STACK_LINES where "+
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->size()>0) { if (q->next()) {
if(event_artist_sep>=-1 && event_artist_sep<=50000) { stackid=q->value(0).toUInt();
artistsep = event_artist_sep; }
} else {
else { stackid=0;
artistsep = 15; }
} stackid++;
delete q;
if(event_title_sep>=-1 && event_title_sep<=50000) {
titlesep = event_title_sep;
}
else {
titlesep = 100;
}
int querysize=(int)q->size();
SchedCartList *schedCL;
schedCL=new SchedCartList(querysize);
QString schedcode; // No longer needed - possibly remove at a later date
for(counter=0;counter<querysize;counter++)
{
q->seek(counter);
schedCL->insertItem(q->value(0).toUInt(),0,0,q->value(1).toString(),schedcode);
}
delete q;
// //
// Get next stack id from the stack // Load all carts in requested group into schedCL
// //
sql=QString("select ")+ sql=QString("select NUMBER,ARTIST,")+
"MAX(SCHED_STACK_ID) "+ "CONCAT(GROUP_CONCAT(RPAD(SC.SCHED_CODE,11,' ') separator ''),'.') as SCHED_CODES"+
"from STACK_LINES where "+ " from CART LEFT JOIN CART_SCHED_CODES AS SC on (NUMBER=SC.CART_NUMBER)"+
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\""; " where GROUP_NAME='"+RDEscapeString(SchedGroup())+"'"+
q=new RDSqlQuery(sql); " group by NUMBER";
if (q->next()) q=new RDSqlQuery(sql);
{ int querysize=(int)q->size();
stackid=q->value(0).toUInt(); SchedCartList *schedCL;
} schedCL=new SchedCartList(querysize);
else
{
stackid=0;
}
stackid++;
delete q;
//////////////////////////////////
// //
// Add deconflicting rules here //
// //
//////////////////////////////////
for(counter=0;counter<querysize;counter++) {
q->seek(counter);
schedCL->insertItem(q->value(0).toUInt(),0,0,q->value(1).toString(),q->value(2).toString());
}
delete q;
//////////////////////////////////
// //
// Add deconflicting rules here //
// //
//////////////////////////////////
// Reduce schedCL to match requested scheduler code
if(event_have_code!=""||event_have_code2!="") {
QStringList codes;
codes << event_have_code << event_have_code2;
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
if(!schedCL->itemHasCodes(counter,codes)) {
schedCL->removeItem(counter);
counter--;
}
}
}
if(schedCL->getNumberOfItems()) {
// //
// Title separation // Title separation
// //
@ -673,9 +677,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+ "SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+
QString().sprintf("SCHED_STACK_ID >= %d",stackid-titlesep); QString().sprintf("SCHED_STACK_ID >= %d",stackid-titlesep);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while (q->next()) { while (q->next()) {
for(counter=0;counter<schedCL->getNumberOfItems();counter++) { for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
if(q->value(0).toUInt()==schedCL->getItemCartnumber(counter)) { if(q->value(0).toUInt()==schedCL->getItemCartNumber(counter)) {
schedCL->removeItem(counter); schedCL->removeItem(counter);
counter--; counter--;
} }
@ -725,7 +729,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
schedCL->restore(); schedCL->restore();
} }
// Scheduler Codes // Clock Scheduler Rules
sql=QString("select ")+ sql=QString("select ")+
"CODE,"+ // 00 "CODE,"+ // 00
"MAX_ROW,"+ // 01 "MAX_ROW,"+ // 01
@ -763,8 +767,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
q->value(0).toString()+"\n"; q->value(0).toString()+"\n";
} }
schedCL->restore(); schedCL->restore();
// do not play after // do not play after
if(q->value(3).toString()!="") { if(q->value(3).toString()!="") {
schedCL->save(); schedCL->save();
QString wstr=q->value(3).toString(); QString wstr=q->value(3).toString();
wstr+=" "; wstr+=" ";
@ -787,8 +792,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
QObject::tr("Rule broken: Do not schedule ")+ QObject::tr("Rule broken: Do not schedule ")+
q->value(0).toString()+" "+QObject::tr("after")+" "+ q->value(0).toString()+" "+QObject::tr("after")+" "+
q->value(3).toString()+"\n"; q->value(3).toString()+"\n";
schedCL->restore();
} }
schedCL->restore();
} }
// or after // or after
if (q->value(4).toString()!="") { if (q->value(4).toString()!="") {
@ -813,8 +818,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
QObject::tr("Rule broken: Do not schedule")+" "+ QObject::tr("Rule broken: Do not schedule")+" "+
q->value(0).toString()+" "+QObject::tr("after")+" "+ q->value(0).toString()+" "+QObject::tr("after")+" "+
q->value(4).toString()+"\n"; q->value(4).toString()+"\n";
schedCL->restore();
} }
schedCL->restore();
} }
// or after II // or after II
if (q->value(5).toString()!="") { if (q->value(5).toString()!="") {
@ -839,8 +844,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
QObject::tr("Rule broken: Do not schedule")+" "+ QObject::tr("Rule broken: Do not schedule")+" "+
q->value(0).toString()+" "+QObject::tr("after")+" "+ q->value(0).toString()+" "+QObject::tr("after")+" "+
q->value(5).toString()+"\n"; q->value(5).toString()+"\n";
schedCL->restore();
} }
schedCL->restore();
} }
} }
delete q; delete q;
@ -864,7 +869,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
QString().sprintf("SOURCE=%d,",source)+ QString().sprintf("SOURCE=%d,",source)+
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+ QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
QString().sprintf("GRACE_TIME=%d,",grace_time)+ QString().sprintf("GRACE_TIME=%d,",grace_time)+
QString().sprintf("CART_NUMBER=%u,",schedCL->getItemCartnumber(schedpos))+ QString().sprintf("CART_NUMBER=%u,",schedCL->getItemCartNumber(schedpos))+
QString().sprintf("TIME_TYPE=%d,",time_type)+ QString().sprintf("TIME_TYPE=%d,",time_type)+
"POST_POINT=\""+RDYesNo(post_point)+"\","+ "POST_POINT=\""+RDYesNo(post_point)+"\","+
QString().sprintf("TRANS_TYPE=%d,",trans_type)+ QString().sprintf("TRANS_TYPE=%d,",trans_type)+
@ -879,16 +884,16 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\","+ "SERVICE_NAME=\""+RDEscapeString(svcname)+"\","+
"SCHEDULED_AT=now(),"+ "SCHEDULED_AT=now(),"+
QString().sprintf("SCHED_STACK_ID=%u,",stackid)+ QString().sprintf("SCHED_STACK_ID=%u,",stackid)+
QString().sprintf("CART=%u,",schedCL->getItemCartnumber(schedpos))+ QString().sprintf("CART=%u,",schedCL->getItemCartNumber(schedpos))+
"ARTIST=\""+RDEscapeString(schedCL->getItemArtist(schedpos))+"\","+ "ARTIST=\""+RDEscapeString(schedCL->getItemArtist(schedpos))+"\","+
"SCHED_CODES=\""+RDEscapeString(schedCL->getItemSchedCodes(schedpos))+ "SCHED_CODES=\""+RDEscapeString(schedCL->getItemSchedCodes(schedpos))+
"\""; "\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
delete schedCL; delete schedCL;
} }
else else {
{
// We don't have any carts to work with // We don't have any carts to work with
*report+=time.toString("hh:mm:ss")+ *report+=time.toString("hh:mm:ss")+
" "+QObject::tr("No carts found in group")+" "+SchedGroup(); " "+QObject::tr("No carts found in group")+" "+SchedGroup();
@ -896,7 +901,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
*report+=QObject::tr(" with sched code(s): ")+HaveCode()+" "+HaveCode2(); *report+=QObject::tr(" with sched code(s): ")+HaveCode()+" "+HaveCode2();
} }
*report+="\n"; *report+="\n";
delete q;
delete schedCL;
} }
} }