mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-24 16:41:40 +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.
|
||||
2018-01-08 Fred Gleason <fredg@paravelsystems.com>
|
||||
* 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
|
||||
//
|
||||
// (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
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -332,13 +332,28 @@ void RDEventLine::clear()
|
||||
|
||||
bool RDEventLine::load()
|
||||
{
|
||||
QString sql=QString().sprintf("select PROPERTIES,PREPOSITION,TIME_TYPE,\
|
||||
GRACE_TIME,POST_POINT,USE_AUTOFILL,\
|
||||
USE_TIMESCALE,IMPORT_SOURCE,START_SLOP,\
|
||||
END_SLOP,FIRST_TRANS_TYPE,DEFAULT_TRANS_TYPE,\
|
||||
COLOR,AUTOFILL_SLOP,NESTED_EVENT,SCHED_GROUP,TITLE_SEP,HAVE_CODE,HAVE_CODE2 \
|
||||
from EVENTS where NAME=\"%s\"",
|
||||
(const char *)event_name);
|
||||
QString sql=QString("select ")+
|
||||
"PROPERTIES,"+ // 00
|
||||
"PREPOSITION,"+ // 01
|
||||
"TIME_TYPE,"+ // 02
|
||||
"GRACE_TIME,"+ // 03
|
||||
"POST_POINT,"+ // 04
|
||||
"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);
|
||||
if(!q->first()) {
|
||||
fprintf(stderr,"RDEventLine::load() EVENT NOT FOUND: %s\n",
|
||||
@ -384,58 +399,47 @@ bool RDEventLine::save(RDConfig *config)
|
||||
(const char *)event_name);
|
||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
sql=QString().sprintf("update EVENTS set PROPERTIES=\"%s\",\
|
||||
PREPOSITION=%d,TIME_TYPE=%d,\
|
||||
GRACE_TIME=%d,POST_POINT=\"%s\",\
|
||||
USE_AUTOFILL=\"%s\",USE_TIMESCALE=\"%s\",\
|
||||
IMPORT_SOURCE=%d,START_SLOP=%d,\
|
||||
END_SLOP=%d,FIRST_TRANS_TYPE=%d,\
|
||||
DEFAULT_TRANS_TYPE=%d,COLOR=\"%s\"\
|
||||
AUTOFILL_SLOP=%d,NESTED_EVENT=\"%s\",\
|
||||
SCHED_GROUP=\"%s\",TITLE_SEP=%d,HAVE_CODE=\"%s\",HAVE_CODE2=\"%s\" \
|
||||
where NAME=\"%s\"",
|
||||
(const char *)RDEscapeString(event_properties),
|
||||
event_preposition,event_time_type,
|
||||
event_grace_time,
|
||||
(const char *)RDYesNo(event_post_point),
|
||||
(const char *)RDYesNo(event_use_autofill),
|
||||
(const char *)RDYesNo(event_use_timescale),
|
||||
event_import_source,event_start_slop,
|
||||
event_end_slop,event_first_transtype,
|
||||
event_default_transtype,
|
||||
(const char *)event_color.name(),
|
||||
event_autofill_slop,
|
||||
(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));
|
||||
sql=QString("update EVENTS set ")+
|
||||
"PROPERTIES=\""+RDEscapeString(event_properties)+"\","+
|
||||
QString().sprintf("PREPOSITION=%d,",event_preposition)+
|
||||
QString().sprintf("TIME_TYPE=%d,",event_time_type)+
|
||||
QString().sprintf("GRACE_TIME=%d,",event_grace_time)+
|
||||
"POST_POINT=\""+RDYesNo(event_post_point)+"\","+
|
||||
"USE_AUTOFILL=\""+RDYesNo(event_use_autofill)+"\","+
|
||||
"USE_TIMESCALE=\""+RDYesNo(event_use_timescale)+"\","+
|
||||
QString().sprintf("IMPORT_SOURCE=%d,",event_import_source)+
|
||||
QString().sprintf("START_SLOP=%d,",event_start_slop)+
|
||||
QString().sprintf("END_SLOP=%d,",event_end_slop)+
|
||||
QString().sprintf("FIRST_TRANS_TYPE=%d,",event_first_transtype)+
|
||||
QString().sprintf("DEFAULT_TRANS_TYPE=%d,",event_default_transtype)+
|
||||
"COLOR=\""+RDEscapeString(event_color.name())+"\""+
|
||||
QString().sprintf("AUTOFILL_SLOP=%d,",event_autofill_slop)+
|
||||
"NESTED_EVENT=\""+RDEscapeString(event_nested_event)+"\","+
|
||||
"SCHED_GROUP=\""+RDEscapeString(event_sched_group)+"\","+
|
||||
QString().sprintf("TITLE_SEP=%d,",event_title_sep)+
|
||||
"HAVE_CODE=\""+RDEscapeString(event_have_code)+"\","+
|
||||
"HAVE_CODE2=\""+RDEscapeString(event_have_code2)+"\" "+
|
||||
"where NAME=\""+RDEscapeString(event_name)+"\"";
|
||||
}
|
||||
else {
|
||||
sql=QString().sprintf("insert into EVENTS set NAME=\"%s\",\
|
||||
PROPERTIES=\"%s\",\
|
||||
PREPOSITION=%d,TIME_TYPE=%d,\
|
||||
GRACE_TIME=%d,POST_POINT=\"%s\",\
|
||||
USE_AUTOFILL=\"%s\",USE_TIMESCALE=\"%s\",\
|
||||
IMPORT_SOURCE=%d,START_SLOP=%d,\
|
||||
END_SLOP=%d,FIRST_TRANS_TYPE=%d,\
|
||||
DEFAULT_TRANS_TYPE=%d,COLOR=\"%s\"\
|
||||
AUTOFILL_SLOP=%d,SCHED_GROUP=\"%s\" where NAME=\"%s\"",
|
||||
(const char *)RDEscapeString(event_name),
|
||||
(const char *)RDEscapeString(event_properties),
|
||||
event_preposition,event_time_type,
|
||||
event_grace_time,
|
||||
(const char *)RDYesNo(event_post_point),
|
||||
(const char *)RDYesNo(event_use_autofill),
|
||||
(const char *)RDYesNo(event_use_timescale),
|
||||
event_import_source,event_start_slop,
|
||||
event_end_slop,event_first_transtype,
|
||||
event_default_transtype,
|
||||
(const char *)event_color.name(),
|
||||
event_autofill_slop,
|
||||
(const char *)RDEscapeString(event_sched_group),
|
||||
(const char *)RDEscapeString(event_name));
|
||||
sql=QString("insert into EVENTS set ")+
|
||||
"NAME=\""+RDEscapeString(event_name)+"\","+
|
||||
"PROPERTIES=\""+RDEscapeString(event_properties)+"\","+
|
||||
QString().sprintf("PREPOSITION=%d,",event_preposition)+
|
||||
QString().sprintf("TIME_TYPE=%d,",event_time_type)+
|
||||
QString().sprintf("GRACE_TIME=%d,",event_grace_time)+
|
||||
"POST_POINT=\""+RDYesNo(event_post_point)+"\","+
|
||||
"USE_AUTOFILL=\""+RDYesNo(event_use_autofill)+"\","+
|
||||
"USE_TIMESCALE=\""+RDYesNo(event_use_timescale)+"\","+
|
||||
QString().sprintf("IMPORT_SOURCE=%d,",event_import_source)+
|
||||
QString().sprintf("START_SLOP=%d,",event_start_slop)+
|
||||
QString().sprintf("END_SLOP=%d,",event_end_slop)+
|
||||
QString().sprintf("FIRST_TRANS_TYPE=%d,",event_first_transtype)+
|
||||
QString().sprintf("DEFAULT_TRANS_TYPE=%d,",event_default_transtype)+
|
||||
"COLOR=\""+RDEscapeString(event_color.name())+"\","+
|
||||
QString().sprintf("AUTOFILL_SLOP=%d,",event_autofill_slop)+
|
||||
"SCHED_GROUP=\""+RDEscapeString(event_sched_group)+"\" where "+
|
||||
"NAME=\""+RDEscapeString(event_name)+"\"";
|
||||
}
|
||||
delete q;
|
||||
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++) {
|
||||
if((logline=event_preimport_log->logLine(i))!=NULL) {
|
||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d,\
|
||||
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\",\
|
||||
TRANS_TYPE=%d,COMMENT=\"%s\",EVENT_LENGTH=%d",
|
||||
(const char *)logname,count,count,
|
||||
logline->type(),
|
||||
RDLogLine::Template,
|
||||
QTime().msecsTo(time),
|
||||
grace_time,logline->cartNumber(),
|
||||
time_type,
|
||||
(const char *)RDYesNo(post_point),
|
||||
logline->transType(),
|
||||
(const char *)
|
||||
RDEscapeString(logline->markerComment()),
|
||||
event_length);
|
||||
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||
QString().sprintf("ID=%d,",count)+
|
||||
QString().sprintf("COUNT=%d,",count)+
|
||||
QString().sprintf("TYPE=%d,",logline->type())+
|
||||
QString().sprintf("SOURCE=%d,",RDLogLine::Template)+
|
||||
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
|
||||
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||
QString().sprintf("TRANS_TYPE=%d,",logline->transType())+
|
||||
"COMMENT=\""+RDEscapeString(logline->markerComment())+"\","+
|
||||
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
count++;
|
||||
@ -562,26 +564,25 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
}
|
||||
QTime end_start_time=event_start_time.addMSecs(event_length);
|
||||
|
||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d,\
|
||||
TIME_TYPE=%d,POST_POINT=\"%s\",TRANS_TYPE=%d,\
|
||||
LINK_EVENT_NAME=\"%s\",LINK_START_TIME=%d,\
|
||||
LINK_LENGTH=%d,LINK_ID=%d,LINK_START_SLOP=%d,\
|
||||
LINK_END_SLOP=%d,EVENT_LENGTH=%d",
|
||||
(const char *)logname,count,count,
|
||||
link_type,RDLogLine::Template,
|
||||
QTime().msecsTo(time),
|
||||
grace_time,
|
||||
time_type,
|
||||
(const char *)RDYesNo(post_point),
|
||||
trans_type,
|
||||
(const char *)RDEscapeString(event_name),
|
||||
QTime().msecsTo(event_start_time),
|
||||
event_start_time.msecsTo(end_start_time),
|
||||
link_id,
|
||||
event_start_slop,
|
||||
event_end_slop,
|
||||
event_length);
|
||||
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||
QString().sprintf("ID=%d,",count)+
|
||||
QString().sprintf("COUNT=%d,",count)+
|
||||
QString().sprintf("TYPE=%d,",link_type)+
|
||||
QString().sprintf("SOURCE=%d,",RDLogLine::Template)+
|
||||
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||
QString().sprintf("TRANS_TYPE=%d,",trans_type)+
|
||||
"LINK_EVENT_NAME=\""+RDEscapeString(event_name)+"\","+
|
||||
QString().sprintf("LINK_START_TIME=%d,",
|
||||
QTime().msecsTo(event_start_time))+
|
||||
QString().sprintf("LINK_LENGTH=%d,",
|
||||
event_start_time.msecsTo(end_start_time))+
|
||||
QString().sprintf("LINK_ID=%d,",link_id)+
|
||||
QString().sprintf("LINK_START_SLOP=%d,",event_start_slop)+
|
||||
QString().sprintf("LINK_END_SLOP=%d,",event_end_slop)+
|
||||
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
count++;
|
||||
@ -605,8 +606,12 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
|
||||
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);
|
||||
if(q->size()>0)
|
||||
{
|
||||
@ -630,7 +635,8 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
}
|
||||
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);
|
||||
if (q->last())
|
||||
{
|
||||
@ -647,16 +653,13 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
// Add deconflicting rules here
|
||||
// Title separation
|
||||
schedCL->save();
|
||||
sql=QString().sprintf("select CART from %s_STACK \
|
||||
where SCHED_STACK_ID >= %d",(const char*)svcname_rp,(stackid-titlesep));
|
||||
sql=QString("select CART from `")+svcname_rp+"_STACK` where "+
|
||||
QString().sprintf("SCHED_STACK_ID >= %d",stackid-titlesep);
|
||||
q=new RDSqlQuery(sql);
|
||||
|
||||
while (q->next())
|
||||
{
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
{
|
||||
if(q->value(0).toUInt()==schedCL->getItemCartnumber(counter))
|
||||
{
|
||||
while (q->next()) {
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(q->value(0).toUInt()==schedCL->getItemCartnumber(counter)) {
|
||||
schedCL->removeItem(counter);
|
||||
counter--;
|
||||
}
|
||||
@ -669,66 +672,57 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
|
||||
// Artist separation
|
||||
schedCL->save();
|
||||
sql=QString().sprintf("select ARTIST from %s_STACK \
|
||||
where SCHED_STACK_ID >= %d",(const char*)svcname_rp,(stackid-artistsep));
|
||||
sql=QString("select ARTIST from `")+svcname_rp+"_STACK` where "+
|
||||
QString().sprintf("SCHED_STACK_ID >= %d",stackid-artistsep);
|
||||
q=new RDSqlQuery(sql);
|
||||
|
||||
while (q->next())
|
||||
{
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
{
|
||||
if(q->value(0).toString()==schedCL->getItemArtist(counter))
|
||||
{
|
||||
while (q->next()) {
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(q->value(0).toString()==schedCL->getItemArtist(counter)) {
|
||||
schedCL->removeItem(counter);
|
||||
counter--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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"));
|
||||
}
|
||||
schedCL->restore();
|
||||
|
||||
// Must have scheduler code
|
||||
if(event_have_code!="")
|
||||
{
|
||||
if(event_have_code!="") {
|
||||
schedCL->save();
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
{
|
||||
if(!schedCL->itemHasCode(counter,event_have_code))
|
||||
{
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(!schedCL->itemHasCode(counter,event_have_code)) {
|
||||
schedCL->removeItem(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);
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
|
||||
// Must have second scheduler code
|
||||
if(event_have_code2!="")
|
||||
{
|
||||
if(event_have_code2!="") {
|
||||
schedCL->save();
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
{
|
||||
if(!schedCL->itemHasCode(counter,event_have_code2))
|
||||
{
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(!schedCL->itemHasCode(counter,event_have_code2)) {
|
||||
schedCL->removeItem(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);
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
|
||||
// Scheduler Codes
|
||||
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);
|
||||
while (q->next())
|
||||
{
|
||||
while (q->next()) {
|
||||
// max in a row, min wait
|
||||
schedCL->save();
|
||||
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();
|
||||
wstr+=" ";
|
||||
wstr=wstr.left(11);
|
||||
sql=QString().sprintf("select CART from %s_STACK \
|
||||
where SCHED_STACK_ID > %d and SCHED_CODES like \"%%%s%%\"",(const char*)svcname_rp,(stackid-range),(const char *)wstr);
|
||||
sql=QString("select CART from `")+svcname_rp+"_STACK` where "+
|
||||
QString().sprintf("SCHED_STACK_ID > %d and ",stackid-range)+
|
||||
"SCHED_CODES like \"%%"+RDEscapeString(wstr)+"%%\"";
|
||||
q1=new RDSqlQuery(sql);
|
||||
if (q1->size()>=allowed || allowed==0)
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
||||
if(q1->size()>=allowed || allowed==0) {
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||
counter--;
|
||||
}
|
||||
}
|
||||
}
|
||||
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());
|
||||
}
|
||||
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+=" ";
|
||||
@ -757,18 +755,21 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
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);
|
||||
q1=new RDSqlQuery(sql);
|
||||
if (q1->size()>0)
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
||||
if(q1->size()>0) {
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||
counter--;
|
||||
}
|
||||
}
|
||||
}
|
||||
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());
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
// or after
|
||||
if (q->value(4).toString()!="")
|
||||
{
|
||||
if (q->value(4).toString()!="") {
|
||||
schedCL->save();
|
||||
QString wstr=q->value(4).toString();
|
||||
wstr+=" ";
|
||||
@ -776,18 +777,21 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
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);
|
||||
q1=new RDSqlQuery(sql);
|
||||
if (q1->size()>0)
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
||||
if(q1->size()>0) {
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||
counter--;
|
||||
}
|
||||
}
|
||||
}
|
||||
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());
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
// or after II
|
||||
if (q->value(5).toString()!="")
|
||||
{
|
||||
if (q->value(5).toString()!="") {
|
||||
schedCL->save();
|
||||
QString wstr=q->value(5).toString();
|
||||
wstr+=" ";
|
||||
@ -795,13 +799,17 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
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);
|
||||
q1=new RDSqlQuery(sql);
|
||||
if (q1->size()>0)
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++)
|
||||
if ( schedCL->removeIfCode(counter,q->value(0).toString()))
|
||||
if(q1->size()>0) {
|
||||
for(counter=0;counter<schedCL->getNumberOfItems();counter++) {
|
||||
if(schedCL->removeIfCode(counter,q->value(0).toString())) {
|
||||
counter--;
|
||||
}
|
||||
}
|
||||
}
|
||||
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());
|
||||
}
|
||||
schedCL->restore();
|
||||
}
|
||||
}
|
||||
@ -810,34 +818,31 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
|
||||
// end of deconflicting rules
|
||||
|
||||
int schedpos = rand()%schedCL->getNumberOfItems();
|
||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d, \
|
||||
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\", \
|
||||
TRANS_TYPE=%d,EXT_START_TIME=%s,\
|
||||
EVENT_LENGTH=%d",
|
||||
(const char *)logname,count,count,
|
||||
RDLogLine::Cart,source,
|
||||
QTime().msecsTo(time),
|
||||
grace_time,
|
||||
schedCL->getItemCartnumber(schedpos),
|
||||
time_type,
|
||||
(const char *)RDYesNo(post_point),
|
||||
trans_type,
|
||||
(const char *)RDCheckDateTime(time,"hh:mm:ss"),
|
||||
event_length);
|
||||
int schedpos=rand()%schedCL->getNumberOfItems();
|
||||
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||
QString().sprintf("ID=%d,",count)+
|
||||
QString().sprintf("COUNT=%d,",count)+
|
||||
QString().sprintf("TYPE=%d,",RDLogLine::Cart)+
|
||||
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("TIME_TYPE=%d,",time_type)+
|
||||
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||
QString().sprintf("TRANS_TYPE=%d,",trans_type)+
|
||||
"EXT_START_TIME="+RDCheckDateTime(time,"hh:mm:ss")+","+
|
||||
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
|
||||
|
||||
|
||||
count++;
|
||||
|
||||
|
||||
|
||||
sql=QString().sprintf("insert into `%s_STACK` set SCHED_STACK_ID=%u,CART=%u,ARTIST=\"%s\",SCHED_CODES=\"%s\"",(const char*)svcname_rp,
|
||||
stackid,schedCL->getItemCartnumber(schedpos),
|
||||
(const char *)RDEscapeString(schedCL->getItemArtist(schedpos)),(const char *)schedCL->getItemSchedCodes(schedpos));
|
||||
sql=QString("insert into `")+svcname_rp+"_STACK` set "+
|
||||
QString().sprintf("SCHED_STACK_ID=%u,",stackid)+
|
||||
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;
|
||||
@ -848,27 +853,24 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Post-Import Carts
|
||||
//
|
||||
for(int i=0;i<event_postimport_log->size();i++) {
|
||||
if((logline=event_postimport_log->logLine(i))!=NULL) {
|
||||
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
|
||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d,\
|
||||
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\",\
|
||||
TRANS_TYPE=%d,COMMENT=\"%s\",EVENT_LENGTH=%d",
|
||||
(const char *)logname,count,count,
|
||||
logline->type(),
|
||||
RDLogLine::Template,
|
||||
QTime().msecsTo(time),
|
||||
grace_time,logline->cartNumber(),
|
||||
time_type,
|
||||
(const char *)RDYesNo(post_point),
|
||||
logline->transType(),
|
||||
(const char *)
|
||||
RDEscapeString(logline->markerComment()),
|
||||
event_length);
|
||||
sql=QString("insert into `")+logname+"_LOG` set "+
|
||||
QString().sprintf("ID=%d,",count)+
|
||||
QString().sprintf("COUNT=%d,",count)+
|
||||
QString().sprintf("TYPE=%d,",logline->type())+
|
||||
QString().sprintf("SOURCE=%d,",RDLogLine::Template)+
|
||||
QString().sprintf("START_TIME=%d,",QTime().msecsTo(time))+
|
||||
QString().sprintf("GRACE_TIME=%d,",grace_time)+
|
||||
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
|
||||
QString().sprintf("TIME_TYPE=%d,",time_type)+
|
||||
"POST_POINT=\""+RDYesNo(post_point)+"\","+
|
||||
QString().sprintf("TRANS_TYPE=%d,",logline->transType())+
|
||||
"COMMENT=\""+RDEscapeString(logline->markerComment())+"\","+
|
||||
QString().sprintf("EVENT_LENGTH=%d",event_length);
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
count++;
|
||||
@ -1110,12 +1112,12 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
|
||||
//
|
||||
// Mark Events as Used
|
||||
//
|
||||
sql=QString().sprintf("update `%s` set EVENT_USED=\"Y\"\
|
||||
where (START_HOUR=%d)&&(START_SECS>=%d)&&\
|
||||
(START_SECS<=%d)&&(EVENT_USED=\"N\")",
|
||||
(const char *)import_table,
|
||||
start_start_hour,start_start_secs/1000,
|
||||
end_start_secs/1000);
|
||||
sql=QString("update `")+import_table+"` set "+
|
||||
"EVENT_USED=\"Y\" where "+
|
||||
QString().sprintf("(START_HOUR=%d)&&",start_start_hour)+
|
||||
QString().sprintf("(START_SECS>=%d)&&",start_start_secs/1000)+
|
||||
QString().sprintf("(START_SECS<=%d)&&",end_start_secs/1000)+
|
||||
"(EVENT_USED=\"N\")";
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
|
||||
@ -1126,12 +1128,12 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
|
||||
addMSecs(link_logline->linkLength());
|
||||
if(event_use_autofill&&(event_start_time<=time)) {
|
||||
QTime fill_start_time=time;
|
||||
sql=QString().
|
||||
sprintf("select AUTOFILLS.CART_NUMBER,CART.FORCED_LENGTH from\
|
||||
AUTOFILLS left join CART on AUTOFILLS.CART_NUMBER=CART.NUMBER\
|
||||
where (AUTOFILLS.SERVICE=\"%s\")&&(CART.FORCED_LENGTH<=%d)&&\
|
||||
(CART.FORCED_LENGTH>0) order by CART.FORCED_LENGTH desc",
|
||||
(const char *)svcname,time.msecsTo(end_time));
|
||||
sql=QString("select AUTOFILLS.CART_NUMBER,CART.FORCED_LENGTH from ")+
|
||||
"AUTOFILLS left join CART on AUTOFILLS.CART_NUMBER=CART.NUMBER where "+
|
||||
"(AUTOFILLS.SERVICE=\""+RDEscapeString(svcname)+"\")&&"+
|
||||
QString().sprintf("(CART.FORCED_LENGTH<=%d)&&",time.msecsTo(end_time))+
|
||||
"(CART.FORCED_LENGTH>0) "+
|
||||
"order by CART.FORCED_LENGTH desc";
|
||||
q=new RDSqlQuery(sql);
|
||||
bool fit=true;
|
||||
while(fit) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user