mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-27 14:41:45 +02:00
Fixed a regression that broke clock scheduler rules in rdlogmanager(1).
This commit is contained in:
parent
dee0f5d168
commit
2a51c4c788
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user