2016-06-07 Fred Gleason <fredg@paravelsystems.com>

* Added code in 'lib/rdevent_line.cpp' and 'lib/rdsvc.cpp' to allow
	embedded traffic breaks to be specified with start time and length
	in the music schedule.
This commit is contained in:
Fred Gleason 2016-06-07 08:36:59 -04:00
parent 04b4db9157
commit 6a05fd90a5
3 changed files with 95 additions and 55 deletions

View File

@ -15196,3 +15196,7 @@
* Changed the default value of the 'CART_NUMBER' field in '_LOG' * Changed the default value of the 'CART_NUMBER' field in '_LOG'
tables from NULL to 0. tables from NULL to 0.
* Incremented the database version to 258. * Incremented the database version to 258.
2016-06-07 Fred Gleason <fredg@paravelsystems.com>
* Added code in 'lib/rdevent_line.cpp' and 'lib/rdsvc.cpp' to allow
embedded traffic breaks to be specified with start time and length
in the music schedule.

View File

@ -939,15 +939,26 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
// Load Matching Events and Insert into Log // Load Matching Events and Insert into Log
// //
int id=-1; int id=-1;
sql=QString().sprintf("select CART_NUMBER,START_SECS,LENGTH,EXT_DATA,\ sql=QString("select ")+
EXT_EVENT_ID,EXT_ANNC_TYPE,EXT_CART_NAME,\ "CART_NUMBER,"+ // 00
INSERT_BREAK,INSERT_TRACK,INSERT_FIRST,TITLE,\ "START_SECS,"+ // 01
TRACK_STRING from `%s` where (START_HOUR=%d)&&\ "LENGTH,"+ // 02
(START_SECS>=%d)&&(START_SECS<=%d)&&\ "EXT_DATA,"+ // 03
(EVENT_USED=\"N\") order by ID", "EXT_EVENT_ID,"+ // 04
(const char *)import_table, "EXT_ANNC_TYPE,"+ // 05
start_start_hour,start_start_secs/1000, "EXT_CART_NAME,"+ // 06
end_start_secs/1000); "INSERT_BREAK,"+ // 07
"INSERT_TRACK,"+ // 08
"INSERT_FIRST,"+ // 09
"TITLE,"+ // 10
"TRACK_STRING,"+ // 11
"LINK_START_TIME,"+ // 12
"LINK_LENGTH "+ // 13
"from `"+import_table+"` 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\") order by ID";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
while(q->next()) { while(q->next()) {
if((id=e->nextId())>next_id) { if((id=e->nextId())>next_id) {
@ -966,8 +977,14 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
logline->setTransType(trans_type); logline->setTransType(trans_type);
logline->setEventLength(event_length); logline->setEventLength(event_length);
logline->setLinkEventName(event_nested_event); logline->setLinkEventName(event_nested_event);
if((!q->value(12).isNull())&&(!q->value(13).isNull())) {
logline->setLinkStartTime(q->value(12).toTime());
logline->setLinkLength(q->value(13).toInt());
}
else {
logline->setLinkStartTime(link_logline->linkStartTime()); logline->setLinkStartTime(link_logline->linkStartTime());
logline->setLinkLength(link_logline->linkLength()); logline->setLinkLength(link_logline->linkLength());
}
logline->setLinkStartSlop(link_logline->linkStartSlop()); logline->setLinkStartSlop(link_logline->linkStartSlop());
logline->setLinkEndSlop(link_logline->linkEndSlop()); logline->setLinkEndSlop(link_logline->linkEndSlop());
logline->setLinkId(link_logline->linkId()); logline->setLinkId(link_logline->linkId());

View File

@ -521,33 +521,30 @@ bool RDSvc::import(ImportSource src,const QDate &date,const QString &break_str,
// //
// Setup Data Source and Destination // Setup Data Source and Destination
// //
/*
if((infile=fopen(RDDateDecode(infilename,date),"r"))==NULL) {
return false;
}
*/
sql=QString().sprintf("drop table `%s`",(const char *)dest_table); sql=QString().sprintf("drop table `%s`",(const char *)dest_table);
QSqlQuery *qq; // Use QSqlQuery so we don't generate a QSqlQuery *qq; // Use QSqlQuery so we don't generate a
qq=new QSqlQuery(sql); // spurious error message. qq=new QSqlQuery(sql); // spurious error message.
delete qq; delete qq;
sql=QString().sprintf("create table `%s` (\ sql=QString("create table ")+
ID int primary key,\ "`"+dest_table+"` ("+
START_HOUR int not null,\ "ID int primary key,"+
START_SECS int not null,\ "START_HOUR int not null,"+
CART_NUMBER int unsigned,\ "START_SECS int not null,"+
TITLE char(255),\ "CART_NUMBER int unsigned,"+
LENGTH int,\ "TITLE char(255),"+
INSERT_BREAK enum('N','Y') default 'N',\ "LENGTH int,"+
INSERT_TRACK enum('N','Y') default 'N',\ "INSERT_BREAK enum('N','Y') default 'N',"+
INSERT_FIRST int unsigned default 0,\ "INSERT_TRACK enum('N','Y') default 'N',"+
TRACK_STRING char(255),\ "INSERT_FIRST int unsigned default 0,"+
EXT_DATA char(32),\ "TRACK_STRING char(255),"+
EXT_EVENT_ID char(32),\ "EXT_DATA char(32),"+
EXT_ANNC_TYPE char(8),\ "EXT_EVENT_ID char(32),"+
EXT_CART_NAME char(32),\ "EXT_ANNC_TYPE char(8),"+
EVENT_USED enum('N','Y') default 'N',\ "EXT_CART_NAME char(32),"+
INDEX START_TIME_IDX (START_HOUR,START_SECS))", "LINK_START_TIME time default NULL,"+
(const char *)dest_table); "LINK_LENGTH int default NULL,"+
"EVENT_USED enum('N','Y') default 'N',"+
"INDEX START_TIME_IDX (START_HOUR,START_SECS))";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
@ -563,6 +560,9 @@ bool RDSvc::import(ImportSource src,const QDate &date,const QString &break_str,
bool break_first=false; bool break_first=false;
bool track_first=false; bool track_first=false;
QString track_label; QString track_label;
QTime link_time;
int link_length=-1;
while(fgets(buf,RD_MAX_IMPORT_LINE_LENGTH,infile)!=NULL) { while(fgets(buf,RD_MAX_IMPORT_LINE_LENGTH,infile)!=NULL) {
line_used=false; line_used=false;
str_buf=buf; str_buf=buf;
@ -619,30 +619,39 @@ bool RDSvc::import(ImportSource src,const QDate &date,const QString &break_str,
(cartname==label_cart))|| (cartname==label_cart))||
((!track_cart.isEmpty())&& ((!track_cart.isEmpty())&&
(cartname==track_cart))) { (cartname==track_cart))) {
sql=QString().sprintf("insert into `%s` \ sql=QString("insert into ")+
set ID=%d,START_HOUR=%d,START_SECS=%d,\ "`"+dest_table+"` set "+
CART_NUMBER=%u,TITLE=\"%s\",LENGTH=%d,\ QString().sprintf("ID=%d,",line_id++)+
EXT_DATA=\"%s\",EXT_EVENT_ID=\"%s\",\ QString().sprintf("START_HOUR=%d,",start_hour)+
EXT_ANNC_TYPE=\"%s\",EXT_CART_NAME=\"%s\"", QString().sprintf("START_SECS=%d,",
(const char *)dest_table, 60*start_minutes+start_seconds)+
line_id++, QString().sprintf("CART_NUMBER=%u,",cartnum)+
start_hour, "TITLE=\""+RDEscapeString(title)+"\","+
60*start_minutes+ QString().sprintf("LENGTH=%d,",cartlen)+
start_seconds, "EXT_DATA=\""+data_buf+"\","+
cartnum, "EXT_EVENT_ID=\""+eventid_buf+"\","+
(const char *) "EXT_ANNC_TYPE=\""+annctype_buf+"\","+
RDEscapeString(title), "EXT_CART_NAME=\""+cartname+"\"";
cartlen,
(const char *)data_buf,
(const char *)eventid_buf,
(const char *)annctype_buf,
(const char *)cartname);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
// //
// Insert Break // Insert Break
// //
if(insert_break) { if(insert_break) {
sql=QString("update ")+"`"+dest_table+"` set "+
"INSERT_BREAK=\"Y\"";
if(break_first) {
sql+=QString().sprintf(",INSERT_FIRST=%d",
RDEventLine::InsertBreak);
}
if(link_time.isValid()&&(link_length>=0)) {
sql+=",LINK_START_TIME=\""+
link_time.toString("hh:mm:ss")+"\""+
QString().sprintf(",LINK_LENGTH=%d",
link_length);
}
sql+=QString().sprintf(" where ID=%d",line_id-1);
/*
if(break_first) { if(break_first) {
sql=QString(). sql=QString().
sprintf("update `%s` set INSERT_BREAK=\"Y\",\ sprintf("update `%s` set INSERT_BREAK=\"Y\",\
@ -657,6 +666,7 @@ bool RDSvc::import(ImportSource src,const QDate &date,const QString &break_str,
(const char *)dest_table,line_id-1); (const char *)dest_table,line_id-1);
} }
*/
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }
@ -691,6 +701,15 @@ bool RDSvc::import(ImportSource src,const QDate &date,const QString &break_str,
insert_found=false; insert_found=false;
line_used=true; line_used=true;
} }
if(cartname==break_str) {
link_time=
QTime(start_hour,start_minutes,start_seconds);
link_length=cartlen;
}
else {
link_time=QTime();
link_length=-1;
}
} }
} }
} }
@ -714,7 +733,6 @@ bool RDSvc::import(ImportSource src,const QDate &date,const QString &break_str,
break_first=true; break_first=true;
insert_found=true; insert_found=true;
} }
// q=new RDSqlQuery(sql);
} }
} }
if(!track_str.isEmpty()) { if(!track_str.isEmpty()) {
@ -1003,11 +1021,12 @@ bool RDSvc::linkLog(RDSvc::ImportSource src,const QDate &date,
emit generationProgress(24); emit generationProgress(24);
delete src_event; delete src_event;
delete dest_event; delete dest_event;
// printf("Import Table: %s\n",(const char *)import_name); printf("Import Table: %s\n",(const char *)import_name);
/*
sql=QString().sprintf("drop table `%s`",(const char *)import_name); sql=QString().sprintf("drop table `%s`",(const char *)import_name);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
*/
return true; return true;
} }