2018-01-08 Fred Gleason <fredg@paravelsystems.com>

* Removed implicit ASCII casts from RDEventLine.
This commit is contained in:
Fred Gleason 2018-01-08 13:15:09 -05:00
parent 6db1e6ca5e
commit 012fbb80a4
2 changed files with 212 additions and 208 deletions

View File

@ -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.

View File

@ -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) {