2017-12-05 Fred Gleason <fredg@paravelsystems.com>

* Modified log linking to retain parent link events in linked logs.
	* Fixed a bug where re-merging linked logs would generate an
	'Event not placed' exception for avails that were previously
	unpopulated.
This commit is contained in:
Fred Gleason 2017-12-05 12:41:10 -05:00
parent cacb87a786
commit 140f8fe500
3 changed files with 19 additions and 29 deletions

View File

@ -16091,3 +16091,8 @@
* Added a 'log_unlink_test' harness.
* Fixed a bug that caused a log's link status flags to fail to be
updated when the log was unlinked.
2017-12-05 Fred Gleason <fredg@paravelsystems.com>
* Modified log linking to retain parent link events in linked logs.
* Fixed a bug where re-merging linked logs would generate an
'Event not placed' exception for avails that were previously
unpopulated.

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-2017 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
@ -915,6 +915,17 @@ bool RDEventLine::linkLog(RDLogEvent *e,int next_id,const QString &svcname,
int grace_time=link_logline->graceTime();
QTime time=link_logline->startTime(RDLogLine::Logged);
//
// Insert Parent Link
//
e->insert(e->size(),1);
logline=new RDLogLine();
*logline=*link_logline;
logline->setId(e->nextId());
*(e->logLine(e->size()-1))=*logline;
delete logline;
logline=NULL;
//
// Calculate Event Time Boundaries
//

View File

@ -2,7 +2,7 @@
//
// Abstract a Rivendell Service.
//
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2004,2016-2017 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
@ -980,16 +980,13 @@ bool RDSvc::linkLog(RDSvc::ImportSource src,const QDate &date,
void RDSvc::clearLogLinks(RDSvc::ImportSource src,const QString &logname)
{
std::vector<int> cleared_ids;
RDLogLine::Type event_type=RDLogLine::UnknownType;
RDLogLine::Source event_source=RDLogLine::Manual;
switch(src) {
case RDSvc::Music:
event_type=RDLogLine::MusicLink;
event_source=RDLogLine::Music;
break;
case RDSvc::Traffic:
event_type=RDLogLine::TrafficLink;
event_source=RDLogLine::Traffic;
break;
}
@ -1000,30 +997,7 @@ void RDSvc::clearLogLinks(RDSvc::ImportSource src,const QString &logname)
RDLogLine *logline=NULL;
for(int i=0;i<src_event->size();i++) {
logline=src_event->logLine(i);
if((logline->linkId()>=0)&&(logline->source()==event_source)) {
if(CheckId(&cleared_ids,logline->linkId())) {
dest_event->insert(dest_event->size(),1);
RDLogLine *lline=dest_event->logLine(dest_event->size()-1);
lline->setId(dest_event->nextId());
lline->setStartTime(RDLogLine::Logged,logline->linkStartTime());
lline->setType(event_type);
if(logline->linkEmbedded()) {
lline->setSource(RDLogLine::Music);
}
else {
lline->setSource(RDLogLine::Template);
}
lline->setTransType(logline->transType());
lline->setLinkEventName(logline->linkEventName());
lline->setLinkStartTime(logline->linkStartTime());
lline->setLinkLength(logline->linkLength());
lline->setLinkStartSlop(logline->linkStartSlop());
lline->setLinkEndSlop(logline->linkEndSlop());
lline->setLinkId(logline->linkId());
lline->setLinkEmbedded(logline->linkEmbedded());
}
}
else {
if((logline->linkId()<0)||(logline->source()!=event_source)) {
dest_event->insert(dest_event->size(),1);
*(dest_event->logLine(dest_event->size()-1))=*logline;
dest_event->logLine(dest_event->size()-1)->setId(dest_event->nextId());