2021-04-19 Fred Gleason <fredg@paravelsystems.com>

* Escaped all SQL identifiers in 'importers/'.
	* Replaced " with ' delimiters in all SQL literal strings in
	'importers/'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-04-19 18:37:33 -04:00
parent 536e7874dc
commit a1ce33e344
7 changed files with 310 additions and 313 deletions

View File

@ -21479,3 +21479,7 @@
* Fixed various regressions in rdadmin(1) that caused SQL errors.
2021-04-19 Fred Gleason <fredg@paravelsystems.com>
* Fixed regression in 'RDSystem' that caused SQL errors.
2021-04-19 Fred Gleason <fredg@paravelsystems.com>
* Escaped all SQL identifiers in 'importers/'.
* Replaced " with ' delimiters in all SQL literal strings in
'importers/'.

View File

@ -29,11 +29,6 @@
#include <stdint.h>
#include <errno.h>
#include <qapplication.h>
#include <qfile.h>
#include <qregexp.h>
#include <qstringlist.h>
#include <rdapplication.h>
#include <rd.h>
#include <rdcart.h>
@ -394,9 +389,9 @@ void MainObject::ProcessXmlFile(const QString &xml,const QString &wavname,
cart=new RDCart(cartnum);
cart->setMetadata(&data);
delete cart;
sql=QString("select CUT_NAME from CUTS where ")+
QString().sprintf("CART_NUMBER=%d ",cartnum)+
"order by ORIGIN_DATETIME desc";
sql=QString("select `CUT_NAME` from `CUTS` where ")+
QString().sprintf("`CART_NUMBER`=%d ",cartnum)+
"order by `ORIGIN_DATETIME` desc";
q=new RDSqlQuery(sql);
if(q->first()) {
cut=new RDCut(q->value(0).toString());

View File

@ -47,8 +47,7 @@ MainObject::MainObject(QObject *parent)
//
// Read Command Options
//
RDCmdSwitch *cmd=
new RDCmdSwitch("panel_copy",PANEL_COPY_USAGE);
RDCmdSwitch *cmd=new RDCmdSwitch("panel_copy",PANEL_COPY_USAGE);
delete cmd;
rd_config=new RDConfig(RD_CONF_FILE);
@ -122,7 +121,7 @@ MainObject::MainObject(QObject *parent)
//
// Check Database Versions
//
sql=QString("select DB from VERSION");
sql=QString("select `DB` from `VERSION`");
q=new QSqlQuery(sql,src_db);
if(!q->first()) {
fprintf(stderr,"panel_copy: unable to read source database version\n");
@ -169,26 +168,26 @@ MainObject::MainObject(QObject *parent)
// Copy Entries
//
sql=QString("select ")+
"TYPE,"+ // 00
"OWNER,"+ // 01
"PANEL_NO,"+ // 02
"ROW_NO,"+ // 03
"COLUMN_NO,"+ // 04
"LABEL,"+ // 05
"CART,"+ // 06
"DEFAULT_COLOR "+ // 07
"from PANELS";
"`TYPE`,"+ // 00
"`OWNER`,"+ // 01
"`PANEL_NO`,"+ // 02
"`ROW_NO`,"+ // 03
"`COLUMN_NO`,"+ // 04
"`LABEL`,"+ // 05
"`CART`,"+ // 06
"`DEFAULT_COLOR` "+ // 07
"from `PANELS`";
q=new QSqlQuery(sql,src_db);
while(q->next()) {
sql=QString("insert into PANELS set ")+
QString().sprintf("TYPE=%d,",q->value(0).toInt())+
"OWNER=\""+RDEscapeString(q->value(1).toString())+"\","+
QString().sprintf("PANEL_NO=%d,",q->value(2).toInt())+
QString().sprintf("ROW_NO=%d,",q->value(3).toInt())+
QString().sprintf("COLUMN_NO=%d,",q->value(4).toInt())+
"LABEL=\""+RDEscapeString(q->value(5).toString())+"\","+
QString().sprintf("CART=%d,",q->value(6).toInt())+
"DEFAULT_COLOR=\""+RDEscapeString(q->value(7).toString())+"\"";
sql=QString("insert into `PANELS` set ")+
QString().sprintf("`TYPE`=%d,",q->value(0).toInt())+
"`OWNER`='"+RDEscapeString(q->value(1).toString())+"',"+
QString().sprintf("`PANEL_NO`=%d,",q->value(2).toInt())+
QString().sprintf("`ROW_NO`=%d,",q->value(3).toInt())+
QString().sprintf("`COLUMN_NO`=%d,",q->value(4).toInt())+
"`LABEL`='"+RDEscapeString(q->value(5).toString())+"',"+
QString().sprintf("`CART`=%d,",q->value(6).toInt())+
"`DEFAULT_COLOR`='"+RDEscapeString(q->value(7).toString())+"'";
q1=new QSqlQuery(sql,dest_db);
delete q1;
}

View File

@ -154,7 +154,7 @@ MainObject::MainObject(QObject *parent)
//
// Check Database Versions
//
sql=QString("select DB from VERSION");
sql=QString("select `DB` from `VERSION`");
q=new QSqlQuery(sql,src_db);
if(!q->first()) {
fprintf(stderr,
@ -182,8 +182,8 @@ MainObject::MainObject(QObject *parent)
//
// Check Rivendell Hosts
//
sql=QString("select NAME from STATIONS where ")+
"NAME=\""+RDEscapeString(src_station)+"\"";
sql=QString("select `NAME` from `STATIONS` where ")+
"NAME='"+RDEscapeString(src_station)+"'";
q=new QSqlQuery(sql,src_db);
if(!q->first()) {
fprintf(stderr,
@ -192,8 +192,8 @@ MainObject::MainObject(QObject *parent)
}
delete q;
sql=QString("select NAME from STATIONS where ")+
"NAME=\""+RDEscapeString(dest_station)+"\"";
sql=QString("select `NAME` from `STATIONS` where ")+
"`NAME`='"+RDEscapeString(dest_station)+"'";
q=new QSqlQuery(sql,dest_db);
if(!q->first()) {
fprintf(stderr,
@ -217,8 +217,8 @@ MainObject::MainObject(QObject *parent)
//
// Delete current destination entries
//
sql=QString("delete from RECORDINGS where ")+
"STATION_NAME\""+RDEscapeString(dest_station)+"\"";
sql=QString("delete from `RECORDINGS` where ")+
"`STATION_NAME`='"+RDEscapeString(dest_station)+"'";
q=new QSqlQuery(sql,dest_db);
delete q;
@ -226,94 +226,94 @@ MainObject::MainObject(QObject *parent)
// Copy Entries
//
sql=QString("select ")+
"IS_ACTIVE,"+ // 00
"TYPE,"+ // 01
"CHANNEL,"+ // 02
"CUT_NAME,"+ // 03
"SUN,"+ // 04
"MON,"+ // 05
"TUE,"+ // 06
"WED,"+ // 07
"THU,"+ // 08
"FRI,"+ // 09
"SAT,"+ // 10
"DESCRIPTION,"+ // 11
"START_TYPE,"+ // 12
"START_TIME,"+ // 13
"START_LENGTH,"+ // 14
"START_MATRIX,"+ // 15
"START_LINE,"+ // 16
"START_OFFSET,"+ // 17
"END_TYPE,"+ // 18
"END_TIME,"+ // 19
"END_LENGTH,"+ // 20
"END_MATRIX,"+ // 21
"END_LINE,"+ // 22
"LENGTH,"+ // 23
"TRIM_THRESHOLD,"+ // 24
"NORMALIZE_LEVEL,"+ // 25
"STARTDATE_OFFSET,"+ // 26
"ENDDATE_OFFSET,"+ // 27
"FORMAT,"+ // 28
"CHANNELS,"+ // 29
"SAMPRATE,"+ // 30
"BITRATE,"+ // 31
"QUALITY,"+ // 32
"MACRO_CART,"+ // 33
"SWITCH_INPUT,"+ // 34
"SWITCH_OUTPUT,"+ // 35
"EXIT_CODE,"+ // 36
"ONE_SHOT,"+ // 37
"URL,"+ // 38
"URL_USERNAME,"+ // 39
"URL_PASSWORD "+ // 40
"from RECORDINGS where "+
"STATION_NAME=\""+RDEscapeString(src_station)+"\"";
"`IS_ACTIVE`,"+ // 00
"`TYPE`,"+ // 01
"`CHANNEL`,"+ // 02
"`CUT_NAME`,"+ // 03
"`SUN`,"+ // 04
"`MON`,"+ // 05
"`TUE`,"+ // 06
"`WED`,"+ // 07
"`THU`,"+ // 08
"`FRI`,"+ // 09
"`SAT`,"+ // 10
"`DESCRIPTION`,"+ // 11
"`START_TYPE`,"+ // 12
"`START_TIME`,"+ // 13
"`START_LENGTH`,"+ // 14
"`START_MATRIX`,"+ // 15
"`START_LINE`,"+ // 16
"`START_OFFSET`,"+ // 17
"`END_TYPE`,"+ // 18
"`END_TIME`,"+ // 19
"`END_LENGTH`,"+ // 20
"`END_MATRIX`,"+ // 21
"`END_LINE`,"+ // 22
"`LENGTH`,"+ // 23
"`TRIM_THRESHOLD`,"+ // 24
"`NORMALIZE_LEVEL`,"+ // 25
"`STARTDATE_OFFSET`,"+ // 26
"`ENDDATE_OFFSET`,"+ // 27
"`FORMAT`,"+ // 28
"`CHANNELS`,"+ // 29
"`SAMPRATE`,"+ // 30
"`BITRATE`,"+ // 31
"`QUALITY`,"+ // 32
"`MACRO_CART`,"+ // 33
"`SWITCH_INPUT`,"+ // 34
"`SWITCH_OUTPUT`,"+ // 35
"`EXIT_CODE`,"+ // 36
"`ONE_SHOT`,"+ // 37
"`URL`,"+ // 38
"`URL_USERNAME`,"+ // 39
"`URL_PASSWORD` "+ // 40
"from `RECORDINGS` where "+
"`STATION_NAME`='"+RDEscapeString(src_station)+"'";
q=new QSqlQuery(sql,src_db);
while(q->next()) {
sql=QString("insert into RECORDINGS set ")+
":IS_ACTIVE=\""+RDEscapeString(q->value(0).toString())+"\","+
QString().sprintf("TYPE=%d,",q->value(1).toInt())+
QString().sprintf("CHANNEL=%u,",q->value(2).toUInt())+
"CUT_NAME=\""+RDEscapeString(q->value(3).toString())+"\","+
"SUN=\""+RDEscapeString(q->value(4).toString())+"\","+
"MON=\""+RDEscapeString(q->value(5).toString())+"\","+
"TUE=\""+RDEscapeString(q->value(6).toString())+"\","+
"WED=\""+RDEscapeString(q->value(7).toString())+"\","+
"THU=\""+RDEscapeString(q->value(8).toString())+"\","+
"FRI=\""+RDEscapeString(q->value(9).toString())+"\","+
"SAT=\""+RDEscapeString(q->value(10).toString())+"\","+
"DESCRIPTION=\""+RDEscapeString(q->value(11).toString())+"\","+
QString().sprintf("START_TYPE=%d,",q->value(12).toInt())+
"START_TIME=\""+RDEscapeString(q->value(13).toString())+"\","+
QString().sprintf("START_LENGTH=%d,",q->value(14).toInt())+
QString().sprintf("START_MATRIX=%d,",q->value(15).toInt())+
QString().sprintf("START_LINE=%d,",q->value(16).toInt())+
QString().sprintf("START_OFFSET=%d,",q->value(17).toInt())+
QString().sprintf("END_TYPE=%d,",q->value(18).toInt())+
"END_TIME=\""+RDEscapeString(q->value(19).toString())+"\","+
QString().sprintf("END_LENGTH=%d,",q->value(20).toInt())+
QString().sprintf("END_MATRIX=%d,",q->value(21).toInt())+
QString().sprintf("END_LINE=%d,",q->value(22).toInt())+
QString().sprintf("LENGTH=%u,",q->value(23).toUInt())+
QString().sprintf("TRIM_THRESHOLD=%d,",q->value(24).toInt())+
QString().sprintf("NORMALIZE_LEVEL=%d,",q->value(25).toInt())+
QString().sprintf("STARTDATE_OFFSET=%u,",q->value(26).toUInt())+
QString().sprintf("ENDDATE_OFFSET=%u,",q->value(27).toUInt())+
QString().sprintf("FORMAT=%d,",q->value(28).toInt())+
QString().sprintf("CHANNELS=%d,",q->value(29).toInt())+
QString().sprintf("SAMPRATE=%d,",q->value(30).toInt())+
QString().sprintf("BITRATE=%d,",q->value(31).toInt())+
QString().sprintf("QUALITY=%d,",q->value(32).toInt())+
QString().sprintf("MACRO_CART=%d,",q->value(33).toInt())+
QString().sprintf("SWITCH_INPUT=%d,",q->value(34).toInt())+
QString().sprintf("SWITCH_OUTPUT=%d,",q->value(35).toInt())+
QString().sprintf("EXIT_CODE=%d,",q->value(36).toInt())+
"ONE_SHOT=\""+RDEscapeString(q->value(37).toString())+"\","+
"URL=\""+RDEscapeString(q->value(38).toString())+"\","+
"URL_USERNAME=\""+RDEscapeString(q->value(39).toString())+"\","+
"URL_PASSWORD=\""+RDEscapeString(q->value(40).toString())+"\","+
"STATION_NAME=\""+RDEscapeString(dest_station)+"\"";
sql=QString("insert into `RECORDINGS` set ")+
"`IS_ACTIVE`='"+RDEscapeString(q->value(0).toString())+"',"+
QString().sprintf("`TYPE`=%d,",q->value(1).toInt())+
QString().sprintf("`CHANNEL`=%u,",q->value(2).toUInt())+
"`CUT_NAME`='"+RDEscapeString(q->value(3).toString())+"',"+
"`SUN`='"+RDEscapeString(q->value(4).toString())+"',"+
"`MON`='"+RDEscapeString(q->value(5).toString())+"',"+
"`TUE`='"+RDEscapeString(q->value(6).toString())+"',"+
"`WED`='"+RDEscapeString(q->value(7).toString())+"',"+
"`THU`='"+RDEscapeString(q->value(8).toString())+"',"+
"`FRI`='"+RDEscapeString(q->value(9).toString())+"',"+
"`SAT`='"+RDEscapeString(q->value(10).toString())+"',"+
"`DESCRIPTION`='"+RDEscapeString(q->value(11).toString())+"',"+
QString().sprintf("`START_TYPE`=%d,",q->value(12).toInt())+
"`START_TIME`='"+RDEscapeString(q->value(13).toString())+"',"+
QString().sprintf("`START_LENGTH`=%d,",q->value(14).toInt())+
QString().sprintf("`START_MATRIX`=%d,",q->value(15).toInt())+
QString().sprintf("`START_LINE`=%d,",q->value(16).toInt())+
QString().sprintf("`START_OFFSET`=%d,",q->value(17).toInt())+
QString().sprintf("`END_TYPE`=%d,",q->value(18).toInt())+
"`END_TIME`='"+RDEscapeString(q->value(19).toString())+"',"+
QString().sprintf("`END_LENGTH`=%d,",q->value(20).toInt())+
QString().sprintf("`END_MATRIX`=%d,",q->value(21).toInt())+
QString().sprintf("`END_LINE`=%d,",q->value(22).toInt())+
QString().sprintf("`LENGTH`=%u,",q->value(23).toUInt())+
QString().sprintf("`TRIM_THRESHOLD`=%d,",q->value(24).toInt())+
QString().sprintf("`NORMALIZE_LEVEL`=%d,",q->value(25).toInt())+
QString().sprintf("`STARTDATE_OFFSET`=%u,",q->value(26).toUInt())+
QString().sprintf("`ENDDATE_OFFSET`=%u,",q->value(27).toUInt())+
QString().sprintf("`FORMAT`=%d,",q->value(28).toInt())+
QString().sprintf("`CHANNELS`=%d,",q->value(29).toInt())+
QString().sprintf("`SAMPRATE`=%d,",q->value(30).toInt())+
QString().sprintf("`BITRATE`=%d,",q->value(31).toInt())+
QString().sprintf("`QUALITY`=%d,",q->value(32).toInt())+
QString().sprintf("`MACRO_CART`=%d,",q->value(33).toInt())+
QString().sprintf("`SWITCH_INPUT`=%d,",q->value(34).toInt())+
QString().sprintf("`SWITCH_OUTPUT`=%d,",q->value(35).toInt())+
QString().sprintf("`EXIT_CODE`=%d,",q->value(36).toInt())+
"`ONE_SHOT`='"+RDEscapeString(q->value(37).toString())+"',"+
"`URL`='"+RDEscapeString(q->value(38).toString())+"',"+
"`URL_USERNAME`='"+RDEscapeString(q->value(39).toString())+"',"+
"`URL_PASSWORD`='"+RDEscapeString(q->value(40).toString())+"',"+
"`STATION_NAME`='"+RDEscapeString(dest_station)+"'";
q1=new QSqlQuery(sql,dest_db);
delete q1;
}

View File

@ -188,9 +188,9 @@ MainObject::MainObject(QObject *parent)
// Verify that default group exists
//
sql=QString("select ")+
"NAME "+
"from GROUPS where "+
"NAME=\""+RDEscapeString(default_group)+"\"";
"`NAME` "+
"from `GROUPS` where "+
"`NAME`='"+RDEscapeString(default_group)+"'";
q=new QSqlQuery(sql,filter_db);
if(!q->next()) {
fprintf(stderr,"rivendell_filter: default group does not exist\n");
@ -202,37 +202,37 @@ MainObject::MainObject(QObject *parent)
// Transfer Loop
//
sql=QString().sprintf("select ")+
"NUMBER,"+ // 00
"TYPE,"+ // 01
"GROUP_NAME,"+ // 02
"TITLE,"+ // 03
"ARTIST,"+ // 04
"ALBUM,"+ // 05
"YEAR,"+ // 06
"LABEL,"+ // 08
"CLIENT,"+ // 09
"AGENCY,"+ // 10
"PUBLISHER,"+ // 11
"COMPOSER,"+ // 12
"USER_DEFINED,"+ // 13
"USAGE_CODE,"+ // 14
"FORCED_LENGTH,"+ // 15
"AVERAGE_LENGTH,"+ // 16
"LENGTH_DEVIATION,"+ // 17
"AVERAGE_SEGUE_LENGTH,"+ // 18
"AVERAGE_HOOK_LENGTH,"+ // 19
"CUT_QUANTITY,"+ // 20
"LAST_CUT_PLAYED,"+ // 21
"PLAY_ORDER,"+ // 22
"VALIDITY,"+ // 23
"ENFORCE_LENGTH,"+ // 24
"PRESERVE_PITCH,"+ // 25
"ASYNCRONOUS,"+ // 26
"OWNER,"+ // 27
"MACROS,"+ // 28
"SCHED_CODES "+ // 29
"from CART where "+
QString().sprintf("(NUMBER>=%u)&&(NUMBER<=%u)",start_cartnum,end_cartnum);
"`NUMBER`,"+ // 00
"`TYPE`,"+ // 01
"`GROUP_NAME`,"+ // 02
"`TITLE`,"+ // 03
"`ARTIST`,"+ // 04
"`ALBUM`,"+ // 05
"`YEAR`,"+ // 06
"`LABEL`,"+ // 08
"`CLIENT`,"+ // 09
"`AGENCY`,"+ // 10
"`PUBLISHER`,"+ // 11
"`COMPOSER`,"+ // 12
"`USER_DEFINED`,"+ // 13
"`USAGE_CODE`,"+ // 14
"`FORCED_LENGTH`,"+ // 15
"`AVERAGE_LENGTH`,"+ // 16
"`LENGTH_DEVIATION`,"+ // 17
"`AVERAGE_SEGUE_LENGTH`,"+ // 18
"`AVERAGE_HOOK_LENGTH`,"+ // 19
"`CUT_QUANTITY`,"+ // 20
"`LAST_CUT_PLAYED`,"+ // 21
"`PLAY_ORDER`,"+ // 22
"`VALIDITY`,"+ // 23
"`ENFORCE_LENGTH`,"+ // 24
"`PRESERVE_PITCH`,"+ // 25
"`ASYNCRONOUS`,"+ // 26
"`OWNER`,"+ // 27
"`MACROS`,"+ // 28
"`SCHED_CODES` "+ // 29
"from `CART` where "+
QString().sprintf("(`NUMBER`>=%u)&&(`NUMBER`<=%u)",start_cartnum,end_cartnum);
q=new QSqlQuery(sql,ext_db);
while(q->next()) {
printf("Transferring cart %06u [%s]...",q->value(0).toUInt(),
@ -242,8 +242,8 @@ MainObject::MainObject(QObject *parent)
//
// Validate Group
//
sql=QString("select NAME from GROUPS where ")+
"NAME=\""+RDEscapeString(q->value(2).toString())+"\"";
sql=QString("select `NAME` from `GROUPS` where ")+
"`NAME`='"+RDEscapeString(q->value(2).toString())+"'";
q1=new QSqlQuery(sql,filter_db);
if(q1->first()) {
group=q->value(2).toString();
@ -256,18 +256,18 @@ MainObject::MainObject(QObject *parent)
//
// Purge old entries
//
sql=QString().sprintf("select CUT_NAME from CUTS where CART_NUMBER=%u",
sql=QString().sprintf("select `CUT_NAME` from `CUTS` where `CART_NUMBER`=%u",
q->value(0).toUInt());
q1=new QSqlQuery(sql,filter_db);
while(q1->next()) {
unlink(RDCut::pathName(q1->value(0).toString()).toUtf8());
}
delete q1;
sql=QString().sprintf("delete from CUTS where CART_NUMBER=%u",
sql=QString().sprintf("delete from `CUTS` where `CART_NUMBER`=%u",
q->value(0).toUInt());
q1=new QSqlQuery(sql,filter_db);
delete q1;
sql=QString().sprintf("delete from CART where NUMBER=%u",
sql=QString().sprintf("delete from `CART` where `NUMBER`=%u",
q->value(0).toUInt());
q1=new QSqlQuery(sql,filter_db);
delete q1;
@ -279,79 +279,79 @@ MainObject::MainObject(QObject *parent)
owner="null";
}
else {
owner=QString("\"")+RDEscapeString(q->value(26).toString())+"\"";
owner=QString("'")+RDEscapeString(q->value(26).toString())+"'";
}
sql=QString("insert into CART set ")+
QString().sprintf("NUMBER=%u,",q->value(0).toUInt())+
QString().sprintf("TYPE=%u,",q->value(1).toUInt())+
"GROUP_NAME=\""+RDEscapeString(group)+"\","+
"TITLE=\""+RDEscapeString(q->value(3).toString())+"\","+
"ARTIST=\""+RDEscapeString(q->value(4).toString())+"\","+
"ALBUM=\""+RDEscapeString(q->value(5).toString())+"\","+
"YEAR=%s,"+RDCheckDateTime(q->value(6).toDate(),"yyyy-MM-dd")+","+
"LABEL=\""+RDEscapeString(q->value(7).toString())+"\","+
"CLIENT=\""+RDEscapeString(q->value(8).toString())+"\","+
"AGENCY=\""+RDEscapeString(q->value(9).toString())+"\","+
"PUBLISHER=\""+RDEscapeString(q->value(10).toString())+"\","+
"COMPOSER=\""+RDEscapeString(q->value(11).toString())+"\","+
"USER_DEFINED=\""+RDEscapeString(q->value(12).toString())+"\","+
"USAGE_CODE=\""+RDEscapeString(q->value(13).toString())+"\","+
QString().sprintf("FORCED_LENGTH=%u,",q->value(14).toUInt())+
QString().sprintf("AVERAGE_LENGTH=%u,",q->value(15).toUInt())+
QString().sprintf("LENGTH_DEVIATION=%u,",q->value(16).toUInt())+
QString().sprintf("AVERAGE_SEGUE_LENGTH=%u,",q->value(17).toUInt())+
QString().sprintf("AVERAGE_HOOK_LENGTH=%u,",q->value(18).toUInt())+
QString().sprintf("CUT_QUANTITY=%u,",q->value(19).toUInt())+
QString().sprintf("LAST_CUT_PLAYED=%u,",q->value(20).toUInt())+
QString().sprintf("PLAY_ORDER=%u,",q->value(21).toUInt())+
QString().sprintf("VALIDITY=%u,",q->value(22).toUInt())+
"ENFORCE_LENGTH=\""+RDEscapeString(q->value(23).toString())+"\","+
"PRESERVE_PITCH=\""+RDEscapeString(q->value(24).toString())+"\","+
"ASYNCRONOUS=\""+RDEscapeString(q->value(25).toString())+"\","+
"OWNER="+owner+","+
"MACROS=\""+RDEscapeString(q->value(27).toString())+"\","+
"SCHED_CODES=\""+RDEscapeString(q->value(28).toString())+"\"";
sql=QString("insert into `CART` set ")+
QString().sprintf("`NUMBER`=%u,",q->value(0).toUInt())+
QString().sprintf("`TYPE`=%u,",q->value(1).toUInt())+
"`GROUP_NAME`='"+RDEscapeString(group)+"',"+
"`TITLE`='"+RDEscapeString(q->value(3).toString())+"',"+
"`ARTIST`='"+RDEscapeString(q->value(4).toString())+"',"+
"`ALBUM`='"+RDEscapeString(q->value(5).toString())+"',"+
"`YEAR`=%s,"+RDCheckDateTime(q->value(6).toDate(),"yyyy-MM-dd")+","+
"`LABEL`='"+RDEscapeString(q->value(7).toString())+"',"+
"`CLIENT`='"+RDEscapeString(q->value(8).toString())+"',"+
"`AGENCY`='"+RDEscapeString(q->value(9).toString())+"',"+
"`PUBLISHER`='"+RDEscapeString(q->value(10).toString())+"',"+
"`COMPOSER`='"+RDEscapeString(q->value(11).toString())+"',"+
"`USER_DEFINED`='"+RDEscapeString(q->value(12).toString())+"',"+
"`USAGE_CODE`='"+RDEscapeString(q->value(13).toString())+"',"+
QString().sprintf("`FORCED_LENGTH`=%u,",q->value(14).toUInt())+
QString().sprintf("`AVERAGE_LENGTH`=%u,",q->value(15).toUInt())+
QString().sprintf("`LENGTH_DEVIATION`=%u,",q->value(16).toUInt())+
QString().sprintf("`AVERAGE_SEGUE_LENGTH`=%u,",q->value(17).toUInt())+
QString().sprintf("`AVERAGE_HOOK_LENGTH`=%u,",q->value(18).toUInt())+
QString().sprintf("`CUT_QUANTITY`=%u,",q->value(19).toUInt())+
QString().sprintf("`LAST_CUT_PLAYED`=%u,",q->value(20).toUInt())+
QString().sprintf("`PLAY_ORDER`=%u,",q->value(21).toUInt())+
QString().sprintf("`VALIDITY`=%u,",q->value(22).toUInt())+
"`ENFORCE_LENGTH`='"+RDEscapeString(q->value(23).toString())+"',"+
"`PRESERVE_PITCH`='"+RDEscapeString(q->value(24).toString())+"',"+
"`ASYNCRONOUS`='"+RDEscapeString(q->value(25).toString())+"',"+
"`OWNER`="+owner+","+
"`MACROS`='"+RDEscapeString(q->value(27).toString())+"',"+
"`SCHED_CODES`='"+RDEscapeString(q->value(28).toString())+"'";
q1=new QSqlQuery(sql,filter_db);
delete q1;
sql=QString("select ")+
"CUT_NAME,"+ // 00
"EVERGREEN,"+ // 01
"DESCRIPTION,"+ // 02
"OUTCUE,"+ // 03
"ISRC,"+ // 04
"LENGTH,"+ // 05
"ORIGIN_DATETIME,"+ // 06
"START_DATETIME,"+ // 07
"END_DATETIME,"+ // 08
"SUN,"+ // 09
"MON,"+ // 10
"TUE,"+ // 11
"WED,"+ // 12
"THU,"+ // 13
"FRI,"+ // 14
"SAT,"+ // 15
"START_DAYPART,"+ // 16
"END_DAYPART,"+ // 17
"ORIGIN_NAME,"+ // 18
"WEIGHT,"+ // 19
"VALIDITY,"+ // 20
"CODING_FORMAT,"+ // 21
"BIT_RATE,"+ // 22
"CHANNELS,"+ // 23
"PLAY_GAIN,"+ // 24
"START_POINT,"+ // 25
"END_POINT,"+ // 26
"FADEUP_POINT,"+ // 27
"FADEDOWN_POINT,"+ // 28
"SEGUE_START_POINT,"+ // 29
"SEGUE_END_POINT,"+ // 30
"SEGUE_GAIN,"+ // 31
"HOOK_START_POINT,"+ // 32
"HOOK_END_POINT,"+ // 33
"TALK_START_POINT,"+ // 34
"TALK_END_POINT "+ // 35
"from CUTS where "+
QString().sprintf("CART_NUMBER=%u",q->value(0).toUInt());
"`CUT_NAME`,"+ // 00
"`EVERGREEN`,"+ // 01
"`DESCRIPTION`,"+ // 02
"`OUTCUE`,"+ // 03
"`ISRC`,"+ // 04
"`LENGTH`,"+ // 05
"`ORIGIN_DATETIME`,"+ // 06
"`START_DATETIME`,"+ // 07
"`END_DATETIME`,"+ // 08
"`SUN`,"+ // 09
"`MON`,"+ // 10
"`TUE`,"+ // 11
"`WED`,"+ // 12
"`THU`,"+ // 13
"`FRI`,"+ // 14
"`SAT`,"+ // 15
"`START_DAYPART`,"+ // 16
"`END_DAYPART`,"+ // 17
"`ORIGIN_NAME`,"+ // 18
"`WEIGHT`,"+ // 19
"`VALIDITY`,"+ // 20
"`CODING_FORMAT`,"+ // 21
"`BIT_RATE`,"+ // 22
"`CHANNELS`,"+ // 23
"`PLAY_GAIN`,"+ // 24
"`START_POINT`,"+ // 25
"`END_POINT`,"+ // 26
"`FADEUP_POINT`,"+ // 27
"`FADEDOWN_POINT`,"+ // 28
"`SEGUE_START_POINT`,"+ // 29
"`SEGUE_END_POINT`,"+ // 30
"`SEGUE_GAIN`,"+ // 31
"`HOOK_START_POINT`,"+ // 32
"`HOOK_END_POINT`,"+ // 33
"`TALK_START_POINT`,"+ // 34
"`TALK_END_POINT` "+ // 35
"from `CUTS` where "+
QString().sprintf("`CART_NUMBER`=%u",q->value(0).toUInt());
q1=new QSqlQuery(sql,ext_db);
while(q1->next()) {
if(q1->value(7).isNull()) {
@ -380,45 +380,45 @@ MainObject::MainObject(QObject *parent)
else {
end_daypart=RDCheckDateTime(q1->value(17).toTime(),"hh:mm:ss");
}
sql=QString("insert into CUTS set ")+
"CUT_NAME=\""+RDEscapeString(q1->value(0).toString())+"\","+
QString().sprintf("CART_NUMBER=%u,",q->value(0).toUInt())+
"EVERGREEN=\""+RDEscapeString(q1->value(1).toString())+"\","+
"DESCRIPTION=\""+RDEscapeString(q1->value(2).toString())+"\","+
"OUTCUE=\""+RDEscapeString(q1->value(3).toString())+"\","+
"ISRC=\""+RDEscapeString(q1->value(4).toString())+"\","+
QString().sprintf("LENGTH=%u,",q1->value(5).toUInt())+
"ORIGIN_DATETIME=\""+RDEscapeString(q1->value(6).toString())+"\","+
"START_DATETIME="+start_datetime+","+
"END_DATETIME="+end_datetime+","+
"SUN=\""+RDEscapeString(q1->value(9).toString())+"\","+
"MON=\""+RDEscapeString(q1->value(10).toString())+"\","+
"TUE=\""+RDEscapeString(q1->value(11).toString())+"\","+
"WED=\""+RDEscapeString(q1->value(12).toString())+"\","+
"THU=\""+RDEscapeString(q1->value(13).toString())+"\","+
"FRI=\""+RDEscapeString(q1->value(14).toString())+"\","+
"SAT=\""+RDEscapeString(q1->value(15).toString())+"\","+
"START_DAYPART="+start_daypart+","+
"END_DAYPART="+end_daypart+","+
"ORIGIN_NAME=\""+RDEscapeString(q1->value(18).toString())+"\","+
QString().sprintf("WEIGHT=%u,",q1->value(19).toUInt())+
QString().sprintf("VALIDITY=%u,",q1->value(20).toUInt())+
QString().sprintf("CODING_FORMAT=%u,",q1->value(21).toUInt())+
QString().sprintf("SAMPLE_RATE=%u,",q1->value(22).toUInt())+
QString().sprintf("BIT_RATE=%u,",q1->value(23).toUInt())+
QString().sprintf("CHANNELS=%u,",q1->value(24).toUInt())+
QString().sprintf("PLAY_GAIN=%d,",q1->value(25).toInt())+
QString().sprintf("START_POINT=%d,",q1->value(26).toInt())+
QString().sprintf("END_POINT=%d,",q1->value(27).toInt())+
QString().sprintf("FADEUP_POINT=%d,",q1->value(28).toInt())+
QString().sprintf("FADEDOWN_POINT=%d,",q1->value(29).toInt())+
QString().sprintf("SEGUE_START_POINT=%d,",q1->value(30).toInt())+
QString().sprintf("SEGUE_END_POINT=%d,",q1->value(31).toInt())+
QString().sprintf("SEGUE_GAIN=%d,",q1->value(32).toInt())+
QString().sprintf("HOOK_START_POINT=%d,",q1->value(33).toInt())+
QString().sprintf("HOOK_END_POINT=%d,",q1->value(34).toInt())+
QString().sprintf("TALK_START_POINT=%d,",q1->value(35).toInt())+
QString().sprintf("TALK_END_POINT=%d",q1->value(36).toInt());
sql=QString("insert into `CUTS` set ")+
"`CUT_NAME`='"+RDEscapeString(q1->value(0).toString())+"',"+
QString().sprintf("`CART_NUMBER`=%u,",q->value(0).toUInt())+
"`EVERGREEN`='"+RDEscapeString(q1->value(1).toString())+"',"+
"`DESCRIPTION`='"+RDEscapeString(q1->value(2).toString())+"',"+
"`OUTCUE`='"+RDEscapeString(q1->value(3).toString())+"',"+
"`ISRC`='"+RDEscapeString(q1->value(4).toString())+"',"+
QString().sprintf("`LENGTH`=%u,",q1->value(5).toUInt())+
"`ORIGIN_DATETIME`='"+RDEscapeString(q1->value(6).toString())+"',"+
"`START_DATETIME`="+start_datetime+","+
"`END_DATETIME`="+end_datetime+","+
"`SUN`='"+RDEscapeString(q1->value(9).toString())+"',"+
"`MON`='"+RDEscapeString(q1->value(10).toString())+"',"+
"`TUE`='"+RDEscapeString(q1->value(11).toString())+"',"+
"`WED`='"+RDEscapeString(q1->value(12).toString())+"',"+
"`THU`='"+RDEscapeString(q1->value(13).toString())+"',"+
"`FRI`='"+RDEscapeString(q1->value(14).toString())+"',"+
"`SAT`='"+RDEscapeString(q1->value(15).toString())+"',"+
"`START_DAYPART`="+start_daypart+","+
"`END_DAYPART`="+end_daypart+","+
"`ORIGIN_NAME`='"+RDEscapeString(q1->value(18).toString())+"',"+
QString().sprintf("`WEIGHT`=%u,",q1->value(19).toUInt())+
QString().sprintf("`VALIDITY`=%u,",q1->value(20).toUInt())+
QString().sprintf("`CODING_FORMAT`=%u,",q1->value(21).toUInt())+
QString().sprintf("`SAMPLE_RATE`=%u,",q1->value(22).toUInt())+
QString().sprintf("`BIT_RATE`=%u,",q1->value(23).toUInt())+
QString().sprintf("`CHANNELS`=%u,",q1->value(24).toUInt())+
QString().sprintf("`PLAY_GAIN`=%d,",q1->value(25).toInt())+
QString().sprintf("`START_POINT`=%d,",q1->value(26).toInt())+
QString().sprintf("`END_POINT`=%d,",q1->value(27).toInt())+
QString().sprintf("`FADEUP_POINT`=%d,",q1->value(28).toInt())+
QString().sprintf("`FADEDOWN_POINT`=%d,",q1->value(29).toInt())+
QString().sprintf("`SEGUE_START_POINT`=%d,",q1->value(30).toInt())+
QString().sprintf("`SEGUE_END_POINT`=%d,",q1->value(31).toInt())+
QString().sprintf("`SEGUE_GAIN`=%d,",q1->value(32).toInt())+
QString().sprintf("`HOOK_START_POINT`=%d,",q1->value(33).toInt())+
QString().sprintf("`HOOK_END_POINT`=%d,",q1->value(34).toInt())+
QString().sprintf("`TALK_START_POINT`=%d,",q1->value(35).toInt())+
QString().sprintf("`TALK_END_POINT`=%d",q1->value(36).toInt());
q2=new QSqlQuery(sql,filter_db);
delete q2;
ok=RDCopy(ext_audiodir+q1->value(0).toString()+"."+RD_AUDIO_EXTENSION,

View File

@ -128,53 +128,53 @@ void MainObject::InjectLine(char *line)
//
// Initialize the SQL clause
//
QString base_sql=QString("insert into RECORDINGS set ")+
"STATION_NAME=\""+RDEscapeString(rda->config()->sasStation())+"\","+
QString().sprintf("CHANNEL=%d,",rda->config()->sasMatrix());
QString base_sql=QString("insert into `RECORDINGS` set ")+
"`STATION_NAME`='"+RDEscapeString(rda->config()->sasStation())+"',"+
QString().sprintf("`CHANNEL`=%d,",rda->config()->sasMatrix());
//
// Day of the week fields
//
if(line[0]=='X') {
base_sql+="MON=\"Y\",";
base_sql+="`MON`='Y',";
}
if(line[1]=='X') {
base_sql+="TUE=\"Y\",";
base_sql+="`TUE`='Y',";
}
if(line[2]=='X') {
base_sql+="WED=\"Y\",";
base_sql+="`WED`='Y',";
}
if(line[3]=='X') {
base_sql+="THU=\"Y\",";
base_sql+="`THU`='Y',";
}
if(line[4]=='X') {
base_sql+="FRI=\"Y\",";
base_sql+="`FRI`='Y',";
}
if(line[5]=='X') {
base_sql+="SAT=\"Y\",";
base_sql+="`SAT`='Y',";
}
if(line[6]=='X') {
base_sql+="SUN=\"Y\",";
base_sql+="`SUN`='Y',";
}
//
// Time
//
line[17]=0;
base_sql+=QString().sprintf("START_TIME=\"%s\",",line+9);
base_sql+=QString().sprintf("`START_TIME`='%s',",line+9);
//
// Title
//
line[60]=0;
temp=QString(line+19).trimmed();
base_sql+=QString("DESCRIPTION=\"")+RDEscapeString(temp)+"\",";
base_sql+=QString("`DESCRIPTION`='")+RDEscapeString(temp)+"',";
//
// Active Flag
//
if(line[77]=='I') {
base_sql+="IS_ACTIVE=\"N\",";
base_sql+="`IS_ACTIVE`='N',";
}
//
@ -214,9 +214,8 @@ void MainObject::InjectSwitchEvent(QString sql,int input,int output)
//
// Input and Output
//
sql+=QString().sprintf("SWITCH_INPUT=%d,SWITCH_OUTPUT=%d",input,output);
RDSqlQuery *q=new RDSqlQuery(sql);
delete q;
sql+=QString().sprintf("`SWITCH_INPUT`=%d,`SWITCH_OUTPUT`=%d",input,output);
RDSqlQuery::apply(sql);
filter_switch_count++;
}
@ -226,12 +225,12 @@ void MainObject::InjectCartEvent(QString sql,int gpo)
//
// Event Type
//
sql+="TYPE=1,";
sql+="`TYPE`=1,";
//
// Macro Cart
//
sql+=QString().sprintf("MACRO_CART=%d",gpo+rda->config()->sasBaseCart());
sql+=QString().sprintf("`MACRO_CART`=%d",gpo+rda->config()->sasBaseCart());
filter_macro_count++;
RDSqlQuery *q=new RDSqlQuery(sql);
delete q;

View File

@ -203,33 +203,33 @@ bool MainObject::ImportCut(RDGroup *group,struct WingsRecord *rec,
printf("Importing %s - %s to cart %u, group %s\n",
rec->filename,rec->title,cartnum,group->name().toUtf8().constData());
sql=QString("insert into CART set ")+
QString().sprintf("NUMBER=%u,",cartnum)+
"GROUP_NAME=\""+RDEscapeString(group->name())+"\","+
"TITLE=\""+RDEscapeString(rec->title)+"\","+
"ARTIST=\""+RDEscapeString(rec->artist)+"\","+
"ALBUM=\""+RDEscapeString(rec->album)+"\","+
"CUT_QUANTITY=1,"+
QString().sprintf("TYPE=%d,",RDCart::Audio)+
QString().sprintf("FORCED_LENGTH=%u,",wavefile->getExtTimeLength())+
QString().sprintf("AVERAGE_LENGTH=%u,",wavefile->getExtTimeLength())+
"USER_DEFINED=\""+RDEscapeString(rec->filename)+"."+
RDEscapeString(rec->extension)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("insert into `CART` set ")+
QString().sprintf("`NUMBER`=%u,",cartnum)+
"`GROUP_NAME`='"+RDEscapeString(group->name())+"',"+
"`TITLE`='"+RDEscapeString(rec->title)+"',"+
"`ARTIST`='"+RDEscapeString(rec->artist)+"',"+
"`ALBUM`='"+RDEscapeString(rec->album)+"',"+
"`CUT_QUANTITY`=1,"+
QString().sprintf("`TYPE`=%d,",RDCart::Audio)+
QString().sprintf("`FORCED_LENGTH`=%u,",wavefile->getExtTimeLength())+
QString().sprintf("`AVERAGE_LENGTH`=%u,",wavefile->getExtTimeLength())+
"`USER_DEFINED`='"+RDEscapeString(rec->filename)+"."+
RDEscapeString(rec->extension)+"'";
RDSqlQuery::apply(sql);
RDCut::create(cartnum,1);
sql=QString("update CUTS set ")+
"DESCRIPTION=\""+RDEscapeString(rec->title)+"\","+
"ORIGIN_DATETIME=now(),"+
"ORIGIN_NAME=\""+RDEscapeString(rda->config()->stationName())+"\","+
QString().sprintf("CODING_FORMAT=%d,",format)+
QString().sprintf("SAMPLE_RATE=%u,",wavefile->getSamplesPerSec())+
QString().sprintf("CHANNELS=%d,",wavefile->getChannels())+
QString().sprintf("BIT_RATE=%d,",wavefile->getHeadBitRate())+
QString().sprintf("LENGTH=%u,",wavefile->getExtTimeLength())+
"START_POINT=0,"+
QString().sprintf("END_POINT=%d where ",wavefile->getExtTimeLength())+
"CUT_NAME=\""+RDCut::cutName(cartnum,1)+"\"";
sql=QString("update `CUTS` set ")+
"`DESCRIPTION`='"+RDEscapeString(rec->title)+"',"+
"`ORIGIN_DATETIME`=now(),"+
"`ORIGIN_NAME`='"+RDEscapeString(rda->config()->stationName())+"',"+
QString().sprintf("`CODING_FORMAT`=%d,",format)+
QString().sprintf("`SAMPLE_RATE`=%u,",wavefile->getSamplesPerSec())+
QString().sprintf("`CHANNELS`=%d,",wavefile->getChannels())+
QString().sprintf("`BIT_RATE`=%d,",wavefile->getHeadBitRate())+
QString().sprintf("`LENGTH`=%u,",wavefile->getExtTimeLength())+
"`START_POINT`=0,"+
QString().sprintf("`END_POINT`=%d where ",wavefile->getExtTimeLength())+
"`CUT_NAME`='"+RDCut::cutName(cartnum,1)+"'";
q=new RDSqlQuery(sql);
delete q;