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

* Added a 'SERVICE_CLOCKS' table to the database.
	* Incremented the database version to 259.
	* Modified 'rdlogmanager/edit_clock.cpp' to use the new
	'SERVICE_CLOCKS' table.
	* Modified 'rdlogmanager/list_clocks.cpp' to use the new
	'SERVICE_CLOCKS' table.
This commit is contained in:
Fred Gleason
2016-07-25 15:18:14 -04:00
parent fdc40e8bbb
commit 9550815023
10 changed files with 326 additions and 188 deletions

View File

@@ -800,16 +800,15 @@ bool RDSvc::generateLog(const QDate &date,const QString &logname,
delete q;
}
RDCreateLogTable(RDLog::tableName(logname));
// RDCreateLogTable(QString().sprintf("%s_LOG",(const char *)logname_esc));
emit generationProgress(1);
//
// Generate Events
//
for(int i=0;i<24;i++) {
sql=QString().sprintf("select CLOCK%d from SERVICES where NAME=\"%s\"",
24*(date.dayOfWeek()-1)+i,
(const char *)RDEscapeString(svc_name));
sql=QString("select CLOCK_NAME from SERVICE_CLOCKS where ")+
"(SERVICE_NAME=\""+RDEscapeString(svc_name)+"\")&&"+
QString().sprintf("(HOUR=%d)",24*(date.dayOfWeek()-1)+i);
q=new RDSqlQuery(sql);
if(q->first()) {
if((!q->value(0).isNull())&&(!q->value(0).toString().isEmpty())) {
@@ -1119,119 +1118,133 @@ void RDSvc::create(const QString exemplar) const
delete q1;
}
delete q;
for(int i=0;i<168;i++) {
sql=QString("insert into SERVICE_CLOCKS set ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\","+
QString().sprintf("HOUR=%d,",i)+
"CLOCK_NAME=null";
q=new RDSqlQuery(sql);
delete q;
}
}
else { // Base on Existing Service
sql=QString().sprintf("select NAME_TEMPLATE,DESCRIPTION_TEMPLATE,\
CHAIN_LOG,AUTO_REFRESH,\
ELR_SHELFLIFE,TFC_PATH,TFC_WIN_PATH,\
TFC_CART_OFFSET,TFC_CART_LENGTH,\
TFC_START_OFFSET,TFC_START_LENGTH,\
TFC_LENGTH_OFFSET,TFC_LENGTH_LENGTH,\
TFC_HOURS_OFFSET,TFC_HOURS_LENGTH,\
TFC_MINUTES_OFFSET,TFC_MINUTES_LENGTH,\
TFC_SECONDS_OFFSET,TFC_SECONDS_LENGTH,\
TFC_DATA_OFFSET,TFC_DATA_LENGTH,\
TFC_EVENT_ID_OFFSET,TFC_EVENT_ID_LENGTH,\
TFC_ANNC_TYPE_OFFSET,TFC_ANNC_TYPE_LENGTH,\
MUS_PATH,MUS_WIN_PATH,\
MUS_CART_OFFSET,MUS_CART_LENGTH,\
MUS_START_OFFSET,MUS_START_LENGTH,\
MUS_LENGTH_OFFSET,MUS_LENGTH_LENGTH,\
MUS_HOURS_OFFSET,MUS_HOURS_LENGTH,\
MUS_MINUTES_OFFSET,MUS_MINUTES_LENGTH,\
MUS_SECONDS_OFFSET,MUS_SECONDS_LENGTH,\
MUS_DATA_OFFSET,MUS_DATA_LENGTH,\
MUS_EVENT_ID_OFFSET,MUS_EVENT_ID_LENGTH,\
MUS_ANNC_TYPE_OFFSET,MUS_ANNC_TYPE_LENGTH,");
for(int i=0;i<168;i++) {
sql+=QString().sprintf("CLOCK%d,",i);
}
sql=sql.left(sql.length()-1);
sql+=QString().sprintf(" from SERVICES where NAME=\"%s\"",
(const char *)exemplar);
sql=QString("select ")+
"NAME_TEMPLATE,"+ // 00
"DESCRIPTION_TEMPLATE,"+ // 01
"CHAIN_LOG,"+ // 02
"AUTO_REFRESH,"+ // 03
"ELR_SHELFLIFE,"+ // 04
"TFC_PATH,"+ // 05
"TFC_WIN_PATH,"+ // 06
"TFC_CART_OFFSET,"+ // 07
"TFC_CART_LENGTH,"+ // 08
"TFC_START_OFFSET,"+ // 09
"TFC_START_LENGTH,"+ // 10
"TFC_LENGTH_OFFSET,"+ // 11
"TFC_LENGTH_LENGTH,"+ // 12
"TFC_HOURS_OFFSET,"+ // 13
"TFC_HOURS_LENGTH,"+ // 14
"TFC_MINUTES_OFFSET,"+ // 15
"TFC_MINUTES_LENGTH,"+ // 16
"TFC_SECONDS_OFFSET,"+ // 17
"TFC_SECONDS_LENGTH,"+ // 18
"TFC_DATA_OFFSET,"+ // 19
"TFC_DATA_LENGTH,"+ // 20
"TFC_EVENT_ID_OFFSET,"+ // 21
"TFC_EVENT_ID_LENGTH,"+ // 22
"TFC_ANNC_TYPE_OFFSET,"+ // 23
"TFC_ANNC_TYPE_LENGTH,"+ // 24
"MUS_PATH,"+ // 25
"MUS_WIN_PATH,"+ // 26
"MUS_CART_OFFSET,"+ // 27
"MUS_CART_LENGTH,"+ // 28
"MUS_START_OFFSET,"+ // 29
"MUS_START_LENGTH,"+ // 30
"MUS_LENGTH_OFFSET,"+ // 31
"MUS_LENGTH_LENGTH,"+ // 32
"MUS_HOURS_OFFSET,"+ // 33
"MUS_HOURS_LENGTH,"+ // 34
"MUS_MINUTES_OFFSET,"+ // 35
"MUS_MINUTES_LENGTH,"+ // 36
"MUS_SECONDS_OFFSET,"+ // 37
"MUS_SECONDS_LENGTH,"+ // 38
"MUS_DATA_OFFSET,"+ // 39
"MUS_DATA_LENGTH,"+ // 40
"MUS_EVENT_ID_OFFSET,"+ // 41
"MUS_EVENT_ID_LENGTH,"+ // 42
"MUS_ANNC_TYPE_OFFSET,"+ // 43
"MUS_ANNC_TYPE_LENGTH "+ // 44
" from SERVICES where NAME=\""+RDEscapeString(exemplar)+"\"";
q=new RDSqlQuery(sql);
if(q->first()) {
sql=QString().sprintf("insert into SERVICES set\
NAME_TEMPLATE=\"%s\",\
DESCRIPTION_TEMPLATE=\"%s\",\
CHAIN_LOG=\"%s\",\
AUTO_REFRESH=\"%s\",ELR_SHELFLIFE=%d,\
TFC_PATH=\"%s\",TFC_WIN_PATH=\"%s\",\
TFC_CART_OFFSET=%d,TFC_CART_LENGTH=%d,\
TFC_START_OFFSET=%d,TFC_START_LENGTH=%d,\
TFC_LENGTH_OFFSET=%d,TFC_LENGTH_LENGTH=%d,\
TFC_HOURS_OFFSET=%d,TFC_HOURS_LENGTH=%d,\
TFC_MINUTES_OFFSET=%d,TFC_MINUTES_LENGTH=%d,\
TFC_SECONDS_OFFSET=%d,TFC_SECONDS_LENGTH=%d,\
TFC_DATA_OFFSET=%d,TFC_DATA_LENGTH=%d,\
TFC_EVENT_ID_OFFSET=%d,TFC_EVENT_ID_LENGTH=%d,\
TFC_ANNC_TYPE_OFFSET=%d,TFC_ANNC_TYPE_LENGTH=%d,\
MUS_PATH=\"%s\",MUS_WIN_PATH=\"%s\",\
MUS_CART_OFFSET=%d,MUS_CART_LENGTH=%d,\
MUS_START_OFFSET=%d,MUS_START_LENGTH=%d,\
MUS_LENGTH_OFFSET=%d,MUS_LENGTH_LENGTH=%d,\
MUS_HOURS_OFFSET=%d,MUS_HOURS_LENGTH=%d,\
MUS_MINUTES_OFFSET=%d,MUS_MINUTES_LENGTH=%d,\
MUS_SECONDS_OFFSET=%d,MUS_SECONDS_LENGTH=%d,\
MUS_DATA_OFFSET=%d,MUS_DATA_LENGTH=%d,\
MUS_EVENT_ID_OFFSET=%d,MUS_EVENT_ID_LENGTH=%d,\
MUS_ANNC_TYPE_OFFSET=%d,MUS_ANNC_TYPE_LENGTH=%d,\
NAME=\"%s\",",
(const char *)
RDEscapeString(q->value(0).toString()),
(const char *)
RDEscapeString(q->value(1).toString()),
(const char *)q->value(2).toString(),
(const char *)q->value(3).toString(),
q->value(4).toInt(),
(const char *)q->value(5).toString(),
(const char *)q->value(6).toString(),
q->value(7).toInt(),
q->value(8).toInt(),
q->value(9).toInt(),
q->value(10).toInt(),
q->value(11).toInt(),
q->value(12).toInt(),
q->value(13).toInt(),
q->value(14).toInt(),
q->value(15).toInt(),
q->value(16).toInt(),
q->value(17).toInt(),
q->value(18).toInt(),
q->value(19).toInt(),
q->value(20).toInt(),
q->value(21).toInt(),
q->value(22).toInt(),
q->value(23).toInt(),
q->value(24).toInt(),
(const char *)q->value(25).toString(),
(const char *)q->value(26).toString(),
q->value(27).toInt(),
q->value(28).toInt(),
q->value(29).toInt(),
q->value(30).toInt(),
q->value(31).toInt(),
q->value(32).toInt(),
q->value(33).toInt(),
q->value(34).toInt(),
q->value(35).toInt(),
q->value(36).toInt(),
q->value(37).toInt(),
q->value(38).toInt(),
q->value(39).toInt(),
q->value(40).toInt(),
q->value(41).toInt(),
q->value(42).toInt(),
q->value(43).toInt(),
q->value(44).toInt(),
(const char *)RDEscapeString(svc_name));
for(int i=0;i<168;i++) {
sql+=QString().sprintf("CLOCK%d=\"%s\",",
i,(const char *)q->value(45+i).toString());
}
sql=sql.left(sql.length()-1);
sql=QString("insert into SERVICES set ")+
"NAME_TEMPLATE=\""+RDEscapeString(q->value(0).toString())+"\","+
"DESCRIPTION_TEMPLATE=\""+RDEscapeString(q->value(1).toString())+"\","+
"CHAIN_LOG=\""+RDEscapeString(q->value(2).toString())+"\","+
"AUTO_REFRESH=\""+RDEscapeString(q->value(3).toString())+"\","+
QString().sprintf("ELR_SHELFLIFE=%d,",q->value(4).toInt())+
"TFC_PATH=\""+RDEscapeString(q->value(5).toString())+"\","+
"TFC_WIN_PATH=\""+RDEscapeString(q->value(6).toString())+"\","+
QString().sprintf("TFC_CART_OFFSET=%d,",q->value(7).toInt())+
QString().sprintf("TFC_CART_LENGTH=%d,",q->value(8).toInt())+
QString().sprintf("TFC_START_OFFSET=%d,",q->value(9).toInt())+
QString().sprintf("TFC_START_LENGTH=%d,",q->value(10).toInt())+
QString().sprintf("TFC_LENGTH_OFFSET=%d,",q->value(11).toInt())+
QString().sprintf("TFC_LENGTH_LENGTH=%d,",q->value(12).toInt())+
QString().sprintf("TFC_HOURS_OFFSET=%d,",q->value(13).toInt())+
QString().sprintf("TFC_HOURS_LENGTH=%d,",q->value(14).toInt())+
QString().sprintf("TFC_MINUTES_OFFSET=%d,",q->value(15).toInt())+
QString().sprintf("TFC_MINUTES_LENGTH=%d,",q->value(16).toInt())+
QString().sprintf("TFC_SECONDS_OFFSET=%d,",q->value(17).toInt())+
QString().sprintf("TFC_SECONDS_LENGTH=%d,",q->value(18).toInt())+
QString().sprintf("TFC_DATA_OFFSET=%d,",q->value(19).toInt())+
QString().sprintf("TFC_DATA_LENGTH=%d,",q->value(20).toInt())+
QString().sprintf("TFC_EVENT_ID_OFFSET=%d,",q->value(21).toInt())+
QString().sprintf("TFC_EVENT_ID_LENGTH=%d,",q->value(22).toInt())+
QString().sprintf("TFC_ANNC_TYPE_OFFSET=%d,",q->value(23).toInt())+
QString().sprintf("TFC_ANNC_TYPE_LENGTH=%d,",q->value(24).toInt())+
"MUS_PATH=\""+RDEscapeString(q->value(25).toString())+"\","+
"MUS_WIN_PATH=\""+RDEscapeString(q->value(26).toString())+"\","+
QString().sprintf("MUS_CART_OFFSET=%d,",q->value(27).toInt())+
QString().sprintf("MUS_CART_LENGTH=%d,",q->value(28).toInt())+
QString().sprintf("MUS_START_OFFSET=%d,",q->value(29).toInt())+
QString().sprintf("MUS_START_LENGTH=%d,",q->value(30).toInt())+
QString().sprintf("MUS_LENGTH_OFFSET=%d,",q->value(31).toInt())+
QString().sprintf("MUS_LENGTH_LENGTH=%d,",q->value(32).toInt())+
QString().sprintf("MUS_HOURS_OFFSET=%d,",q->value(33).toInt())+
QString().sprintf("MUS_HOURS_LENGTH=%d,",q->value(34).toInt())+
QString().sprintf("MUS_MINUTES_OFFSET=%d,",q->value(35).toInt())+
QString().sprintf("MUS_MINUTES_LENGTH=%d,",q->value(36).toInt())+
QString().sprintf("MUS_SECONDS_OFFSET=%d,",q->value(37).toInt())+
QString().sprintf("MUS_SECONDS_LENGTH=%d,",q->value(38).toInt())+
QString().sprintf("MUS_DATA_OFFSET=%d,",q->value(39).toInt())+
QString().sprintf("MUS_DATA_LENGTH=%d,",q->value(40).toInt())+
QString().sprintf("MUS_EVENT_ID_OFFSET=%d,",q->value(41).toInt())+
QString().sprintf("MUS_EVENT_ID_LENGTH=%d,",q->value(42).toInt())+
QString().sprintf("MUS_ANNC_TYPE_OFFSET=%d,",q->value(43).toInt())+
QString().sprintf("MUS_ANNC_TYPE_LENGTH=%d,",q->value(44).toInt())+
"NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("select HOUR,CLOCK_NAME from SERVICE_CLOCKS where ")+
"SERVICE_NAME=\""+RDEscapeString(exemplar)+"\"";
q=new RDSqlQuery(sql);
while(q->next()) {
sql=QString("insert into SERVICE_CLOCKS set ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\","+
QString().sprintf("HOUR=%d,",q->value(0).toInt());
if(q->value(1).isNull()) {
sql+="CLOCK_NAME=null";
}
else {
sql+="CLOCK_NAME=\""+RDEscapeString(q->value(1).toString())+"\"";
}
q1=new RDSqlQuery(sql);
delete q1;
}
delete q;
}
//
@@ -1340,47 +1353,54 @@ void RDSvc::remove() const
RDSqlQuery *q1;
QString logname;
sql=QString().sprintf("delete from AUDIO_PERMS where SERVICE_NAME=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=
QString().sprintf("delete from SERVICE_PERMS where SERVICE_NAME=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=QString().sprintf("update RDAIRPLAY set DEFAULT_SERVICE=\"\" \
where DEFAULT_SERVICE=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=
QString().sprintf("delete from EVENT_PERMS where SERVICE_NAME=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=
QString().sprintf("delete from CLOCK_PERMS where SERVICE_NAME=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=
QString().sprintf("delete from AUTOFILLS where SERVICE=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=
QString().sprintf("delete from REPORT_SERVICES where SERVICE_NAME=\"%s\"",
(const char *)RDEscapeString(svc_name));
q=new RDSqlQuery(sql);
delete q;
sql=QString().sprintf("delete from SERVICES where NAME=\"%s\"",
(const char *)RDEscapeString(svc_name));
sql=QString("delete from AUDIO_PERMS where ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString().sprintf("select NAME from LOGS where SERVICE=\"%s\"",
(const char *)RDEscapeString(svc_name));
sql=QString("delete from SERVICE_PERMS where ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("update RDAIRPLAY set ")+
"DEFAULT_SERVICE=\"\" where "+
"DEFAULT_SERVICE=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("delete from EVENT_PERMS where ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("delete from CLOCK_PERMS where ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("delete from AUTOFILLS where ")+
"SERVICE=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("delete from REPORT_SERVICES where ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("delete from SERVICES where ")+
"NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("delete from SERVICE_CLOCKS where ")+
"SERVICE_NAME=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
sql=QString("select NAME from LOGS where ")+
"SERVICE=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
while(q->next()) {
logname=q->value(0).toString();
@@ -1404,8 +1424,8 @@ void RDSvc::remove() const
q=new RDSqlQuery(sql);
delete q;
sql=QString().sprintf("delete from LOGS where SERVICE=\"%s\"",
(const char *)RDEscapeString(svc_name));
sql=QString("delete from LOGS where ")+
"SERVICE=\""+RDEscapeString(svc_name)+"\"";
q=new RDSqlQuery(sql);
delete q;
}