mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-07-24 08:28:08 +02:00
Fixed conflict in 'ChangeLog'
This commit is contained in:
commit
207cd93741
@ -18582,3 +18582,6 @@
|
||||
2019-04-22 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Fixed a regression in rdimport(1) that broke the
|
||||
"--set-daypart-times" argument.
|
||||
2019-04-22 Patrick Linstruth <patrick@deltecent.com>
|
||||
* Fixed a regression that broke clock scheduler rules
|
||||
in rdlogmanager(1).
|
||||
|
@ -596,71 +596,75 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
|
||||
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_artist_sep>=-1 && event_artist_sep<=50000) {
|
||||
artistsep = event_artist_sep;
|
||||
}
|
||||
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)+"')";
|
||||
else {
|
||||
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);
|
||||
if(q->size()>0) {
|
||||
if(event_artist_sep>=-1 && event_artist_sep<=50000) {
|
||||
artistsep = event_artist_sep;
|
||||
}
|
||||
else {
|
||||
artistsep = 15;
|
||||
}
|
||||
|
||||
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;
|
||||
if (q->next()) {
|
||||
stackid=q->value(0).toUInt();
|
||||
}
|
||||
else {
|
||||
stackid=0;
|
||||
}
|
||||
stackid++;
|
||||
delete q;
|
||||
|
||||
//
|
||||
// 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);
|
||||
if (q->next())
|
||||
{
|
||||
stackid=q->value(0).toUInt();
|
||||
}
|
||||
else
|
||||
{
|
||||
stackid=0;
|
||||
}
|
||||
stackid++;
|
||||
delete q;
|
||||
|
||||
|
||||
//////////////////////////////////
|
||||
// //
|
||||
// Add deconflicting rules here //
|
||||
// //
|
||||
//////////////////////////////////
|
||||
//
|
||||
// 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;
|
||||
|
||||
//////////////////////////////////
|
||||
// //
|
||||
// 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
|
||||
//
|
||||
@ -673,9 +677,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\" && "+
|
||||
QString().sprintf("SCHED_STACK_ID >= %d",stackid-titlesep);
|
||||
q=new RDSqlQuery(sql);
|
||||
while (q->next()) {
|
||||
while (q->next()) {
|
||||
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);
|
||||
counter--;
|
||||
}
|
||||
@ -725,7 +729,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
schedCL->restore();
|
||||
}
|
||||
|
||||
// Scheduler Codes
|
||||
// Clock Scheduler Rules
|
||||
sql=QString("select ")+
|
||||
"CODE,"+ // 00
|
||||
"MAX_ROW,"+ // 01
|
||||
@ -763,8 +767,9 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
q->value(0).toString()+"\n";
|
||||
}
|
||||
schedCL->restore();
|
||||
|
||||
// do not play after
|
||||
if(q->value(3).toString()!="") {
|
||||
if(q->value(3).toString()!="") {
|
||||
schedCL->save();
|
||||
QString wstr=q->value(3).toString();
|
||||
wstr+=" ";
|
||||
@ -787,8 +792,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
QObject::tr("Rule broken: Do not schedule ")+
|
||||
q->value(0).toString()+" "+QObject::tr("after")+" "+
|
||||
q->value(3).toString()+"\n";
|
||||
schedCL->restore();
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
// or after
|
||||
if (q->value(4).toString()!="") {
|
||||
@ -813,8 +818,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
QObject::tr("Rule broken: Do not schedule")+" "+
|
||||
q->value(0).toString()+" "+QObject::tr("after")+" "+
|
||||
q->value(4).toString()+"\n";
|
||||
schedCL->restore();
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
// or after II
|
||||
if (q->value(5).toString()!="") {
|
||||
@ -839,8 +844,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
QObject::tr("Rule broken: Do not schedule")+" "+
|
||||
q->value(0).toString()+" "+QObject::tr("after")+" "+
|
||||
q->value(5).toString()+"\n";
|
||||
schedCL->restore();
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
}
|
||||
delete q;
|
||||
@ -864,7 +869,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
QString().sprintf("SOURCE=%d,",source)+
|
||||
QString().sprintf("START_TIME=%d,",QTime().msecsTo(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)+
|
||||
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||
QString().sprintf("TRANS_TYPE=%d,",trans_type)+
|
||||
@ -879,16 +884,16 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
"SERVICE_NAME=\""+RDEscapeString(svcname)+"\","+
|
||||
"SCHEDULED_AT=now(),"+
|
||||
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))+"\","+
|
||||
"SCHED_CODES=\""+RDEscapeString(schedCL->getItemSchedCodes(schedpos))+
|
||||
"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
|
||||
delete schedCL;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
// We don't have any carts to work with
|
||||
*report+=time.toString("hh:mm:ss")+
|
||||
" "+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+="\n";
|
||||
delete q;
|
||||
|
||||
delete schedCL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,162 +18,171 @@
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
|
||||
#include <schedcartlist.h>
|
||||
#include <stdio.h>
|
||||
#include "schedcartlist.h"
|
||||
|
||||
SchedCartList::SchedCartList(int listsize)
|
||||
{
|
||||
cartnum=new unsigned[listsize];
|
||||
cartlen=new int[listsize];
|
||||
stackid=new int[listsize];
|
||||
artist=new QString[listsize];
|
||||
sched_codes=new QString[listsize];
|
||||
itemcounter=0;
|
||||
cartnum=new unsigned[listsize];
|
||||
cartlen=new int[listsize];
|
||||
stackid=new int[listsize];
|
||||
artist=new QString[listsize];
|
||||
sched_codes=new QString[listsize];
|
||||
itemcounter=0;
|
||||
}
|
||||
|
||||
SchedCartList::~SchedCartList()
|
||||
{
|
||||
delete []cartnum;
|
||||
delete []cartlen;
|
||||
delete []stackid;
|
||||
delete []artist;
|
||||
delete []sched_codes;
|
||||
delete []cartnum;
|
||||
delete []cartlen;
|
||||
delete []stackid;
|
||||
delete []artist;
|
||||
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;
|
||||
cartlen[itemcounter]=cartlength;
|
||||
stackid[itemcounter]=stack_id;
|
||||
artist[itemcounter]=stack_artist.lower().replace(" ","");
|
||||
sched_codes[itemcounter]=stack_schedcodes;
|
||||
itemcounter++;
|
||||
cartnum[itemcounter]=cartnumber;
|
||||
cartlen[itemcounter]=cartlength;
|
||||
stackid[itemcounter]=stack_id;
|
||||
artist[itemcounter]=stack_artist.lower().replace(" ","");
|
||||
if(stack_schedcodes=="") {
|
||||
stack_schedcodes=".";
|
||||
}
|
||||
sched_codes[itemcounter]=stack_schedcodes;
|
||||
itemcounter++;
|
||||
}
|
||||
|
||||
|
||||
void SchedCartList::removeItem(int itemnumber)
|
||||
{
|
||||
for(int i=itemnumber;i<(itemcounter-1);i++)
|
||||
{
|
||||
cartnum[i]=cartnum[i+1];
|
||||
cartlen[i]=cartlen[i+1];
|
||||
stackid[i]=stackid[i+1];
|
||||
artist[i]=artist[i+1];
|
||||
sched_codes[i]=sched_codes[i+1];
|
||||
}
|
||||
itemcounter--;
|
||||
for(int i=itemnumber;i<(itemcounter-1);i++) {
|
||||
cartnum[i]=cartnum[i+1];
|
||||
cartlen[i]=cartlen[i+1];
|
||||
stackid[i]=stackid[i+1];
|
||||
artist[i]=artist[i+1];
|
||||
sched_codes[i]=sched_codes[i+1];
|
||||
}
|
||||
itemcounter--;
|
||||
}
|
||||
|
||||
bool SchedCartList::removeIfCode(int itemnumber,QString test_code)
|
||||
{
|
||||
QString test = test_code;
|
||||
test+=" ";
|
||||
test=test.left(11);
|
||||
QString test = test_code;
|
||||
test+=" ";
|
||||
test=test.left(11);
|
||||
|
||||
if (sched_codes[itemnumber].find(test)!=-1)
|
||||
{
|
||||
for(int i=itemnumber;i<(itemcounter-1);i++)
|
||||
{
|
||||
cartnum[i]=cartnum[i+1];
|
||||
cartlen[i]=cartlen[i+1];
|
||||
stackid[i]=stackid[i+1];
|
||||
artist[i]=artist[i+1];
|
||||
sched_codes[i]=sched_codes[i+1];
|
||||
}
|
||||
itemcounter--;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
if (sched_codes[itemnumber].find(test)!=-1) {
|
||||
for(int i=itemnumber;i<(itemcounter-1);i++) {
|
||||
cartnum[i]=cartnum[i+1];
|
||||
cartlen[i]=cartlen[i+1];
|
||||
stackid[i]=stackid[i+1];
|
||||
artist[i]=artist[i+1];
|
||||
sched_codes[i]=sched_codes[i+1];
|
||||
}
|
||||
itemcounter--;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SchedCartList::itemHasCode(int itemnumber,QString test_code)
|
||||
{
|
||||
QString test=test_code;
|
||||
test+=" ";
|
||||
test=test.left(11);
|
||||
QString test=test_code;
|
||||
test+=" ";
|
||||
test=test.left(11);
|
||||
|
||||
if (sched_codes[itemnumber].find(test)!=-1)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
if (sched_codes[itemnumber].find(test)!=-1) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
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)
|
||||
{
|
||||
savecartnum=new unsigned[itemcounter];
|
||||
savecartlen=new int[itemcounter];
|
||||
savestackid=new int[itemcounter];
|
||||
saveartist=new QString[itemcounter];
|
||||
save_sched_codes=new QString[itemcounter];
|
||||
savecartnum=new unsigned[itemcounter];
|
||||
savecartlen=new int[itemcounter];
|
||||
savestackid=new int[itemcounter];
|
||||
saveartist=new QString[itemcounter];
|
||||
save_sched_codes=new QString[itemcounter];
|
||||
|
||||
saveitemcounter=itemcounter;
|
||||
for(int i=0;i<saveitemcounter;i++)
|
||||
{
|
||||
savecartnum[i]=cartnum[i];
|
||||
savecartlen[i]=cartlen[i];
|
||||
savestackid[i]=stackid[i];
|
||||
saveartist[i]=artist[i];
|
||||
save_sched_codes[i]=sched_codes[i];
|
||||
}
|
||||
saveitemcounter=itemcounter;
|
||||
for(int i=0;i<saveitemcounter;i++) {
|
||||
savecartnum[i]=cartnum[i];
|
||||
savecartlen[i]=cartlen[i];
|
||||
savestackid[i]=stackid[i];
|
||||
saveartist[i]=artist[i];
|
||||
save_sched_codes[i]=sched_codes[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SchedCartList::restore(void)
|
||||
{
|
||||
if(itemcounter==0)
|
||||
{
|
||||
for(int i=0;i<saveitemcounter;i++)
|
||||
{
|
||||
cartnum[i]=savecartnum[i];
|
||||
cartlen[i]=savecartlen[i];
|
||||
stackid[i]=savestackid[i];
|
||||
artist[i]=saveartist[i];
|
||||
sched_codes[i]=save_sched_codes[i];
|
||||
}
|
||||
itemcounter=saveitemcounter;
|
||||
}
|
||||
delete []savecartnum;
|
||||
delete []savecartlen;
|
||||
delete []savestackid;
|
||||
delete []saveartist;
|
||||
delete []save_sched_codes;
|
||||
if(itemcounter==0) {
|
||||
for(int i=0;i<saveitemcounter;i++) {
|
||||
cartnum[i]=savecartnum[i];
|
||||
cartlen[i]=savecartlen[i];
|
||||
stackid[i]=savestackid[i];
|
||||
artist[i]=saveartist[i];
|
||||
sched_codes[i]=save_sched_codes[i];
|
||||
}
|
||||
itemcounter=saveitemcounter;
|
||||
}
|
||||
delete []savecartnum;
|
||||
delete []savecartlen;
|
||||
delete []savestackid;
|
||||
delete []saveartist;
|
||||
delete []save_sched_codes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned SchedCartList::getItemCartnumber(int itemnumber)
|
||||
unsigned SchedCartList::getItemCartNumber(int itemnumber)
|
||||
{
|
||||
return cartnum[itemnumber];
|
||||
return cartnum[itemnumber];
|
||||
}
|
||||
|
||||
int SchedCartList::getItemStackid(int itemnumber)
|
||||
{
|
||||
return stackid[itemnumber];
|
||||
return stackid[itemnumber];
|
||||
}
|
||||
|
||||
QString SchedCartList::getItemArtist(int itemnumber)
|
||||
{
|
||||
return artist[itemnumber];
|
||||
return artist[itemnumber];
|
||||
}
|
||||
|
||||
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];
|
||||
}
|
||||
|
||||
|
||||
int SchedCartList::getNumberOfItems(void)
|
||||
{
|
||||
return itemcounter;
|
||||
return itemcounter;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -22,6 +22,7 @@
|
||||
#define SCHEDCARTLIST_H
|
||||
|
||||
#include <qsqldatabase.h>
|
||||
#include <qstringlist.h>
|
||||
|
||||
class SchedCartList
|
||||
{
|
||||
@ -32,8 +33,9 @@ class SchedCartList
|
||||
void removeItem(int itemnumber);
|
||||
bool removeIfCode(int itemnumber,QString test_code);
|
||||
bool itemHasCode(int itemnumber,QString test_code);
|
||||
unsigned getItemCartnumber(int itemnumber);
|
||||
int getItemCartlength(int itemnumber);
|
||||
bool itemHasCodes(int itemnumber,QStringList test_codes);
|
||||
unsigned getItemCartNumber(int itemnumber);
|
||||
int getItemCartLength(int itemnumber);
|
||||
int getItemStackid(int itemnumber);
|
||||
QString getItemArtist(int itemnumber);
|
||||
QString getItemSchedCodes(int itemnumber);
|
||||
|
Loading…
x
Reference in New Issue
Block a user