mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-11-23 17:30:22 +01:00
2020-10-20 Fred Gleason <fredg@paravelsystems.com>
* Added an experimental command rdmerge(8). Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -162,6 +162,7 @@ utils/rdimport/rdimport
|
|||||||
utils/rdcollect/rdcollect
|
utils/rdcollect/rdcollect
|
||||||
utils/rdexport/rdexport
|
utils/rdexport/rdexport
|
||||||
utils/rdmaint/rdmaint
|
utils/rdmaint/rdmaint
|
||||||
|
utils/rdmerge/rdmerge
|
||||||
utils/rdgen/rdgen
|
utils/rdgen/rdgen
|
||||||
utils/rdrender/rdrender
|
utils/rdrender/rdrender
|
||||||
utils/rdrevert/rdrevert
|
utils/rdrevert/rdrevert
|
||||||
|
|||||||
@@ -20490,3 +20490,5 @@
|
|||||||
* Added a 'webget' subpackage to the 'make rpm' target.
|
* Added a 'webget' subpackage to the 'make rpm' target.
|
||||||
2020-10-18 Fred Gleason <fredg@paravelsystems.com>
|
2020-10-18 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Incremented the package version to 3.4.1int2.
|
* Incremented the package version to 3.4.1int2.
|
||||||
|
2020-10-20 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added an experimental command rdmerge(8).
|
||||||
|
|||||||
@@ -589,6 +589,7 @@ AC_CONFIG_FILES([rivendell.spec \
|
|||||||
utils/rdimport/Makefile \
|
utils/rdimport/Makefile \
|
||||||
utils/rdmaint/Makefile \
|
utils/rdmaint/Makefile \
|
||||||
utils/rdmarkerset/Makefile \
|
utils/rdmarkerset/Makefile \
|
||||||
|
utils/rdmerge/Makefile \
|
||||||
utils/rdmetadata/Makefile \
|
utils/rdmetadata/Makefile \
|
||||||
utils/rdpopup/Makefile \
|
utils/rdpopup/Makefile \
|
||||||
utils/rdrender/Makefile \
|
utils/rdrender/Makefile \
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
##
|
##
|
||||||
## Automake.am for rivendell/utils
|
## Automake.am for rivendell/utils
|
||||||
##
|
##
|
||||||
## (C) Copyright 2002-2016 Fred Gleason <fredg@paravelsystems.com>
|
## (C) Copyright 2002-2020 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 as
|
## it under the terms of the GNU General Public License as
|
||||||
@@ -40,6 +40,7 @@ SUBDIRS = $(ALSACONFIG_RD_OPT)\
|
|||||||
rdimport\
|
rdimport\
|
||||||
rdmaint\
|
rdmaint\
|
||||||
rdmarkerset\
|
rdmarkerset\
|
||||||
|
rdmerge\
|
||||||
rdmetadata\
|
rdmetadata\
|
||||||
rdpopup\
|
rdpopup\
|
||||||
rdrender\
|
rdrender\
|
||||||
|
|||||||
50
utils/rdmerge/Makefile.am
Normal file
50
utils/rdmerge/Makefile.am
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
## Makefile.am
|
||||||
|
##
|
||||||
|
## (C) Copyright 2020 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
|
||||||
|
## published by the Free Software Foundation.
|
||||||
|
##
|
||||||
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public
|
||||||
|
## License along with this program; if not, write to the Free Software
|
||||||
|
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
##
|
||||||
|
## Use automake to process this into a Makefile.in
|
||||||
|
|
||||||
|
AM_CPPFLAGS = -Wall -DPREFIX=\"$(prefix)\" -I$(top_srcdir)/lib @QT4_CFLAGS@ @MUSICBRAINZ_CFLAGS@ -DQT3_SUPPORT -I/usr/include/Qt3Support
|
||||||
|
LIBS = -L$(top_srcdir)/lib
|
||||||
|
MOC = @QT_MOC@
|
||||||
|
|
||||||
|
# The dependency for qt's Meta Object Compiler (moc)
|
||||||
|
moc_%.cpp: %.h
|
||||||
|
$(MOC) $< -o $@
|
||||||
|
|
||||||
|
sbin_PROGRAMS = rdmerge
|
||||||
|
|
||||||
|
dist_rdmerge_SOURCES = rdmerge.cpp rdmerge.h
|
||||||
|
|
||||||
|
nodist_rdmerge_SOURCES = moc_rdmerge.cpp
|
||||||
|
|
||||||
|
rdmerge_LDADD = @LIB_RDLIBS@ @LIBVORBIS@ @QT4_LIBS@ @MUSICBRAINZ_LIBS@ -lQt3Support
|
||||||
|
|
||||||
|
CLEANFILES = *~\
|
||||||
|
*.exe\
|
||||||
|
*.idb\
|
||||||
|
*ilk\
|
||||||
|
*.obj\
|
||||||
|
*.pdb\
|
||||||
|
*.qm\
|
||||||
|
moc_*
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = *~\
|
||||||
|
*.tar.gz\
|
||||||
|
aclocal.m4\
|
||||||
|
configure\
|
||||||
|
Makefile.in\
|
||||||
|
moc_*
|
||||||
433
utils/rdmerge/rdmerge.cpp
Normal file
433
utils/rdmerge/rdmerge.cpp
Normal file
@@ -0,0 +1,433 @@
|
|||||||
|
// rddbmgr.cpp
|
||||||
|
//
|
||||||
|
// Rivendell database merging utility
|
||||||
|
//
|
||||||
|
// (C) Copyright 2020 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
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include <qapplication.h>
|
||||||
|
#include <qfileinfo.h>
|
||||||
|
#include <qsqldatabase.h>
|
||||||
|
#include <qsqlerror.h>
|
||||||
|
#include <qstringlist.h>
|
||||||
|
|
||||||
|
#include <dbversion.h>
|
||||||
|
#include <rdcmd_switch.h>
|
||||||
|
#include <rddb.h>
|
||||||
|
#include <rdescape_string.h>
|
||||||
|
|
||||||
|
#include "rdmerge.h"
|
||||||
|
|
||||||
|
MainObject::MainObject(QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
{
|
||||||
|
QString err_msg;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Open the Database
|
||||||
|
//
|
||||||
|
rda=new RDApplication("rdmerge","rdmerge",RDMERGE_USAGE,this);
|
||||||
|
if(!rda->open(&err_msg)) {
|
||||||
|
fprintf(stderr,"rdmerge: %s\n",err_msg.toUtf8().constData());
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
DumpEvents();
|
||||||
|
DumpEventLines();
|
||||||
|
DumpClocks();
|
||||||
|
DumpClockLines();
|
||||||
|
DumpServices();
|
||||||
|
DumpServiceClocks();
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::DumpEvents() const
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
|
||||||
|
printf("--\n");
|
||||||
|
printf("-- Dumping data for table 'EVENTS'\n");
|
||||||
|
printf("--\n");
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"NAME,"+ // 00
|
||||||
|
"DISPLAY_TEXT,"+ // 01
|
||||||
|
"NOTE_TEXT,"+ // 02
|
||||||
|
"PREPOSITION,"+ // 03
|
||||||
|
"TIME_TYPE,"+ // 04
|
||||||
|
"GRACE_TIME,"+ // 05
|
||||||
|
"USE_AUTOFILL,"+ // 06
|
||||||
|
"AUTOFILL_SLOP,"+ // 07
|
||||||
|
"USE_TIMESCALE,"+ // 08
|
||||||
|
"IMPORT_SOURCE,"+ // 09
|
||||||
|
"START_SLOP,"+ // 10
|
||||||
|
"END_SLOP,"+ // 11
|
||||||
|
"FIRST_TRANS_TYPE,"+ // 12
|
||||||
|
"DEFAULT_TRANS_TYPE,"+ // 13
|
||||||
|
"COLOR,"+ // 14
|
||||||
|
"SCHED_GROUP,"+ // 15
|
||||||
|
"ARTIST_SEP,"+ // 16
|
||||||
|
"TITLE_SEP,"+ // 17
|
||||||
|
"HAVE_CODE,"+ // 18
|
||||||
|
"HAVE_CODE2,"+ // 19
|
||||||
|
"HOR_SEP,"+ // 20
|
||||||
|
"HOR_DIST,"+ // 21
|
||||||
|
"NESTED_EVENT,"+ // 22
|
||||||
|
"REMARKS "+ // 23
|
||||||
|
"from EVENTS";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
sql=QString("insert into EVENTS set ")+
|
||||||
|
"NAME='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||||
|
"DISPLAY_TEXT='"+RDEscapeString(q->value(1).toString())+"',"+
|
||||||
|
"NOTE_TEXT='"+RDEscapeString(q->value(2).toString())+"',"+
|
||||||
|
QString().sprintf("PREPOSITION=%d,",q->value(3).toInt())+
|
||||||
|
QString().sprintf("TIME_TYPE=%d,",q->value(4).toInt())+
|
||||||
|
QString().sprintf("GRACE_TIME=%d,",q->value(5).toInt())+
|
||||||
|
"USE_AUTOFILL='"+RDEscapeString(q->value(6).toString())+"',"+
|
||||||
|
QString().sprintf("AUTOFILL_SLOP=%d,",q->value(7).toInt())+
|
||||||
|
"USE_TIMESCALE='"+RDEscapeString(q->value(8).toString())+"',"+
|
||||||
|
QString().sprintf("IMPORT_SOURCE=%d,",q->value(9).toInt())+
|
||||||
|
QString().sprintf("START_SLOP=%d,",q->value(10).toInt())+
|
||||||
|
QString().sprintf("END_SLOP=%d,",q->value(11).toInt())+
|
||||||
|
QString().sprintf("FIRST_TRANS_TYPE=%d,",q->value(12).toInt())+
|
||||||
|
QString().sprintf("DEFAULT_TRANS_TYPE=%d,",q->value(13).toInt())+
|
||||||
|
"COLOR='"+RDEscapeString(q->value(14).toString())+"',"+
|
||||||
|
"SCHED_GROUP='"+RDEscapeString(q->value(15).toString())+"',"+
|
||||||
|
QString().sprintf("ARTIST_SEP=%u,",q->value(16).toUInt())+
|
||||||
|
QString().sprintf("TITLE_SEP=%u,",q->value(17).toUInt())+
|
||||||
|
"HAVE_CODE='"+RDEscapeString(q->value(18).toString())+"',"+
|
||||||
|
"HAVE_CODE2='"+RDEscapeString(q->value(19).toString())+"',"+
|
||||||
|
QString().sprintf("HOR_SEP=%u,",q->value(20).toUInt())+
|
||||||
|
QString().sprintf("HOR_DIST=%u,",q->value(21).toUInt())+
|
||||||
|
"NESTED_EVENT='"+RDEscapeString(q->value(22).toString())+"',"+
|
||||||
|
"REMARKS='"+RDEscapeString(q->value(23).toString())+"'";
|
||||||
|
printf("%s;\n",sql.toUtf8().constData());
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::DumpEventLines() const
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
|
||||||
|
printf("--\n");
|
||||||
|
printf("-- Dumping data for table 'EVENT_LINES'\n");
|
||||||
|
printf("--\n");
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"EVENT_NAME,"+ // 00
|
||||||
|
"TYPE,"+ // 01
|
||||||
|
"COUNT,"+ // 02
|
||||||
|
"EVENT_TYPE,"+ // 03
|
||||||
|
"CART_NUMBER,"+ // 04
|
||||||
|
"TRANS_TYPE,"+ // 05
|
||||||
|
"MARKER_COMMENT "+ // 06
|
||||||
|
"from EVENT_LINES";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
sql=QString("insert into EVENT_LINES set ")+
|
||||||
|
"EVENT_NAME='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||||
|
QString().sprintf("TYPE=%d,",q->value(1).toInt())+
|
||||||
|
QString().sprintf("COUNT=%d,",q->value(2).toInt())+
|
||||||
|
QString().sprintf("EVENT_TYPE=%d,",q->value(3).toInt())+
|
||||||
|
QString().sprintf("CART_NUMBER=%u,",q->value(4).toUInt())+
|
||||||
|
QString().sprintf("TRANS_TYPE=%d,",q->value(5).toInt())+
|
||||||
|
"MARKER_COMMENT='"+RDEscapeString(q->value(6).toString())+"'";
|
||||||
|
printf("%s;\n",sql.toUtf8().constData());
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::DumpClocks() const
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
|
||||||
|
printf("--\n");
|
||||||
|
printf("-- Dumping data for table 'CLOCKS'\n");
|
||||||
|
printf("--\n");
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"NAME,"+ // 00
|
||||||
|
"SHORT_NAME,"+ // 01
|
||||||
|
"ARTISTSEP,"+ // 02
|
||||||
|
"COLOR,"+ // 03
|
||||||
|
"REMARKS "+ // 04
|
||||||
|
"from CLOCKS";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
sql=QString("insert into CLOCKS set ")+
|
||||||
|
"NAME='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||||
|
"SHORT_NAME='"+RDEscapeString(q->value(1).toString())+"',"+
|
||||||
|
QString().sprintf("ARTISTSEP=%u,",q->value(2).toUInt())+
|
||||||
|
"COLOR='"+RDEscapeString(q->value(3).toString())+"',"+
|
||||||
|
"REMARKS='"+RDEscapeString(q->value(4).toString())+"'";
|
||||||
|
printf("%s;\n",sql.toUtf8().constData());
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::DumpClockLines() const
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
|
||||||
|
printf("--\n");
|
||||||
|
printf("-- Dumping data for table 'CLOCK_LINES'\n");
|
||||||
|
printf("--\n");
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"CLOCK_NAME,"+ // 00
|
||||||
|
"EVENT_NAME,"+ // 01
|
||||||
|
"START_TIME,"+ // 02
|
||||||
|
"LENGTH "+ // 03
|
||||||
|
"from CLOCK_LINES";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
sql=QString("insert into CLOCK_LINES set ")+
|
||||||
|
"CLOCK_NAME='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||||
|
"EVENT_NAME='"+RDEscapeString(q->value(1).toString())+"',"+
|
||||||
|
QString().sprintf("START_TIME=%d,",q->value(2).toInt())+
|
||||||
|
QString().sprintf("LENGTH=%d",q->value(3).toInt());
|
||||||
|
printf("%s;\n",sql.toUtf8().constData());
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::DumpServices() const
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
|
||||||
|
printf("--\n");
|
||||||
|
printf("-- Dumping data for table 'SERVICES'\n");
|
||||||
|
printf("--\n");
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"NAME,"+ // 00
|
||||||
|
"DESCRIPTION,"+ // 01
|
||||||
|
"NAME_TEMPLATE,"+ // 02
|
||||||
|
"DESCRIPTION_TEMPLATE,"+ // 03
|
||||||
|
"PROGRAM_CODE,"+ // 04
|
||||||
|
"CHAIN_LOG,"+ // 05
|
||||||
|
"SUB_EVENT_INHERITANCE,"+ // 06
|
||||||
|
"TRACK_GROUP,"+ // 07
|
||||||
|
"AUTOSPOT_GROUP,"+ // 08
|
||||||
|
"AUTO_REFRESH,"+ // 09
|
||||||
|
"DEFAULT_LOG_SHELFLIFE,"+ // 10
|
||||||
|
"LOG_SHELFLIFE_ORIGIN,"+ // 11
|
||||||
|
"ELR_SHELFLIFE,"+ // 12
|
||||||
|
"INCLUDE_IMPORT_MARKERS,"+ // 13
|
||||||
|
"TFC_PATH,"+ // 14
|
||||||
|
"TFC_PREIMPORT_CMD,"+ // 15
|
||||||
|
"TFC_IMPORT_TEMPLATE,"+ // 16
|
||||||
|
"TFC_LABEL_CART,"+ // 17
|
||||||
|
"TFC_TRACK_CART,"+ // 18
|
||||||
|
"TFC_BREAK_STRING,"+ // 19
|
||||||
|
"TFC_TRACK_STRING,"+ // 20
|
||||||
|
"TFC_CART_OFFSET,"+ // 21
|
||||||
|
"TFC_CART_LENGTH," // 22
|
||||||
|
"TFC_TITLE_OFFSET,"+ // 23
|
||||||
|
"TFC_TITLE_LENGTH,"+ // 24
|
||||||
|
"TFC_HOURS_OFFSET,"+ // 25
|
||||||
|
"TFC_HOURS_LENGTH,"+ // 26
|
||||||
|
"TFC_MINUTES_OFFSET,"+ // 27
|
||||||
|
"TFC_MINUTES_LENGTH,"+ // 28
|
||||||
|
"TFC_SECONDS_OFFSET,"+ // 29
|
||||||
|
"TFC_SECONDS_LENGTH,"+ // 30
|
||||||
|
"TFC_LEN_HOURS_OFFSET,"+ // 31
|
||||||
|
"TFC_LEN_HOURS_LENGTH,"+ // 32
|
||||||
|
"TFC_LEN_MINUTES_OFFSET,"+ // 33
|
||||||
|
"TFC_LEN_MINUTES_LENGTH,"+ // 34
|
||||||
|
"TFC_LEN_SECONDS_OFFSET,"+ // 35
|
||||||
|
"TFC_LEN_SECONDS_LENGTH,"+ // 36
|
||||||
|
"TFC_DATA_OFFSET,"+ // 37
|
||||||
|
"TFC_DATA_LENGTH,"+ // 38
|
||||||
|
"TFC_EVENT_ID_OFFSET,"+ // 39
|
||||||
|
"TFC_EVENT_ID_LENGTH,"+ // 40
|
||||||
|
"TFC_ANNC_TYPE_OFFSET,"+ // 41
|
||||||
|
"TFC_ANNC_TYPE_LENGTH,"+ // 42
|
||||||
|
"MUS_PATH,"+ // 43
|
||||||
|
"MUS_PREIMPORT_CMD,"+ // 44
|
||||||
|
"MUS_IMPORT_TEMPLATE,"+ // 45
|
||||||
|
"MUS_LABEL_CART,"+ // 46
|
||||||
|
"MUS_TRACK_CART,"+ // 47
|
||||||
|
"MUS_BREAK_STRING,"+ // 48
|
||||||
|
"MUS_TRACK_STRING,"+ // 49
|
||||||
|
"MUS_CART_OFFSET,"+ // 50
|
||||||
|
"MUS_CART_LENGTH," // 51
|
||||||
|
"MUS_TITLE_OFFSET,"+ // 52
|
||||||
|
"MUS_TITLE_LENGTH,"+ // 53
|
||||||
|
"MUS_HOURS_OFFSET,"+ // 54
|
||||||
|
"MUS_HOURS_LENGTH,"+ // 55
|
||||||
|
"MUS_MINUTES_OFFSET,"+ // 56
|
||||||
|
"MUS_MINUTES_LENGTH,"+ // 57
|
||||||
|
"MUS_SECONDS_OFFSET,"+ // 58
|
||||||
|
"MUS_SECONDS_LENGTH,"+ // 59
|
||||||
|
"MUS_LEN_HOURS_OFFSET,"+ // 60
|
||||||
|
"MUS_LEN_HOURS_LENGTH,"+ // 61
|
||||||
|
"MUS_LEN_MINUTES_OFFSET,"+ // 62
|
||||||
|
"MUS_LEN_MINUTES_LENGTH,"+ // 63
|
||||||
|
"MUS_LEN_SECONDS_OFFSET,"+ // 64
|
||||||
|
"MUS_LEN_SECONDS_LENGTH,"+ // 65
|
||||||
|
"MUS_DATA_OFFSET,"+ // 66
|
||||||
|
"MUS_DATA_LENGTH,"+ // 67
|
||||||
|
"MUS_EVENT_ID_OFFSET,"+ // 68
|
||||||
|
"MUS_EVENT_ID_LENGTH,"+ // 69
|
||||||
|
"MUS_ANNC_TYPE_OFFSET,"+ // 70
|
||||||
|
"MUS_ANNC_TYPE_LENGTH "+ // 71
|
||||||
|
"from SERVICES";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
sql=QString("insert into SERVICES set ")+
|
||||||
|
"NAME='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||||
|
"DESCRIPTION='"+RDEscapeString(q->value(1).toString())+"',"+
|
||||||
|
"NAME_TEMPLATE='"+RDEscapeString(q->value(2).toString())+"',"+
|
||||||
|
"DESCRIPTION_TEMPLATE='"+RDEscapeString(q->value(3).toString())+"',"+
|
||||||
|
"PROGRAM_CODE='"+RDEscapeString(q->value(4).toString())+"',"+
|
||||||
|
"CHAIN_LOG='"+RDEscapeString(q->value(5).toString())+"',"+
|
||||||
|
QString().sprintf("SUB_EVENT_INHERITANCE=%d,",q->value(6).toInt())+
|
||||||
|
"TRACK_GROUP='"+RDEscapeString(q->value(7).toString())+"',"+
|
||||||
|
"AUTOSPOT_GROUP='"+RDEscapeString(q->value(8).toString())+"',"+
|
||||||
|
"AUTO_REFRESH='"+RDEscapeString(q->value(9).toString())+"',"+
|
||||||
|
QString().sprintf("DEFAULT_LOG_SHELFLIFE=%d,",q->value(10).toInt())+
|
||||||
|
QString().sprintf("LOG_SHELFLIFE_ORIGIN=%d,",q->value(11).toInt())+
|
||||||
|
QString().sprintf("ELR_SHELFLIFE=%d,",q->value(12).toInt())+
|
||||||
|
"INCLUDE_IMPORT_MARKERS='"+RDEscapeString(q->value(13).toString())+"',"+
|
||||||
|
"TFC_PATH='"+RDEscapeString(q->value(14).toString())+"',"+
|
||||||
|
"TFC_PREIMPORT_CMD='"+RDEscapeString(q->value(15).toString())+"',"+
|
||||||
|
"TFC_IMPORT_TEMPLATE='"+RDEscapeString(q->value(16).toString())+"',"+
|
||||||
|
"TFC_LABEL_CART='"+RDEscapeString(q->value(17).toString())+"',"+
|
||||||
|
"TFC_TRACK_CART='"+RDEscapeString(q->value(18).toString())+"',"+
|
||||||
|
"TFC_BREAK_STRING='"+RDEscapeString(q->value(19).toString())+"',"+
|
||||||
|
"TFC_TRACK_STRING='"+RDEscapeString(q->value(20).toString())+"',"+
|
||||||
|
QString().sprintf("TFC_CART_OFFSET=%d,",q->value(21).toInt())+
|
||||||
|
QString().sprintf("TFC_CART_LENGTH=%d,",q->value(22).toInt())+
|
||||||
|
QString().sprintf("TFC_TITLE_OFFSET=%d,",q->value(23).toInt())+
|
||||||
|
QString().sprintf("TFC_TITLE_LENGTH=%d,",q->value(24).toInt())+
|
||||||
|
QString().sprintf("TFC_HOURS_OFFSET=%d,",q->value(25).toInt())+
|
||||||
|
QString().sprintf("TFC_HOURS_LENGTH=%d,",q->value(26).toInt())+
|
||||||
|
QString().sprintf("TFC_MINUTES_OFFSET=%d,",q->value(27).toInt())+
|
||||||
|
QString().sprintf("TFC_MINUTES_LENGTH=%d,",q->value(28).toInt())+
|
||||||
|
QString().sprintf("TFC_SECONDS_OFFSET=%d,",q->value(29).toInt())+
|
||||||
|
QString().sprintf("TFC_SECONDS_LENGTH=%d,",q->value(30).toInt())+
|
||||||
|
QString().sprintf("TFC_LEN_HOURS_OFFSET=%d,",q->value(31).toInt())+
|
||||||
|
QString().sprintf("TFC_LEN_HOURS_LENGTH=%d,",q->value(32).toInt())+
|
||||||
|
QString().sprintf("TFC_LEN_MINUTES_OFFSET=%d,",q->value(33).toInt())+
|
||||||
|
QString().sprintf("TFC_LEN_MINUTES_LENGTH=%d,",q->value(34).toInt())+
|
||||||
|
QString().sprintf("TFC_LEN_SECONDS_OFFSET=%d,",q->value(35).toInt())+
|
||||||
|
QString().sprintf("TFC_LEN_SECONDS_LENGTH=%d,",q->value(36).toInt())+
|
||||||
|
QString().sprintf("TFC_DATA_OFFSET=%d,",q->value(37).toInt())+
|
||||||
|
QString().sprintf("TFC_DATA_LENGTH=%d,",q->value(38).toInt())+
|
||||||
|
QString().sprintf("TFC_EVENT_ID_OFFSET=%d,",q->value(39).toInt())+
|
||||||
|
QString().sprintf("TFC_EVENT_ID_LENGTH=%d,",q->value(40).toInt())+
|
||||||
|
QString().sprintf("TFC_ANNC_TYPE_OFFSET=%d,",q->value(41).toInt())+
|
||||||
|
QString().sprintf("TFC_ANNC_TYPE_LENGTH=%d,",q->value(42).toInt())+
|
||||||
|
|
||||||
|
"MUS_PATH='"+RDEscapeString(q->value(43).toString())+"',"+
|
||||||
|
"MUS_PREIMPORT_CMD='"+RDEscapeString(q->value(44).toString())+"',"+
|
||||||
|
"MUS_IMPORT_TEMPLATE='"+RDEscapeString(q->value(45).toString())+"',"+
|
||||||
|
"MUS_LABEL_CART='"+RDEscapeString(q->value(46).toString())+"',"+
|
||||||
|
"MUS_TRACK_CART='"+RDEscapeString(q->value(47).toString())+"',"+
|
||||||
|
"MUS_BREAK_STRING='"+RDEscapeString(q->value(48).toString())+"',"+
|
||||||
|
"MUS_TRACK_STRING='"+RDEscapeString(q->value(49).toString())+"',"+
|
||||||
|
QString().sprintf("MUS_CART_OFFSET=%d,",q->value(50).toInt())+
|
||||||
|
QString().sprintf("MUS_CART_LENGTH=%d,",q->value(51).toInt())+
|
||||||
|
QString().sprintf("MUS_TITLE_OFFSET=%d,",q->value(52).toInt())+
|
||||||
|
QString().sprintf("MUS_TITLE_LENGTH=%d,",q->value(53).toInt())+
|
||||||
|
QString().sprintf("MUS_HOURS_OFFSET=%d,",q->value(54).toInt())+
|
||||||
|
QString().sprintf("MUS_HOURS_LENGTH=%d,",q->value(55).toInt())+
|
||||||
|
QString().sprintf("MUS_MINUTES_OFFSET=%d,",q->value(56).toInt())+
|
||||||
|
QString().sprintf("MUS_MINUTES_LENGTH=%d,",q->value(57).toInt())+
|
||||||
|
QString().sprintf("MUS_SECONDS_OFFSET=%d,",q->value(58).toInt())+
|
||||||
|
QString().sprintf("MUS_SECONDS_LENGTH=%d,",q->value(59).toInt())+
|
||||||
|
QString().sprintf("MUS_LEN_HOURS_OFFSET=%d,",q->value(60).toInt())+
|
||||||
|
QString().sprintf("MUS_LEN_HOURS_LENGTH=%d,",q->value(61).toInt())+
|
||||||
|
QString().sprintf("MUS_LEN_MINUTES_OFFSET=%d,",q->value(62).toInt())+
|
||||||
|
QString().sprintf("MUS_LEN_MINUTES_LENGTH=%d,",q->value(63).toInt())+
|
||||||
|
QString().sprintf("MUS_LEN_SECONDS_OFFSET=%d,",q->value(64).toInt())+
|
||||||
|
QString().sprintf("MUS_LEN_SECONDS_LENGTH=%d,",q->value(65).toInt())+
|
||||||
|
QString().sprintf("MUS_DATA_OFFSET=%d,",q->value(66).toInt())+
|
||||||
|
QString().sprintf("MUS_DATA_LENGTH=%d,",q->value(67).toInt())+
|
||||||
|
QString().sprintf("MUS_EVENT_ID_OFFSET=%d,",q->value(68).toInt())+
|
||||||
|
QString().sprintf("MUS_EVENT_ID_LENGTH=%d,",q->value(69).toInt())+
|
||||||
|
QString().sprintf("MUS_ANNC_TYPE_OFFSET=%d,",q->value(70).toInt())+
|
||||||
|
QString().sprintf("MUS_ANNC_TYPE_LENGTH=%d",q->value(71).toInt());
|
||||||
|
printf("%s;\n",sql.toUtf8().constData());
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainObject::DumpServiceClocks() const
|
||||||
|
{
|
||||||
|
QString sql;
|
||||||
|
RDSqlQuery *q=NULL;
|
||||||
|
|
||||||
|
printf("--\n");
|
||||||
|
printf("-- Dumping data for table 'SERVICE_CLOCKS'\n");
|
||||||
|
printf("--\n");
|
||||||
|
|
||||||
|
sql=QString("select ")+
|
||||||
|
"SERVICE_NAME,"+ // 00
|
||||||
|
"HOUR,"+ // 01
|
||||||
|
"CLOCK_NAME "+ // 02
|
||||||
|
"from SERVICE_CLOCKS";
|
||||||
|
q=new RDSqlQuery(sql);
|
||||||
|
while(q->next()) {
|
||||||
|
sql=QString("insert into SERVICE_CLOCKS set ")+
|
||||||
|
"SERVICE_NAME='"+RDEscapeString(q->value(0).toString())+"',"+
|
||||||
|
QString().sprintf("HOUR=%d,",q->value(1).toInt())+
|
||||||
|
"CLOCK_NAME='"+RDEscapeString(q->value(2).toString())+"'";
|
||||||
|
printf("%s;\n",sql.toUtf8().constData());
|
||||||
|
}
|
||||||
|
delete q;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc,char *argv[])
|
||||||
|
{
|
||||||
|
QApplication a(argc,argv,false);
|
||||||
|
|
||||||
|
new MainObject();
|
||||||
|
return a.exec();
|
||||||
|
}
|
||||||
47
utils/rdmerge/rdmerge.h
Normal file
47
utils/rdmerge/rdmerge.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
// rddbmgr.h
|
||||||
|
//
|
||||||
|
// Rivendell database merge utility
|
||||||
|
//
|
||||||
|
// (C) Copyright 2020 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
|
||||||
|
// published by the Free Software Foundation.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public
|
||||||
|
// License along with this program; if not, write to the Free Software
|
||||||
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef RDMERGE_H
|
||||||
|
#define RDMERGE_H
|
||||||
|
|
||||||
|
#include <qobject.h>
|
||||||
|
|
||||||
|
#include <rdconfig.h>
|
||||||
|
#include <rdfeed.h>
|
||||||
|
#include <rdstation.h>
|
||||||
|
|
||||||
|
#define RDMERGE_USAGE "[options]\n"
|
||||||
|
|
||||||
|
class MainObject : public QObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MainObject(QObject *parent=0);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void DumpEvents() const;
|
||||||
|
void DumpEventLines() const;
|
||||||
|
void DumpClocks() const;
|
||||||
|
void DumpClockLines() const;
|
||||||
|
void DumpServices() const;
|
||||||
|
void DumpServiceClocks() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // RDMERGE_H
|
||||||
Reference in New Issue
Block a user