mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-07-10 17:37:47 +02:00
2018-01-08 Fred Gleason <fredg@paravelsystems.com>
* Removed implicit ASCII casts from RDEventLine.
This commit is contained in:
parent
6db1e6ca5e
commit
012fbb80a4
@ -16561,3 +16561,5 @@
|
|||||||
* Fixed bugs that broke the build under Windows.
|
* Fixed bugs that broke the build under Windows.
|
||||||
2018-01-08 Fred Gleason <fredg@paravelsystems.com>
|
2018-01-08 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Fixed a bug that broke highlighting of evergreen cuts.
|
* Fixed a bug that broke highlighting of evergreen cuts.
|
||||||
|
2018-01-08 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Removed implicit ASCII casts from RDEventLine.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Abstract a Rivendell Log Manager Event
|
// Abstract a Rivendell Log Manager Event
|
||||||
//
|
//
|
||||||
// (C) Copyright 2002-2006,2016 Fred Gleason <fredg@paravelsystems.com>
|
// (C) Copyright 2002-2006,2016-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||||
//
|
//
|
||||||
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License version 2 as
|
// it under the terms of the GNU General Public License version 2 as
|
||||||
@ -332,13 +332,28 @@ void RDEventLine::clear()
|
|||||||
|
|
||||||
bool RDEventLine::load()
|
bool RDEventLine::load()
|
||||||
{
|
{
|
||||||
QString sql=QString().sprintf("select PROPERTIES,PREPOSITION,TIME_TYPE,\
|
QString sql=QString("select ")+
|
||||||
GRACE_TIME,POST_POINT,USE_AUTOFILL,\
|
"PROPERTIES,"+ // 00
|
||||||
USE_TIMESCALE,IMPORT_SOURCE,START_SLOP,\
|
"PREPOSITION,"+ // 01
|
||||||
END_SLOP,FIRST_TRANS_TYPE,DEFAULT_TRANS_TYPE,\
|
"TIME_TYPE,"+ // 02
|
||||||
COLOR,AUTOFILL_SLOP,NESTED_EVENT,SCHED_GROUP,TITLE_SEP,HAVE_CODE,HAVE_CODE2 \
|
"GRACE_TIME,"+ // 03
|
||||||
from EVENTS where NAME=\"%s\"",
|
"POST_POINT,"+ // 04
|
||||||
(const char *)event_name);
|
"USE_AUTOFILL,"+ // 05
|
||||||
|
"USE_TIMESCALE,"+ // 06
|
||||||
|
"IMPORT_SOURCE,"+ // 07
|
||||||
|
"START_SLOP,"+ // 08
|
||||||
|
"END_SLOP,"+ // 09
|
||||||
|
"FIRST_TRANS_TYPE,"+ // 10
|
||||||
|
"DEFAULT_TRANS_TYPE,"+ // 11
|
||||||
|
"COLOR,"+ // 12
|
||||||
|
"AUTOFILL_SLOP,"+ // 13
|
||||||
|
"NESTED_EVENT,"+ // 14
|
||||||
|
"SCHED_GROUP,"+ // 15
|
||||||
|
"TITLE_SEP,"+ // 16
|
||||||
|
"HAVE_CODE,"+ // 17
|
||||||
|
"HAVE_CODE2 "+ // 18
|
||||||
|
"from EVENTS where "+
|
||||||
|
"NAME=\""+RDEscapeString(event_name)+"\"";
|
||||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||||
if(!q->first()) {
|
if(!q->first()) {
|
||||||
fprintf(stderr,"RDEventLine::load() EVENT NOT FOUND: %s\n",
|
fprintf(stderr,"RDEventLine::load() EVENT NOT FOUND: %s\n",
|
||||||
@ -384,58 +399,47 @@ bool RDEventLine::save(RDConfig *config)
|
|||||||
(const char *)event_name);
|
(const char *)event_name);
|
||||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||||
if(q->first()) {
|
if(q->first()) {
|
||||||
sql=QString().sprintf("update EVENTS set PROPERTIES=\"%s\",\
|
sql=QString("update EVENTS set ")+
|
||||||
PREPOSITION=%d,TIME_TYPE=%d,\
|
"PROPERTIES=\""+RDEscapeString(event_properties)+"\","+
|
||||||
GRACE_TIME=%d,POST_POINT=\"%s\",\
|
QString().sprintf("PREPOSITION=%d,",event_preposition)+
|
||||||
USE_AUTOFILL=\"%s\",USE_TIMESCALE=\"%s\",\
|
QString().sprintf("TIME_TYPE=%d,",event_time_type)+
|
||||||
IMPORT_SOURCE=%d,START_SLOP=%d,\
|
QString().sprintf("GRACE_TIME=%d,",event_grace_time)+
|
||||||
END_SLOP=%d,FIRST_TRANS_TYPE=%d,\
|
"POST_POINT=\""+RDYesNo(event_post_point)+"\","+
|
||||||
DEFAULT_TRANS_TYPE=%d,COLOR=\"%s\"\
|
"USE_AUTOFILL=\""+RDYesNo(event_use_autofill)+"\","+
|
||||||
AUTOFILL_SLOP=%d,NESTED_EVENT=\"%s\",\
|
"USE_TIMESCALE=\""+RDYesNo(event_use_timescale)+"\","+
|
||||||
SCHED_GROUP=\"%s\",TITLE_SEP=%d,HAVE_CODE=\"%s\",HAVE_CODE2=\"%s\" \
|
QString().sprintf("IMPORT_SOURCE=%d,",event_import_source)+
|
||||||
where NAME=\"%s\"",
|
QString().sprintf("START_SLOP=%d,",event_start_slop)+
|
||||||
(const char *)RDEscapeString(event_properties),
|
QString().sprintf("END_SLOP=%d,",event_end_slop)+
|
||||||
event_preposition,event_time_type,
|
QString().sprintf("FIRST_TRANS_TYPE=%d,",event_first_transtype)+
|
||||||
event_grace_time,
|
QString().sprintf("DEFAULT_TRANS_TYPE=%d,",event_default_transtype)+
|
||||||
(const char *)RDYesNo(event_post_point),
|
"COLOR=\""+RDEscapeString(event_color.name())+"\""+
|
||||||
(const char *)RDYesNo(event_use_autofill),
|
QString().sprintf("AUTOFILL_SLOP=%d,",event_autofill_slop)+
|
||||||
(const char *)RDYesNo(event_use_timescale),
|
"NESTED_EVENT=\""+RDEscapeString(event_nested_event)+"\","+
|
||||||
event_import_source,event_start_slop,
|
"SCHED_GROUP=\""+RDEscapeString(event_sched_group)+"\","+
|
||||||
event_end_slop,event_first_transtype,
|
QString().sprintf("TITLE_SEP=%d,",event_title_sep)+
|
||||||
event_default_transtype,
|
"HAVE_CODE=\""+RDEscapeString(event_have_code)+"\","+
|
||||||
(const char *)event_color.name(),
|
"HAVE_CODE2=\""+RDEscapeString(event_have_code2)+"\" "+
|
||||||
event_autofill_slop,
|
"where NAME=\""+RDEscapeString(event_name)+"\"";
|
||||||
(const char *)RDEscapeString(event_nested_event),
|
|
||||||
(const char *)RDEscapeString(event_sched_group),
|
|
||||||
event_title_sep,
|
|
||||||
(const char*)event_have_code,
|
|
||||||
(const char*)event_have_code2,
|
|
||||||
(const char *)RDEscapeString(event_name));
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sql=QString().sprintf("insert into EVENTS set NAME=\"%s\",\
|
sql=QString("insert into EVENTS set ")+
|
||||||
PROPERTIES=\"%s\",\
|
"NAME=\""+RDEscapeString(event_name)+"\","+
|
||||||
PREPOSITION=%d,TIME_TYPE=%d,\
|
"PROPERTIES=\""+RDEscapeString(event_properties)+"\","+
|
||||||
GRACE_TIME=%d,POST_POINT=\"%s\",\
|
QString().sprintf("PREPOSITION=%d,",event_preposition)+
|
||||||
USE_AUTOFILL=\"%s\",USE_TIMESCALE=\"%s\",\
|
QString().sprintf("TIME_TYPE=%d,",event_time_type)+
|
||||||
IMPORT_SOURCE=%d,START_SLOP=%d,\
|
QString().sprintf("GRACE_TIME=%d,",event_grace_time)+
|
||||||
END_SLOP=%d,FIRST_TRANS_TYPE=%d,\
|
"POST_POINT=\""+RDYesNo(event_post_point)+"\","+
|
||||||
DEFAULT_TRANS_TYPE=%d,COLOR=\"%s\"\
|
"USE_AUTOFILL=\""+RDYesNo(event_use_autofill)+"\","+
|
||||||
AUTOFILL_SLOP=%d,SCHED_GROUP=\"%s\" where NAME=\"%s\"",
|
"USE_TIMESCALE=\""+RDYesNo(event_use_timescale)+"\","+
|
||||||
(const char *)RDEscapeString(event_name),
|
QString().sprintf("IMPORT_SOURCE=%d,",event_import_source)+
|
||||||
(const char *)RDEscapeString(event_properties),
|
QString().sprintf("START_SLOP=%d,",event_start_slop)+
|
||||||
event_preposition,event_time_type,
|
QString().sprintf("END_SLOP=%d,",event_end_slop)+
|
||||||
event_grace_time,
|
QString().sprintf("FIRST_TRANS_TYPE=%d,",event_first_transtype)+
|
||||||
(const char *)RDYesNo(event_post_point),
|
QString().sprintf("DEFAULT_TRANS_TYPE=%d,",event_default_transtype)+
|
||||||
(const char *)RDYesNo(event_use_autofill),
|
"COLOR=\""+RDEscapeString(event_color.name())+"\","+
|
||||||
(const char *)RDYesNo(event_use_timescale),
|
QString().sprintf("AUTOFILL_SLOP=%d,",event_autofill_slop)+
|
||||||
event_import_source,event_start_slop,
|
"SCHED_GROUP=\""+RDEscapeString(event_sched_group)+"\" where "+
|
||||||
event_end_slop,event_first_transtype,
|
"NAME=\""+RDEscapeString(event_name)+"\"";
|
||||||
event_default_transtype,
|
|
||||||
(const char *)event_color.name(),
|
|
||||||
event_autofill_slop,
|
|
||||||
(const char *)RDEscapeString(event_sched_group),
|
|
||||||
(const char *)RDEscapeString(event_name));
|
|
||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
@ -510,21 +514,19 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
//
|
//
|
||||||
for(int i=0;i<event_preimport_log->size();i++) {
|
for(int i=0;i<event_preimport_log->size();i++) {
|
||||||
if((logline=event_preimport_log->logLine(i))!=NULL) {
|
if((logline=event_preimport_log->logLine(i))!=NULL) {
|
||||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d,\
|
QString().sprintf("ID=%d,",count)+
|
||||||
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\",\
|
QString().sprintf("COUNT=%d,",count)+
|
||||||
TRANS_TYPE=%d,COMMENT=\"%s\",EVENT_LENGTH=%d",
|
QString().sprintf("TYPE=%d,",logline->type())+
|
||||||
(const char *)logname,count,count,
|
QString().sprintf("SOURCE=%d,",RDLogLine::Template)+
|
||||||
logline->type(),
|
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||||
RDLogLine::Template,
|
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||||
QTime().msecsTo(time),
|
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
|
||||||
grace_time,logline->cartNumber(),
|
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||||
time_type,
|
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||||
(const char *)RDYesNo(post_point),
|
QString().sprintf("TRANS_TYPE=%d,",logline->transType())+
|
||||||
logline->transType(),
|
"COMMENT=\""+RDEscapeString(logline->markerComment())+"\","+
|
||||||
(const char *)
|
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||||
RDEscapeString(logline->markerComment()),
|
|
||||||
event_length);
|
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
delete q;
|
delete q;
|
||||||
count++;
|
count++;
|
||||||
@ -562,26 +564,25 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
}
|
}
|
||||||
QTime end_start_time=event_start_time.addMSecs(event_length);
|
QTime end_start_time=event_start_time.addMSecs(event_length);
|
||||||
|
|
||||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d,\
|
QString().sprintf("ID=%d,",count)+
|
||||||
TIME_TYPE=%d,POST_POINT=\"%s\",TRANS_TYPE=%d,\
|
QString().sprintf("COUNT=%d,",count)+
|
||||||
LINK_EVENT_NAME=\"%s\",LINK_START_TIME=%d,\
|
QString().sprintf("TYPE=%d,",link_type)+
|
||||||
LINK_LENGTH=%d,LINK_ID=%d,LINK_START_SLOP=%d,\
|
QString().sprintf("SOURCE=%d,",RDLogLine::Template)+
|
||||||
LINK_END_SLOP=%d,EVENT_LENGTH=%d",
|
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||||
(const char *)logname,count,count,
|
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||||
link_type,RDLogLine::Template,
|
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||||
QTime().msecsTo(time),
|
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||||
grace_time,
|
QString().sprintf("TRANS_TYPE=%d,",trans_type)+
|
||||||
time_type,
|
"LINK_EVENT_NAME=\""+RDEscapeString(event_name)+"\","+
|
||||||
(const char *)RDYesNo(post_point),
|
QString().sprintf("LINK_START_TIME=%d,",
|
||||||
trans_type,
|
QTime().msecsTo(event_start_time))+
|
||||||
(const char *)RDEscapeString(event_name),
|
QString().sprintf("LINK_LENGTH=%d,",
|
||||||
QTime().msecsTo(event_start_time),
|
event_start_time.msecsTo(end_start_time))+
|
||||||
event_start_time.msecsTo(end_start_time),
|
QString().sprintf("LINK_ID=%d,",link_id)+
|
||||||
link_id,
|
QString().sprintf("LINK_START_SLOP=%d,",event_start_slop)+
|
||||||
event_start_slop,
|
QString().sprintf("LINK_END_SLOP=%d,",event_end_slop)+
|
||||||
event_end_slop,
|
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||||
event_length);
|
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
delete q;
|
delete q;
|
||||||
count++;
|
count++;
|
||||||
@ -605,8 +606,12 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
|
|
||||||
time.addMSecs(postimport_length);
|
time.addMSecs(postimport_length);
|
||||||
|
|
||||||
sql=QString().sprintf("select NUMBER,ARTIST,SCHED_CODES from CART where GROUP_NAME='%s'",(const char *)SchedGroup());
|
sql=QString("select ")+
|
||||||
|
"NUMBER,"+
|
||||||
|
"ARTIST,"+
|
||||||
|
"SCHED_CODES "+
|
||||||
|
"from CART where "+
|
||||||
|
"GROUP_NAME=\""+RDEscapeString(SchedGroup())+"\"";
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
if(q->size()>0)
|
if(q->size()>0)
|
||||||
{
|
{
|
||||||
@ -630,7 +635,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
|
|
||||||
sql=QString().sprintf("SELECT SCHED_STACK_ID from %s_STACK order by SCHED_STACK_ID",(const char*)svcname_rp);
|
sql=QString("select SCHED_STACK_ID from `")+svcname_rp+"_STACK` "+
|
||||||
|
"order by SCHED_STACK_ID";
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
if (q->last())
|
if (q->last())
|
||||||
{
|
{
|
||||||
@ -647,21 +653,18 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
// Add deconflicting rules here
|
// Add deconflicting rules here
|
||||||
// Title separation
|
// Title separation
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
sql=QString().sprintf("select CART from %s_STACK \
|
sql=QString("select CART from `")+svcname_rp+"_STACK` where "+
|
||||||
where SCHED_STACK_ID >= %d",(const char*)svcname_rp,(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--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0)
|
||||||
*errors+=QString().sprintf("%s Rule broken: Title Separation\n",(const char *)time.toString("hh:mm:ss"));
|
*errors+=QString().sprintf("%s Rule broken: Title Separation\n",(const char *)time.toString("hh:mm:ss"));
|
||||||
@ -669,66 +672,57 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
|
|
||||||
// Artist separation
|
// Artist separation
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
sql=QString().sprintf("select ARTIST from %s_STACK \
|
sql=QString("select ARTIST from `")+svcname_rp+"_STACK` where "+
|
||||||
where SCHED_STACK_ID >= %d",(const char*)svcname_rp,(stackid-artistsep));
|
QString().sprintf("SCHED_STACK_ID >= %d",stackid-artistsep);
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
|
while (q->next()) {
|
||||||
while (q->next())
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
{
|
if(q->value(0).toString()==schedCL->getItemArtist(counter)) {
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
|
||||||
{
|
|
||||||
if(q->value(0).toString()==schedCL->getItemArtist(counter))
|
|
||||||
{
|
|
||||||
schedCL->removeItem(counter);
|
schedCL->removeItem(counter);
|
||||||
counter--;
|
counter--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete q;
|
delete q;
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Artist Separation\n",(const char *)time.toString("hh:mm:ss"));
|
*errors+=QString().sprintf("%s Rule broken: Artist Separation\n",(const char *)time.toString("hh:mm:ss"));
|
||||||
|
}
|
||||||
schedCL->restore();
|
schedCL->restore();
|
||||||
|
|
||||||
// Must have scheduler code
|
// Must have scheduler code
|
||||||
if(event_have_code!="")
|
if(event_have_code!="") {
|
||||||
{
|
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
{
|
if(!schedCL->itemHasCode(counter,event_have_code)) {
|
||||||
if(!schedCL->itemHasCode(counter,event_have_code))
|
|
||||||
{
|
|
||||||
schedCL->removeItem(counter);
|
schedCL->removeItem(counter);
|
||||||
counter--;
|
counter--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Must have code %s\n",(const char *)time.toString("hh:mm:ss"),(const char*)event_have_code);
|
*errors+=QString().sprintf("%s Rule broken: Must have code %s\n",(const char *)time.toString("hh:mm:ss"),(const char*)event_have_code);
|
||||||
|
}
|
||||||
schedCL->restore();
|
schedCL->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must have second scheduler code
|
// Must have second scheduler code
|
||||||
if(event_have_code2!="")
|
if(event_have_code2!="") {
|
||||||
{
|
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
{
|
if(!schedCL->itemHasCode(counter,event_have_code2)) {
|
||||||
if(!schedCL->itemHasCode(counter,event_have_code2))
|
|
||||||
{
|
|
||||||
schedCL->removeItem(counter);
|
schedCL->removeItem(counter);
|
||||||
counter--;
|
counter--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Must have second code %s\n",(const char *)time.toString("hh:mm:ss"),(const char*)event_have_code2);
|
*errors+=QString().sprintf("%s Rule broken: Must have second code %s\n",(const char *)time.toString("hh:mm:ss"),(const char*)event_have_code2);
|
||||||
|
}
|
||||||
schedCL->restore();
|
schedCL->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scheduler Codes
|
// Scheduler Codes
|
||||||
sql=QString().sprintf("select CODE,MAX_ROW,MIN_WAIT,NOT_AFTER, OR_AFTER,OR_AFTER_II from %s_RULES",(const char *)clockname);
|
sql=QString().sprintf("select CODE,MAX_ROW,MIN_WAIT,NOT_AFTER, OR_AFTER,OR_AFTER_II from %s_RULES",(const char *)clockname);
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
while (q->next())
|
while (q->next()) {
|
||||||
{
|
|
||||||
// max in a row, min wait
|
// max in a row, min wait
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
int range=q->value(1).toInt()+q->value(2).toInt();
|
int range=q->value(1).toInt()+q->value(2).toInt();
|
||||||
@ -736,20 +730,24 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
QString wstr=q->value(0).toString();
|
QString wstr=q->value(0).toString();
|
||||||
wstr+=" ";
|
wstr+=" ";
|
||||||
wstr=wstr.left(11);
|
wstr=wstr.left(11);
|
||||||
sql=QString().sprintf("select CART from %s_STACK \
|
sql=QString("select CART from `")+svcname_rp+"_STACK` where "+
|
||||||
where SCHED_STACK_ID > %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-range),(const char *)wstr);
|
QString().sprintf("SCHED_STACK_ID > %d and ",stackid-range)+
|
||||||
|
"SCHED_CODES like \"%%"+RDEscapeString(wstr)+"%%\"";
|
||||||
q1=new RDSqlQuery(sql);
|
q1=new RDSqlQuery(sql);
|
||||||
if (q1->size()>=allowed || allowed==0)
|
if(q1->size()>=allowed || allowed==0) {
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||||
counter--;
|
counter--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
delete q1;
|
delete q1;
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Max. in a Row/Min. Wait for %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString());
|
*errors+=QString().sprintf("%s Rule broken: Max. in a Row/Min. Wait for %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString());
|
||||||
|
}
|
||||||
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+=" ";
|
||||||
@ -757,18 +755,21 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
sql=QString().sprintf("select CART from %s_STACK \
|
sql=QString().sprintf("select CART from %s_STACK \
|
||||||
where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr);
|
where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr);
|
||||||
q1=new RDSqlQuery(sql);
|
q1=new RDSqlQuery(sql);
|
||||||
if (q1->size()>0)
|
if(q1->size()>0) {
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||||
counter--;
|
counter--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
delete q1;
|
delete q1;
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Do not schedule %s after %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString(),(const char *)q->value(3).toString());
|
*errors+=QString().sprintf("%s Rule broken: Do not schedule %s after %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString(),(const char *)q->value(3).toString());
|
||||||
|
}
|
||||||
schedCL->restore();
|
schedCL->restore();
|
||||||
}
|
}
|
||||||
// or after
|
// or after
|
||||||
if (q->value(4).toString()!="")
|
if (q->value(4).toString()!="") {
|
||||||
{
|
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
QString wstr=q->value(4).toString();
|
QString wstr=q->value(4).toString();
|
||||||
wstr+=" ";
|
wstr+=" ";
|
||||||
@ -776,18 +777,21 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
sql=QString().sprintf("select CART from %s_STACK \
|
sql=QString().sprintf("select CART from %s_STACK \
|
||||||
where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr);
|
where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr);
|
||||||
q1=new RDSqlQuery(sql);
|
q1=new RDSqlQuery(sql);
|
||||||
if (q1->size()>0)
|
if(q1->size()>0) {
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||||
counter--;
|
counter--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
delete q1;
|
delete q1;
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Do not schedule %s after %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString(),(const char *)q->value(4).toString());
|
*errors+=QString().sprintf("%s Rule broken: Do not schedule %s after %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString(),(const char *)q->value(4).toString());
|
||||||
|
}
|
||||||
schedCL->restore();
|
schedCL->restore();
|
||||||
}
|
}
|
||||||
// or after II
|
// or after II
|
||||||
if (q->value(5).toString()!="")
|
if (q->value(5).toString()!="") {
|
||||||
{
|
|
||||||
schedCL->save();
|
schedCL->save();
|
||||||
QString wstr=q->value(5).toString();
|
QString wstr=q->value(5).toString();
|
||||||
wstr+=" ";
|
wstr+=" ";
|
||||||
@ -795,13 +799,17 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
sql=QString().sprintf("select CART from %s_STACK \
|
sql=QString().sprintf("select CART from %s_STACK \
|
||||||
where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr);
|
where SCHED_STACK_ID = %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-1),(const char *)wstr);
|
||||||
q1=new RDSqlQuery(sql);
|
q1=new RDSqlQuery(sql);
|
||||||
if (q1->size()>0)
|
if(q1->size()>0) {
|
||||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||||
counter--;
|
counter--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
delete q1;
|
delete q1;
|
||||||
if(schedCL->getNumberOfItems()==0)
|
if(schedCL->getNumberOfItems()==0) {
|
||||||
*errors+=QString().sprintf("%s Rule broken: Do not schedule %s after %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString(),(const char *)q->value(5).toString());
|
*errors+=QString().sprintf("%s Rule broken: Do not schedule %s after %s\n",(const char *)time.toString("hh:mm:ss"),(const char *)q->value(0).toString(),(const char *)q->value(5).toString());
|
||||||
|
}
|
||||||
schedCL->restore();
|
schedCL->restore();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -810,34 +818,31 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
|
|
||||||
// end of deconflicting rules
|
// end of deconflicting rules
|
||||||
|
|
||||||
int schedpos = rand()%schedCL->getNumberOfItems();
|
int schedpos=rand()%schedCL->getNumberOfItems();
|
||||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d, \
|
QString().sprintf("ID=%d,",count)+
|
||||||
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\", \
|
QString().sprintf("COUNT=%d,",count)+
|
||||||
TRANS_TYPE=%d,EXT_START_TIME=%s,\
|
QString().sprintf("TYPE=%d,",RDLogLine::Cart)+
|
||||||
EVENT_LENGTH=%d",
|
QString().sprintf("SOURCE=%d,",source)+
|
||||||
(const char *)logname,count,count,
|
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||||
RDLogLine::Cart,source,
|
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||||
QTime().msecsTo(time),
|
QString().sprintf("CART_NUMBER=%u,",schedCL->getItemCartnumber(schedpos))+
|
||||||
grace_time,
|
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||||
schedCL->getItemCartnumber(schedpos),
|
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||||
time_type,
|
QString().sprintf("TRANS_TYPE=%d,",trans_type)+
|
||||||
(const char *)RDYesNo(post_point),
|
"EXT_START_TIME="+RDCheckDateTime(time,"hh:mm:ss")+","+
|
||||||
trans_type,
|
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||||
(const char *)RDCheckDateTime(time,"hh:mm:ss"),
|
|
||||||
event_length);
|
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
delete q;
|
delete q;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
|
sql=QString("insert into `")+svcname_rp+"_STACK` set "+
|
||||||
|
QString().sprintf("SCHED_STACK_ID=%u,",stackid)+
|
||||||
sql=QString().sprintf("insert into `%s_STACK` set SCHED_STACK_ID=%u,CART=%u,ARTIST=\"%s\",SCHED_CODES=\"%s\"",(const char*)svcname_rp,
|
QString().sprintf("CART=%u,",schedCL->getItemCartnumber(schedpos))+
|
||||||
stackid,schedCL->getItemCartnumber(schedpos),
|
"ARTIST=\""+RDEscapeString(schedCL->getItemArtist(schedpos))+"\","+
|
||||||
(const char *)RDEscapeString(schedCL->getItemArtist(schedpos)),(const char *)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;
|
||||||
@ -847,28 +852,25 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
|||||||
delete q;
|
delete q;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Post-Import Carts
|
// Post-Import Carts
|
||||||
//
|
//
|
||||||
for(int i=0;i<event_postimport_log->size();i++) {
|
for(int i=0;i<event_postimport_log->size();i++) {
|
||||||
if((logline=event_postimport_log->logLine(i))!=NULL) {
|
if((logline=event_postimport_log->logLine(i))!=NULL) {
|
||||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d,\
|
QString().sprintf("ID=%d,",count)+
|
||||||
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\",\
|
QString().sprintf("COUNT=%d,",count)+
|
||||||
TRANS_TYPE=%d,COMMENT=\"%s\",EVENT_LENGTH=%d",
|
QString().sprintf("TYPE=%d,",logline->type())+
|
||||||
(const char *)logname,count,count,
|
QString().sprintf("SOURCE=%d,",RDLogLine::Template)+
|
||||||
logline->type(),
|
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||||
RDLogLine::Template,
|
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||||
QTime().msecsTo(time),
|
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
|
||||||
grace_time,logline->cartNumber(),
|
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||||
time_type,
|
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||||
(const char *)RDYesNo(post_point),
|
QString().sprintf("TRANS_TYPE=%d,",logline->transType())+
|
||||||
logline->transType(),
|
"COMMENT=\""+RDEscapeString(logline->markerComment())+"\","+
|
||||||
(const char *)
|
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||||
RDEscapeString(logline->markerComment()),
|
|
||||||
event_length);
|
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
delete q;
|
delete q;
|
||||||
count++;
|
count++;
|
||||||
@ -1110,12 +1112,12 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
|
|||||||
//
|
//
|
||||||
// Mark Events as Used
|
// Mark Events as Used
|
||||||
//
|
//
|
||||||
sql=QString().sprintf("update `%s` set EVENT_USED=\"Y\"\
|
sql=QString("update `")+import_table+"` set "+
|
||||||
where (START_HOUR=%d)&&(START_SECS>=%d)&&\
|
"EVENT_USED=\"Y\" where "+
|
||||||
(START_SECS<=%d)&&(EVENT_USED=\"N\")",
|
QString().sprintf("(START_HOUR=%d)&&",start_start_hour)+
|
||||||
(const char *)import_table,
|
QString().sprintf("(START_SECS>=%d)&&",start_start_secs/1000)+
|
||||||
start_start_hour,start_start_secs/1000,
|
QString().sprintf("(START_SECS<=%d)&&",end_start_secs/1000)+
|
||||||
end_start_secs/1000);
|
"(EVENT_USED=\"N\")";
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
delete q;
|
delete q;
|
||||||
|
|
||||||
@ -1126,12 +1128,12 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
|
|||||||
addMSecs(link_logline->linkLength());
|
addMSecs(link_logline->linkLength());
|
||||||
if(event_use_autofill&&(event_start_time<=time)) {
|
if(event_use_autofill&&(event_start_time<=time)) {
|
||||||
QTime fill_start_time=time;
|
QTime fill_start_time=time;
|
||||||
sql=QString().
|
sql=QString("select AUTOFILLS.CART_NUMBER,CART.FORCED_LENGTH from ")+
|
||||||
sprintf("select AUTOFILLS.CART_NUMBER,CART.FORCED_LENGTH from\
|
"AUTOFILLS left join CART on AUTOFILLS.CART_NUMBER=CART.NUMBER where "+
|
||||||
AUTOFILLS left join CART on AUTOFILLS.CART_NUMBER=CART.NUMBER\
|
"(AUTOFILLS.SERVICE=\""+RDEscapeString(svcname)+"\")&&"+
|
||||||
where (AUTOFILLS.SERVICE=\"%s\")&&(CART.FORCED_LENGTH<=%d)&&\
|
QString().sprintf("(CART.FORCED_LENGTH<=%d)&&",time.msecsTo(end_time))+
|
||||||
(CART.FORCED_LENGTH>0) order by CART.FORCED_LENGTH desc",
|
"(CART.FORCED_LENGTH>0) "+
|
||||||
(const char *)svcname,time.msecsTo(end_time));
|
"order by CART.FORCED_LENGTH desc";
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
bool fit=true;
|
bool fit=true;
|
||||||
while(fit) {
|
while(fit) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user