Fixed conflict in 'ChangeLog'

This commit is contained in:
Fred Gleason 2019-04-22 16:54:02 -04:00
commit 207cd93741
4 changed files with 189 additions and 169 deletions

View File

@ -18582,3 +18582,6 @@
2019-04-22 Patrick Linstruth <patrick@deltecent.com> 2019-04-22 Patrick Linstruth <patrick@deltecent.com>
* Fixed a regression in rdimport(1) that broke the * Fixed a regression in rdimport(1) that broke the
"--set-daypart-times" argument. "--set-daypart-times" argument.
2019-04-22 Patrick Linstruth <patrick@deltecent.com>
* Fixed a regression that broke clock scheduler rules
in rdlogmanager(1).

View File

@ -596,19 +596,6 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
time.addMSecs(postimport_length); time.addMSecs(postimport_length);
//
// Load all carts with requested scheduler codes into schedCL
//
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(event_artist_sep>=-1 && event_artist_sep<=50000) { if(event_artist_sep>=-1 && event_artist_sep<=50000) {
artistsep = event_artist_sep; artistsep = event_artist_sep;
} }
@ -623,18 +610,6 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
titlesep = 100; 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 // Get next stack id from the stack
// //
@ -643,17 +618,33 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
"from STACK_LINES where "+ "from STACK_LINES where "+
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\""; "SERVICE_NAME=\""+RDEscapeString(svcname)+"\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if (q->next()) if (q->next()) {
{
stackid=q->value(0).toUInt(); stackid=q->value(0).toUInt();
} }
else else {
{
stackid=0; stackid=0;
} }
stackid++; stackid++;
delete q; delete q;
//
// Load all carts in requested group into schedCL
//
sql=QString("select NUMBER,ARTIST,")+
"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())+"'"+
" group by NUMBER";
q=new RDSqlQuery(sql);
int querysize=(int)q->size();
SchedCartList *schedCL;
schedCL=new SchedCartList(querysize);
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;
////////////////////////////////// //////////////////////////////////
// // // //
@ -661,6 +652,19 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
// // // //
////////////////////////////////// //////////////////////////////////
// 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
// //
@ -675,7 +679,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
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,6 +767,7 @@ 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();
@ -787,9 +792,9 @@ 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()!="") {
schedCL->save(); schedCL->save();
@ -813,9 +818,9 @@ 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()!="") {
schedCL->save(); schedCL->save();
@ -839,10 +844,10 @@ 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;
} }
} }

View File

@ -18,7 +18,8 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// //
#include <schedcartlist.h> #include <stdio.h>
#include "schedcartlist.h"
SchedCartList::SchedCartList(int listsize) SchedCartList::SchedCartList(int listsize)
{ {
@ -39,15 +40,15 @@ SchedCartList::~SchedCartList()
delete []sched_codes; 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) void SchedCartList::insertItem(unsigned cartnumber,int cartlength,int stack_id,QString stack_artist,QString stack_schedcodes)
{ {
cartnum[itemcounter]=cartnumber; cartnum[itemcounter]=cartnumber;
cartlen[itemcounter]=cartlength; cartlen[itemcounter]=cartlength;
stackid[itemcounter]=stack_id; stackid[itemcounter]=stack_id;
artist[itemcounter]=stack_artist.lower().replace(" ",""); artist[itemcounter]=stack_artist.lower().replace(" ","");
if(stack_schedcodes=="") {
stack_schedcodes=".";
}
sched_codes[itemcounter]=stack_schedcodes; sched_codes[itemcounter]=stack_schedcodes;
itemcounter++; itemcounter++;
} }
@ -55,8 +56,7 @@ void SchedCartList::insertItem(unsigned cartnumber,int cartlength,int stack_id,Q
void SchedCartList::removeItem(int itemnumber) void SchedCartList::removeItem(int itemnumber)
{ {
for(int i=itemnumber;i<(itemcounter-1);i++) for(int i=itemnumber;i<(itemcounter-1);i++) {
{
cartnum[i]=cartnum[i+1]; cartnum[i]=cartnum[i+1];
cartlen[i]=cartlen[i+1]; cartlen[i]=cartlen[i+1];
stackid[i]=stackid[i+1]; stackid[i]=stackid[i+1];
@ -72,10 +72,8 @@ bool SchedCartList::removeIfCode(int itemnumber,QString test_code)
test+=" "; test+=" ";
test=test.left(11); test=test.left(11);
if (sched_codes[itemnumber].find(test)!=-1) if (sched_codes[itemnumber].find(test)!=-1) {
{ for(int i=itemnumber;i<(itemcounter-1);i++) {
for(int i=itemnumber;i<(itemcounter-1);i++)
{
cartnum[i]=cartnum[i+1]; cartnum[i]=cartnum[i+1];
cartlen[i]=cartlen[i+1]; cartlen[i]=cartlen[i+1];
stackid[i]=stackid[i+1]; stackid[i]=stackid[i+1];
@ -94,13 +92,29 @@ bool SchedCartList::itemHasCode(int itemnumber,QString test_code)
test+=" "; test+=" ";
test=test.left(11); test=test.left(11);
if (sched_codes[itemnumber].find(test)!=-1) if (sched_codes[itemnumber].find(test)!=-1) {
return true; return true;
else }
else {
return false; return false;
} }
}
bool SchedCartList::itemHasCodes(int itemnumber,QStringList test_codes)
{
for (int i=0;i<test_codes.size();i++) {
QString test=test_codes.at(i);
test+=" ";
test=test.left(11);
if (sched_codes[itemnumber].find(test)!=-1) {
return true;
}
}
return false;
}
void SchedCartList::save(void) void SchedCartList::save(void)
{ {
savecartnum=new unsigned[itemcounter]; savecartnum=new unsigned[itemcounter];
@ -110,8 +124,7 @@ void SchedCartList::save(void)
save_sched_codes=new QString[itemcounter]; save_sched_codes=new QString[itemcounter];
saveitemcounter=itemcounter; saveitemcounter=itemcounter;
for(int i=0;i<saveitemcounter;i++) for(int i=0;i<saveitemcounter;i++) {
{
savecartnum[i]=cartnum[i]; savecartnum[i]=cartnum[i];
savecartlen[i]=cartlen[i]; savecartlen[i]=cartlen[i];
savestackid[i]=stackid[i]; savestackid[i]=stackid[i];
@ -123,10 +136,8 @@ void SchedCartList::save(void)
void SchedCartList::restore(void) void SchedCartList::restore(void)
{ {
if(itemcounter==0) if(itemcounter==0) {
{ for(int i=0;i<saveitemcounter;i++) {
for(int i=0;i<saveitemcounter;i++)
{
cartnum[i]=savecartnum[i]; cartnum[i]=savecartnum[i];
cartlen[i]=savecartlen[i]; cartlen[i]=savecartlen[i];
stackid[i]=savestackid[i]; stackid[i]=savestackid[i];
@ -144,7 +155,7 @@ void SchedCartList::restore(void)
unsigned SchedCartList::getItemCartnumber(int itemnumber) unsigned SchedCartList::getItemCartNumber(int itemnumber)
{ {
return cartnum[itemnumber]; return cartnum[itemnumber];
} }
@ -164,7 +175,7 @@ QString SchedCartList::getItemSchedCodes(int itemnumber)
return sched_codes[itemnumber]; return sched_codes[itemnumber];
} }
int SchedCartList::getItemCartlength(int itemnumber) int SchedCartList::getItemCartLength(int itemnumber)
{ {
return cartlen[itemnumber]; return cartlen[itemnumber];
} }
@ -175,5 +186,3 @@ int SchedCartList::getNumberOfItems(void)
return itemcounter; return itemcounter;
} }

View File

@ -22,6 +22,7 @@
#define SCHEDCARTLIST_H #define SCHEDCARTLIST_H
#include <qsqldatabase.h> #include <qsqldatabase.h>
#include <qstringlist.h>
class SchedCartList class SchedCartList
{ {
@ -32,8 +33,9 @@ class SchedCartList
void removeItem(int itemnumber); void removeItem(int itemnumber);
bool removeIfCode(int itemnumber,QString test_code); bool removeIfCode(int itemnumber,QString test_code);
bool itemHasCode(int itemnumber,QString test_code); bool itemHasCode(int itemnumber,QString test_code);
unsigned getItemCartnumber(int itemnumber); bool itemHasCodes(int itemnumber,QStringList test_codes);
int getItemCartlength(int itemnumber); unsigned getItemCartNumber(int itemnumber);
int getItemCartLength(int itemnumber);
int getItemStackid(int itemnumber); int getItemStackid(int itemnumber);
QString getItemArtist(int itemnumber); QString getItemArtist(int itemnumber);
QString getItemSchedCodes(int itemnumber); QString getItemSchedCodes(int itemnumber);