mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-28 06:32:32 +02:00
2017-03-01 Fred Gleason <fredg@paravelsystems.com>
* Added 'RDCart::xmlSql()' and second 'RDCart::xml()' methods. * Refactored the 'RDCart::xml()' method to use a SQL query. * Refactored the Cart and Cut web methods in 'web/rdxport/carts.cpp' to use SQL queries.
This commit is contained in:
parent
839aa239c8
commit
0a934357c4
@ -15612,3 +15612,8 @@
|
||||
events.
|
||||
2017-02-28 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Fixed a regression in 'lib/rdformpost.cpp'.
|
||||
2017-03-01 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Added 'RDCart::xmlSql()' and second 'RDCart::xml()' methods.
|
||||
* Refactored the 'RDCart::xml()' method to use a SQL query.
|
||||
* Refactored the Cart and Cut web methods in 'web/rdxport/carts.cpp'
|
||||
to use SQL queries.
|
||||
|
328
lib/rdcart.cpp
328
lib/rdcart.cpp
@ -991,129 +991,16 @@ QString RDCart::xml(bool include_cuts,bool absolute,
|
||||
#ifdef WIN32
|
||||
return QString();
|
||||
#else
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
RDSqlQuery *q1;
|
||||
QString ret="";
|
||||
RDCut *cut;
|
||||
QStringList mlist;
|
||||
|
||||
sql=QString("select ")+
|
||||
"TYPE,"+ // 00
|
||||
"GROUP_NAME,"+ // 01
|
||||
"TITLE,"+ // 02
|
||||
"ARTIST,"+ // 03
|
||||
"ALBUM,"+ // 04
|
||||
"YEAR,"+ // 05
|
||||
"LABEL,"+ // 06
|
||||
"CLIENT,"+ // 07
|
||||
"AGENCY,"+ // 08
|
||||
"PUBLISHER,"+ // 09
|
||||
"COMPOSER,"+ // 10
|
||||
"USER_DEFINED,"+ // 11
|
||||
"USAGE_CODE,"+ // 12
|
||||
"FORCED_LENGTH,"+ // 13
|
||||
"AVERAGE_LENGTH,"+ // 14
|
||||
"LENGTH_DEVIATION,"+ // 15
|
||||
"AVERAGE_SEGUE_LENGTH,"+ // 16
|
||||
"AVERAGE_HOOK_LENGTH,"+ // 17
|
||||
"CUT_QUANTITY,"+ // 18
|
||||
"LAST_CUT_PLAYED,"+ // 19
|
||||
"VALIDITY,"+ // 20
|
||||
"ENFORCE_LENGTH,"+ // 21
|
||||
"ASYNCRONOUS,"+ // 22
|
||||
"OWNER,"+ // 23
|
||||
"METADATA_DATETIME,"+ // 24
|
||||
"CONDUCTOR "+ // 25
|
||||
QString().sprintf("from CART where NUMBER=%u",cart_number);
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
ret+="<cart>\n";
|
||||
ret+=" "+RDXmlField("number",cart_number);
|
||||
switch((RDCart::Type)q->value(0).toUInt()) {
|
||||
case RDCart::Audio:
|
||||
ret+=" "+RDXmlField("type","audio");
|
||||
break;
|
||||
|
||||
case RDCart::Macro:
|
||||
ret+=" "+RDXmlField("type","macro");
|
||||
break;
|
||||
|
||||
case RDCart::All:
|
||||
break;
|
||||
}
|
||||
ret+=" "+RDXmlField("groupName",q->value(1).toString());
|
||||
ret+=" "+RDXmlField("title",q->value(2).toString());
|
||||
ret+=" "+RDXmlField("artist",q->value(3).toString());
|
||||
ret+=" "+RDXmlField("album",q->value(4).toString());
|
||||
ret+=" "+RDXmlField("year",q->value(5).toDate().toString("yyyy"));
|
||||
ret+=" "+RDXmlField("label",q->value(6).toString());
|
||||
ret+=" "+RDXmlField("client",q->value(7).toString());
|
||||
ret+=" "+RDXmlField("agency",q->value(8).toString());
|
||||
ret+=" "+RDXmlField("publisher",q->value(9).toString());
|
||||
ret+=" "+RDXmlField("composer",q->value(10).toString());
|
||||
ret+=" "+RDXmlField("conductor",q->value(25).toString());
|
||||
ret+=" "+RDXmlField("userDefined",q->value(11).toString());
|
||||
ret+=" "+RDXmlField("usageCode",q->value(12).toInt());
|
||||
ret+=" "+RDXmlField("forcedLength",
|
||||
"0"+RDGetTimeLength(q->value(13).toUInt(),true));
|
||||
ret+=" "+RDXmlField("averageLength",
|
||||
"0"+RDGetTimeLength(q->value(14).toUInt(),true));
|
||||
ret+=" "+RDXmlField("lengthDeviation",
|
||||
"0"+RDGetTimeLength(q->value(15).toUInt(),true));
|
||||
ret+=" "+RDXmlField("averageSegueLength",
|
||||
"0"+RDGetTimeLength(q->value(16).toUInt(),true));
|
||||
ret+=" "+RDXmlField("averageHookLength",
|
||||
"0"+RDGetTimeLength(q->value(17).toUInt(),true));
|
||||
ret+=" "+RDXmlField("cutQuantity",q->value(18).toUInt());
|
||||
ret+=" "+RDXmlField("lastCutPlayed",q->value(19).toUInt());
|
||||
ret+=" "+RDXmlField("enforceLength",RDBool(q->value(21).toString()));
|
||||
ret+=" "+RDXmlField("asyncronous",RDBool(q->value(22).toString()));
|
||||
ret+=" "+RDXmlField("owner",q->value(23).toString());
|
||||
ret+=" "+RDXmlField("metadataDatetime",q->value(24).toDateTime());
|
||||
switch(type()) {
|
||||
case RDCart::Audio:
|
||||
if(include_cuts) {
|
||||
ret+="<cutList>\n";
|
||||
if(cutnum<0) {
|
||||
sql=QString("select CUT_NAME from CUTS where ")+
|
||||
QString().sprintf("(CART_NUMBER=%u)",cart_number);
|
||||
q1=new RDSqlQuery(sql);
|
||||
while(q1->next()) {
|
||||
cut=new RDCut(q1->value(0).toString());
|
||||
ret+=cut->xml(absolute,settings);
|
||||
delete cut;
|
||||
}
|
||||
delete q1;
|
||||
}
|
||||
else {
|
||||
cut=new RDCut(RDCut::cutName(cart_number,cutnum));
|
||||
if(cut->exists()) {
|
||||
ret+=cut->xml(absolute,settings);
|
||||
}
|
||||
delete cut;
|
||||
}
|
||||
ret+="</cutList>\n";
|
||||
}
|
||||
break;
|
||||
|
||||
case RDCart::Macro:
|
||||
mlist=mlist.split("!",macros());
|
||||
ret+=" <macroList>\n";
|
||||
for(unsigned i=0;i<mlist.size();i++) {
|
||||
ret+=QString().sprintf(" <macro%d>",i)+mlist[i]+
|
||||
QString().sprintf("!</macro%d>\n",i);
|
||||
}
|
||||
ret+=" </macroList>\n";
|
||||
break;
|
||||
|
||||
case RDCart::All:
|
||||
break;
|
||||
}
|
||||
ret+="</cart>\n";
|
||||
QString sql=RDCart::xmlSql(include_cuts)+
|
||||
QString().sprintf(" where (CART.NUMBER=%u)",cart_number);
|
||||
if(cutnum>=0) {
|
||||
sql+=QString("&&(CUT_NAME=\"")+RDCut::cutName(cart_number,cutnum)+"\")";
|
||||
}
|
||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||
QString xml=RDCart::xml(q,include_cuts,absolute,settings);
|
||||
delete q;
|
||||
return ret;
|
||||
|
||||
return xml;
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
@ -1403,6 +1290,205 @@ bool RDCart::remove(RDStation *station,RDUser *user,RDConfig *config) const
|
||||
}
|
||||
|
||||
|
||||
QString RDCart::xmlSql(bool include_cuts)
|
||||
{
|
||||
QString sql=QString("select ")+
|
||||
"CART.NUMBER,"+ // 00
|
||||
"CART.TYPE,"+ // 01
|
||||
"CART.GROUP_NAME,"+ // 02
|
||||
"CART.TITLE,"+ // 03
|
||||
"CART.ARTIST,"+ // 04
|
||||
"CART.ALBUM,"+ // 05
|
||||
"CART.YEAR,"+ // 06
|
||||
"CART.LABEL,"+ // 07
|
||||
"CART.CLIENT,"+ // 08
|
||||
"CART.AGENCY,"+ // 09
|
||||
"CART.PUBLISHER,"+ // 10
|
||||
"CART.COMPOSER,"+ // 11
|
||||
"CART.USER_DEFINED,"+ // 12
|
||||
"CART.USAGE_CODE,"+ // 13
|
||||
"CART.FORCED_LENGTH,"+ // 14
|
||||
"CART.AVERAGE_LENGTH,"+ // 15
|
||||
"CART.LENGTH_DEVIATION,"+ // 16
|
||||
"CART.AVERAGE_SEGUE_LENGTH,"+ // 17
|
||||
"CART.AVERAGE_HOOK_LENGTH,"+ // 18
|
||||
"CART.CUT_QUANTITY,"+ // 19
|
||||
"CART.LAST_CUT_PLAYED,"+ // 20
|
||||
"CART.VALIDITY,"+ // 21
|
||||
"CART.ENFORCE_LENGTH,"+ // 22
|
||||
"CART.ASYNCRONOUS,"+ // 23
|
||||
"CART.OWNER,"+ // 24
|
||||
"CART.METADATA_DATETIME,"+ // 25
|
||||
"CART.CONDUCTOR,"+ // 26
|
||||
"CART.MACROS"; // 27
|
||||
if(include_cuts) {
|
||||
sql+=QString(",")+
|
||||
"CUTS.CUT_NAME,"+ // 28
|
||||
"CUTS.EVERGREEN,"+ // 29
|
||||
"CUTS.DESCRIPTION,"+ // 30
|
||||
"CUTS.OUTCUE,"+ // 31
|
||||
"CUTS.ISRC,"+ // 32
|
||||
"CUTS.ISCI,"+ // 33
|
||||
"CUTS.LENGTH,"+ // 34
|
||||
"CUTS.ORIGIN_DATETIME,"+ // 35
|
||||
"CUTS.START_DATETIME,"+ // 36
|
||||
"CUTS.END_DATETIME,"+ // 37
|
||||
"CUTS.SUN,"+ // 38
|
||||
"CUTS.MON,"+ // 39
|
||||
"CUTS.TUE,"+ // 40
|
||||
"CUTS.WED,"+ // 41
|
||||
"CUTS.THU,"+ // 42
|
||||
"CUTS.FRI,"+ // 43
|
||||
"CUTS.SAT,"+ // 44
|
||||
"CUTS.START_DAYPART,"+ // 45
|
||||
"CUTS.END_DAYPART,"+ // 46
|
||||
"CUTS.ORIGIN_NAME,"+ // 47
|
||||
"CUTS.WEIGHT,"+ // 48
|
||||
"CUTS.LAST_PLAY_DATETIME,"+ // 49
|
||||
"CUTS.PLAY_COUNTER,"+ // 50
|
||||
"CUTS.LOCAL_COUNTER,"+ // 51
|
||||
"CUTS.VALIDITY,"+ // 52
|
||||
"CUTS.CODING_FORMAT,"+ // 53
|
||||
"CUTS.SAMPLE_RATE,"+ // 54
|
||||
"CUTS.BIT_RATE,"+ // 55
|
||||
"CUTS.CHANNELS,"+ // 56
|
||||
"CUTS.PLAY_GAIN,"+ // 57
|
||||
"CUTS.START_POINT,"+ // 58
|
||||
"CUTS.END_POINT,"+ // 59
|
||||
"CUTS.FADEUP_POINT,"+ // 60
|
||||
"CUTS.FADEDOWN_POINT,"+ // 61
|
||||
"CUTS.SEGUE_START_POINT,"+ // 62
|
||||
"CUTS.SEGUE_END_POINT,"+ // 63
|
||||
"CUTS.SEGUE_GAIN,"+ // 64
|
||||
"CUTS.HOOK_START_POINT,"+ // 65
|
||||
"CUTS.HOOK_END_POINT,"+ // 66
|
||||
"CUTS.TALK_START_POINT,"+ // 67
|
||||
"CUTS.TALK_END_POINT "+ // 68
|
||||
"from CART left join CUTS "+
|
||||
"on CART.NUMBER=CUTS.CART_NUMBER ";
|
||||
}
|
||||
else {
|
||||
sql+=" from CART ";
|
||||
}
|
||||
return sql;
|
||||
}
|
||||
|
||||
|
||||
QString RDCart::xml(RDSqlQuery *q,bool include_cuts,
|
||||
bool absolute,RDSettings *settings,int cutnum)
|
||||
{
|
||||
QStringList mlist;
|
||||
unsigned cartnum;
|
||||
QString xml="";
|
||||
|
||||
while(q->next()) {
|
||||
xml+="<cart>\n";
|
||||
xml+=" "+RDXmlField("number",q->value(0).toUInt());
|
||||
switch((RDCart::Type)q->value(1).toUInt()) {
|
||||
case RDCart::Audio:
|
||||
xml+=" "+RDXmlField("type","audio");
|
||||
break;
|
||||
|
||||
case RDCart::Macro:
|
||||
xml+=" "+RDXmlField("type","macro");
|
||||
break;
|
||||
|
||||
case RDCart::All:
|
||||
break;
|
||||
}
|
||||
xml+=" "+RDXmlField("groupName",q->value(2).toString());
|
||||
xml+=" "+RDXmlField("title",q->value(3).toString());
|
||||
xml+=" "+RDXmlField("artist",q->value(4).toString());
|
||||
xml+=" "+RDXmlField("album",q->value(5).toString());
|
||||
xml+=" "+RDXmlField("year",q->value(6).toDate().toString("yyyy"));
|
||||
xml+=" "+RDXmlField("label",q->value(7).toString());
|
||||
xml+=" "+RDXmlField("client",q->value(8).toString());
|
||||
xml+=" "+RDXmlField("agency",q->value(9).toString());
|
||||
xml+=" "+RDXmlField("publisher",q->value(10).toString());
|
||||
xml+=" "+RDXmlField("composer",q->value(11).toString());
|
||||
xml+=" "+RDXmlField("conductor",q->value(26).toString());
|
||||
xml+=" "+RDXmlField("userDefined",q->value(12).toString());
|
||||
xml+=" "+RDXmlField("usageCode",q->value(13).toInt());
|
||||
xml+=" "+RDXmlField("forcedLength",
|
||||
"0"+RDGetTimeLength(q->value(14).toUInt(),true));
|
||||
xml+=" "+RDXmlField("averageLength",
|
||||
"0"+RDGetTimeLength(q->value(15).toUInt(),true));
|
||||
xml+=" "+RDXmlField("lengthDeviation",
|
||||
"0"+RDGetTimeLength(q->value(16).toUInt(),true));
|
||||
xml+=" "+RDXmlField("averageSegueLength",
|
||||
"0"+RDGetTimeLength(q->value(17).toUInt(),true));
|
||||
xml+=" "+RDXmlField("averageHookLength",
|
||||
"0"+RDGetTimeLength(q->value(18).toUInt(),true));
|
||||
xml+=" "+RDXmlField("cutQuantity",q->value(19).toUInt());
|
||||
xml+=" "+RDXmlField("lastCutPlayed",q->value(20).toUInt());
|
||||
xml+=" "+RDXmlField("enforceLength",RDBool(q->value(22).toString()));
|
||||
xml+=" "+RDXmlField("asyncronous",RDBool(q->value(23).toString()));
|
||||
xml+=" "+RDXmlField("owner",q->value(24).toString());
|
||||
xml+=" "+RDXmlField("metadataDatetime",q->value(25).toDateTime());
|
||||
switch((RDCart::Type)q->value(1).toInt()) {
|
||||
case RDCart::Audio:
|
||||
if(include_cuts) {
|
||||
cartnum=q->value(0).toUInt();
|
||||
if(q->value(28).toString().isEmpty()) {
|
||||
xml+=" <cutList/>\n";
|
||||
}
|
||||
else {
|
||||
xml+=" <cutList>\n";
|
||||
xml+=" "+RDCut::xml(q,absolute,settings);
|
||||
while(q->next()) {
|
||||
if(q->value(0).toUInt()==cartnum) {
|
||||
xml+=" "+RDCut::xml(q,absolute,settings);
|
||||
}
|
||||
else {
|
||||
q->prev();
|
||||
break;
|
||||
}
|
||||
}
|
||||
xml+=" </cutList>\n";
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RDCart::Macro:
|
||||
mlist=mlist.split("!",q->value(27).toString());
|
||||
if(mlist.size()==0) {
|
||||
xml+=" <macroList/>\n";
|
||||
}
|
||||
else {
|
||||
xml+=" <macroList>\n";
|
||||
for(unsigned i=0;i<mlist.size();i++) {
|
||||
xml+=" "+RDXmlField(QString().sprintf("macro%d",i),mlist[i]+"!");
|
||||
}
|
||||
xml+=" </macroList>\n";
|
||||
}
|
||||
break;
|
||||
|
||||
case RDCart::All:
|
||||
break;
|
||||
}
|
||||
xml+="</cart>\n";
|
||||
}
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
|
||||
QString RDCart::cutXml(unsigned cartnum,int cutnum,bool absolute,
|
||||
RDSettings *settings)
|
||||
{
|
||||
QString xml="";
|
||||
QString sql=RDCart::xmlSql(true)+" where "+
|
||||
"CUTS.CUT_NAME=\""+RDCut::cutName(cartnum,cutnum)+"\"";
|
||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
xml=RDCut::xml(q,absolute,settings);
|
||||
}
|
||||
delete q;
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
|
||||
bool RDCart::exists(unsigned cartnum)
|
||||
{
|
||||
RDSqlQuery *q=new RDSqlQuery(QString().sprintf("select NUMBER from CART\
|
||||
|
@ -151,6 +151,11 @@ class RDCart
|
||||
const QString &cutname,RDConfig *config);
|
||||
bool create(const QString &groupname,RDCart::Type type);
|
||||
bool remove(RDStation *station,RDUser *user,RDConfig *config) const;
|
||||
static QString xmlSql(bool include_cuts);
|
||||
static QString xml(RDSqlQuery *q,bool include_cuts,bool absolute,
|
||||
RDSettings *settings=NULL,int cutnum=-1);
|
||||
static QString cutXml(unsigned cartnum,int cutnum,bool absolute,
|
||||
RDSettings *settings=NULL);
|
||||
static bool exists(unsigned cartnum);
|
||||
static QString playOrderText(RDCart::PlayOrder order);
|
||||
static QString usageText(RDCart::UsageCode usage);
|
||||
|
328
lib/rdcut.cpp
328
lib/rdcut.cpp
@ -1160,195 +1160,6 @@ void RDCut::setMetadata(RDWaveData *data) const
|
||||
}
|
||||
|
||||
|
||||
QString RDCut::xml(bool absolute,RDSettings *settings) const
|
||||
{
|
||||
#ifdef WIN32
|
||||
return QString();
|
||||
#else
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
QString ret="";
|
||||
|
||||
sql=QString("select ")+
|
||||
"EVERGREEN,"+ // 00
|
||||
"DESCRIPTION,"+ // 01
|
||||
"OUTCUE,"+ // 02
|
||||
"ISRC,"+ // 03
|
||||
"ISCI,"+ // 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
|
||||
"LAST_PLAY_DATETIME,"+ // 20
|
||||
"PLAY_COUNTER,"+ // 21
|
||||
"LOCAL_COUNTER,"+ // 22
|
||||
"VALIDITY,"+ // 23
|
||||
"CODING_FORMAT,"+ // 24
|
||||
"SAMPLE_RATE,"+ // 25
|
||||
"BIT_RATE,"+ // 26
|
||||
"CHANNELS,"+ // 27
|
||||
"PLAY_GAIN,"+ // 28
|
||||
"START_POINT,"+ // 29
|
||||
"END_POINT,"+ // 30
|
||||
"FADEUP_POINT,"+ // 31
|
||||
"FADEDOWN_POINT,"+ // 32
|
||||
"SEGUE_START_POINT,"+ // 33
|
||||
"SEGUE_END_POINT,"+ // 34
|
||||
"SEGUE_GAIN,"+ // 35
|
||||
"HOOK_START_POINT,"+ // 36
|
||||
"HOOK_END_POINT,"+ // 37
|
||||
"TALK_START_POINT,"+ // 38
|
||||
"TALK_END_POINT "+ // 39
|
||||
"from CUTS where CUT_NAME=\""+cut_name+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
if(q->first()) {
|
||||
ret+="<cut>\n";
|
||||
ret+=" "+RDXmlField("cutName",cut_name);
|
||||
ret+=" "+RDXmlField("cartNumber",cart_number);
|
||||
ret+=" "+RDXmlField("cutNumber",cut_number);
|
||||
ret+=" "+RDXmlField("evergreen",RDBool(q->value(0).toString()));
|
||||
ret+=" "+RDXmlField("description",q->value(1).toString());
|
||||
ret+=" "+RDXmlField("outcue",q->value(2).toString());
|
||||
ret+=" "+RDXmlField("isrc",q->value(3).toString());
|
||||
ret+=" "+RDXmlField("isci",q->value(4).toString());
|
||||
ret+=" "+RDXmlField("length",q->value(5).toUInt());
|
||||
if(q->value(6).isNull()) {
|
||||
ret+=" "+RDXmlField("originDatetime","");
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("originDatetime",q->value(6).toDateTime());
|
||||
}
|
||||
if(q->value(7).isNull()) {
|
||||
ret+=" "+RDXmlField("startDatetime","");
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("startDatetime",q->value(7).toDateTime());
|
||||
}
|
||||
if(q->value(8).isNull()) {
|
||||
ret+=" "+RDXmlField("endDatetime","");
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("endDatetime",q->value(8).toDateTime());
|
||||
}
|
||||
ret+=" "+RDXmlField("sun",RDBool(q->value(9).toString()));
|
||||
ret+=" "+RDXmlField("mon",RDBool(q->value(10).toString()));
|
||||
ret+=" "+RDXmlField("tue",RDBool(q->value(11).toString()));
|
||||
ret+=" "+RDXmlField("wed",RDBool(q->value(12).toString()));
|
||||
ret+=" "+RDXmlField("thu",RDBool(q->value(13).toString()));
|
||||
ret+=" "+RDXmlField("fri",RDBool(q->value(14).toString()));
|
||||
ret+=" "+RDXmlField("sat",RDBool(q->value(15).toString()));
|
||||
if(q->value(16).isNull()) {
|
||||
ret+=" "+RDXmlField("startDaypart","");
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("startDaypart",q->value(16).toTime());
|
||||
}
|
||||
if(q->value(17).isNull()) {
|
||||
ret+=" "+RDXmlField("endDaypart","");
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("endDaypart",q->value(17).toTime());
|
||||
}
|
||||
ret+=" "+RDXmlField("originName",q->value(18).toString());
|
||||
ret+=" "+RDXmlField("weight",q->value(19).toUInt());
|
||||
ret+=" "+RDXmlField("lastPlayDatetime",q->value(20).toDateTime());
|
||||
ret+=" "+RDXmlField("playCounter",q->value(21).toUInt());
|
||||
if(settings==NULL) {
|
||||
ret+=" "+RDXmlField("codingFormat",q->value(24).toUInt());
|
||||
ret+=" "+RDXmlField("sampleRate",q->value(25).toUInt());
|
||||
ret+=" "+RDXmlField("bitRate",q->value(26).toUInt());
|
||||
ret+=" "+RDXmlField("channels",q->value(27).toUInt());
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("codingFormat",(int)settings->format());
|
||||
ret+=" "+RDXmlField("sampleRate",settings->sampleRate());
|
||||
ret+=" "+RDXmlField("bitRate",settings->bitRate());
|
||||
ret+=" "+RDXmlField("channels",settings->channels());
|
||||
}
|
||||
ret+=" "+RDXmlField("playGain",q->value(28).toUInt());
|
||||
if(absolute) {
|
||||
ret+=" "+RDXmlField("startPoint",q->value(29).toInt());
|
||||
ret+=" "+RDXmlField("endPoint",q->value(30).toInt());
|
||||
ret+=" "+RDXmlField("fadeupPoint",q->value(31).toInt());
|
||||
ret+=" "+RDXmlField("fadedownPoint",q->value(32).toInt());
|
||||
ret+=" "+RDXmlField("segueStartPoint",q->value(33).toInt());
|
||||
ret+=" "+RDXmlField("segueEndPoint",q->value(34).toInt());
|
||||
ret+=" "+RDXmlField("segueGain",q->value(35).toInt());
|
||||
ret+=" "+RDXmlField("hookStartPoint",q->value(36).toInt());
|
||||
ret+=" "+RDXmlField("hookEndPoint",q->value(37).toInt());
|
||||
ret+=" "+RDXmlField("talkStartPoint",q->value(38).toInt());
|
||||
ret+=" "+RDXmlField("talkEndPoint",q->value(39).toInt());
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("startPoint",0);
|
||||
ret+=" "+
|
||||
RDXmlField("endPoint",q->value(30).toInt()-q->value(29).toInt());
|
||||
if(q->value(31).toInt()<0) {
|
||||
ret+=" "+RDXmlField("fadeupPoint",-1);
|
||||
}
|
||||
else {
|
||||
ret+=" "+
|
||||
RDXmlField("fadeupPoint",q->value(31).toInt()-q->value(29).toInt());
|
||||
}
|
||||
if(q->value(32).toInt()<0) {
|
||||
ret+=" "+RDXmlField("fadedownPoint",-1);
|
||||
}
|
||||
else {
|
||||
ret+=" "+
|
||||
RDXmlField("fadedownPoint",q->value(32).toInt()-q->value(29).toInt());
|
||||
}
|
||||
if(q->value(33).toInt()<0) {
|
||||
ret+=" "+RDXmlField("segueStartPoint",-1);
|
||||
ret+=" "+RDXmlField("segueEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("segueStartPoint",
|
||||
q->value(33).toInt()-q->value(29).toInt());
|
||||
ret+=" "+RDXmlField("segueEndPoint",
|
||||
q->value(34).toInt()-q->value(29).toInt());
|
||||
}
|
||||
ret+=" "+RDXmlField("segueGain",q->value(35).toInt());
|
||||
if(q->value(36).toInt()<0) {
|
||||
ret+=" "+RDXmlField("hookStartPoint",-1);
|
||||
ret+=" "+RDXmlField("hookEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("hookStartPoint",
|
||||
q->value(36).toInt()-q->value(29).toInt());
|
||||
ret+=" "+RDXmlField("hookEndPoint",
|
||||
q->value(37).toInt()-q->value(29).toInt());
|
||||
}
|
||||
if(q->value(38).toInt()<0) {
|
||||
ret+=" "+RDXmlField("talkStartPoint",-1);
|
||||
ret+=" "+RDXmlField("talkEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
ret+=" "+RDXmlField("talkStartPoint",
|
||||
q->value(38).toInt()-q->value(29).toInt());
|
||||
ret+=" "+RDXmlField("talkEndPoint",
|
||||
q->value(39).toInt()-q->value(29).toInt());
|
||||
}
|
||||
}
|
||||
|
||||
ret+="</cut>\n";
|
||||
}
|
||||
delete q;
|
||||
return ret;
|
||||
#endif // WIN32
|
||||
}
|
||||
|
||||
|
||||
bool RDCut::checkInRecording(const QString &stationname,RDSettings *settings,
|
||||
unsigned msecs) const
|
||||
{
|
||||
@ -1586,6 +1397,145 @@ void RDCut::disconnect(QObject *receiver,const char *member) const
|
||||
}
|
||||
|
||||
|
||||
QString RDCut::xml(RDSqlQuery *q,bool absolute,RDSettings *settings)
|
||||
{
|
||||
QString xml="";
|
||||
|
||||
xml+="<cut>\n";
|
||||
xml+=" "+RDXmlField("cutName",q->value(28).toString());
|
||||
xml+=" "+RDXmlField("cartNumber",RDCut::cartNumber(q->value(28).toString()));
|
||||
xml+=" "+RDXmlField("cutNumber",RDCut::cutNumber(q->value(28).toString()));
|
||||
|
||||
xml+=" "+RDXmlField("evergreen",RDBool(q->value(29).toString()));
|
||||
xml+=" "+RDXmlField("description",q->value(30).toString());
|
||||
xml+=" "+RDXmlField("outcue",q->value(31).toString());
|
||||
xml+=" "+RDXmlField("isrc",q->value(32).toString());
|
||||
xml+=" "+RDXmlField("isci",q->value(33).toString());
|
||||
xml+=" "+RDXmlField("length",q->value(34).toUInt());
|
||||
if(q->value(35).isNull()) {
|
||||
xml+=" "+RDXmlField("originDatetime","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("originDatetime",q->value(35).toDateTime());
|
||||
}
|
||||
if(q->value(36).isNull()) {
|
||||
xml+=" "+RDXmlField("startDatetime","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("startDatetime",q->value(36).toDateTime());
|
||||
}
|
||||
if(q->value(37).isNull()) {
|
||||
xml+=" "+RDXmlField("endDatetime","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("endDatetime",q->value(37).toDateTime());
|
||||
}
|
||||
xml+=" "+RDXmlField("sun",RDBool(q->value(38).toString()));
|
||||
xml+=" "+RDXmlField("mon",RDBool(q->value(39).toString()));
|
||||
xml+=" "+RDXmlField("tue",RDBool(q->value(40).toString()));
|
||||
xml+=" "+RDXmlField("wed",RDBool(q->value(41).toString()));
|
||||
xml+=" "+RDXmlField("thu",RDBool(q->value(42).toString()));
|
||||
xml+=" "+RDXmlField("fri",RDBool(q->value(43).toString()));
|
||||
xml+=" "+RDXmlField("sat",RDBool(q->value(44).toString()));
|
||||
if(q->value(45).isNull()) {
|
||||
xml+=" "+RDXmlField("startDaypart","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("startDaypart",q->value(45).toTime());
|
||||
}
|
||||
if(q->value(46).isNull()) {
|
||||
xml+=" "+RDXmlField("endDaypart","");
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("endDaypart",q->value(46).toTime());
|
||||
}
|
||||
xml+=" "+RDXmlField("originName",q->value(47).toString());
|
||||
xml+=" "+RDXmlField("weight",q->value(48).toUInt());
|
||||
xml+=" "+RDXmlField("lastPlayDatetime",q->value(49).toDateTime());
|
||||
xml+=" "+RDXmlField("playCounter",q->value(50).toUInt());
|
||||
if(settings==NULL) {
|
||||
xml+=" "+RDXmlField("codingFormat",q->value(53).toUInt());
|
||||
xml+=" "+RDXmlField("sampleRate",q->value(54).toUInt());
|
||||
xml+=" "+RDXmlField("bitRate",q->value(55).toUInt());
|
||||
xml+=" "+RDXmlField("channels",q->value(56).toUInt());
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("codingFormat",(int)settings->format());
|
||||
xml+=" "+RDXmlField("sampleRate",settings->sampleRate());
|
||||
xml+=" "+RDXmlField("bitRate",settings->bitRate());
|
||||
xml+=" "+RDXmlField("channels",settings->channels());
|
||||
}
|
||||
xml+=" "+RDXmlField("playGain",q->value(57).toUInt());
|
||||
if(absolute) {
|
||||
xml+=" "+RDXmlField("startPoint",q->value(58).toInt());
|
||||
xml+=" "+RDXmlField("endPoint",q->value(59).toInt());
|
||||
xml+=" "+RDXmlField("fadeupPoint",q->value(60).toInt());
|
||||
xml+=" "+RDXmlField("fadedownPoint",q->value(61).toInt());
|
||||
xml+=" "+RDXmlField("segueStartPoint",q->value(62).toInt());
|
||||
xml+=" "+RDXmlField("segueEndPoint",q->value(63).toInt());
|
||||
xml+=" "+RDXmlField("segueGain",q->value(64).toInt());
|
||||
xml+=" "+RDXmlField("hookStartPoint",q->value(65).toInt());
|
||||
xml+=" "+RDXmlField("hookEndPoint",q->value(66).toInt());
|
||||
xml+=" "+RDXmlField("talkStartPoint",q->value(67).toInt());
|
||||
xml+=" "+RDXmlField("talkEndPoint",q->value(68).toInt());
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("startPoint",0);
|
||||
xml+=" "+
|
||||
RDXmlField("endPoint",q->value(30).toInt()-q->value(58).toInt());
|
||||
if(q->value(60).toInt()<0) {
|
||||
xml+=" "+RDXmlField("fadeupPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+
|
||||
RDXmlField("fadeupPoint",q->value(60).toInt()-q->value(58).toInt());
|
||||
}
|
||||
if(q->value(61).toInt()<0) {
|
||||
xml+=" "+RDXmlField("fadedownPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+
|
||||
RDXmlField("fadedownPoint",q->value(61).toInt()-q->value(58).toInt());
|
||||
}
|
||||
if(q->value(62).toInt()<0) {
|
||||
xml+=" "+RDXmlField("segueStartPoint",-1);
|
||||
xml+=" "+RDXmlField("segueEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("segueStartPoint",
|
||||
q->value(62).toInt()-q->value(58).toInt());
|
||||
xml+=" "+RDXmlField("segueEndPoint",
|
||||
q->value(63).toInt()-q->value(58).toInt());
|
||||
}
|
||||
xml+=" "+RDXmlField("segueGain",q->value(64).toInt());
|
||||
if(q->value(65).toInt()<0) {
|
||||
xml+=" "+RDXmlField("hookStartPoint",-1);
|
||||
xml+=" "+RDXmlField("hookEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("hookStartPoint",
|
||||
q->value(65).toInt()-q->value(58).toInt());
|
||||
xml+=" "+RDXmlField("hookEndPoint",
|
||||
q->value(66).toInt()-q->value(58).toInt());
|
||||
}
|
||||
if(q->value(38).toInt()<0) {
|
||||
xml+=" "+RDXmlField("talkStartPoint",-1);
|
||||
xml+=" "+RDXmlField("talkEndPoint",-1);
|
||||
}
|
||||
else {
|
||||
xml+=" "+RDXmlField("talkStartPoint",
|
||||
q->value(67).toInt()-q->value(58).toInt());
|
||||
xml+=" "+RDXmlField("talkEndPoint",
|
||||
q->value(68).toInt()-q->value(58).toInt());
|
||||
}
|
||||
}
|
||||
|
||||
xml+="</cut>\n";
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
|
||||
QString RDCut::cutName(unsigned cartnum,unsigned cutnum)
|
||||
{
|
||||
if((cartnum<1)||(cartnum>RD_MAX_CART_NUMBER)||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <qobject.h>
|
||||
|
||||
#include <rdconfig.h>
|
||||
#include <rddb.h>
|
||||
#include <rdwavedata.h>
|
||||
#include <rdsettings.h>
|
||||
#include <rdstation.h>
|
||||
@ -127,7 +128,6 @@ class RDCut
|
||||
RDConfig *config) const;
|
||||
void getMetadata(RDWaveData *data) const;
|
||||
void setMetadata(RDWaveData *data) const;
|
||||
QString xml(bool absolute,RDSettings *settings=NULL) const;
|
||||
bool checkInRecording(const QString &stationname,RDSettings *settings,
|
||||
unsigned msecs) const;
|
||||
void autoTrim(RDCut::AudioEnd end,int level);
|
||||
@ -136,6 +136,7 @@ class RDCut
|
||||
void reset() const;
|
||||
void connect(QObject *receiver,const char *member) const;
|
||||
void disconnect(QObject *receiver,const char *member) const;
|
||||
static QString xml(RDSqlQuery *q,bool absolute,RDSettings *settings=NULL);
|
||||
static QString cutName(unsigned cartnum,unsigned cutnum);
|
||||
static unsigned cartNumber(const QString &cutname);
|
||||
static unsigned cutNumber(const QString &cutname);
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include <rdformpost.h>
|
||||
#include <rdlog_line.h>
|
||||
#include <rdweb.h>
|
||||
#include <rduser.h>
|
||||
#include <rdgroup.h>
|
||||
@ -118,12 +119,12 @@ void Xport::ListCarts()
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
QString where="";
|
||||
RDCart *cart;
|
||||
QString group_name;
|
||||
QString filter;
|
||||
int include_cuts;
|
||||
RDCart::Type cart_type=RDCart::All;
|
||||
QString type;
|
||||
QStringList mlist;
|
||||
|
||||
//
|
||||
// Verify Post
|
||||
@ -161,7 +162,7 @@ void Xport::ListCarts()
|
||||
if(cart_type!=RDCart::All) {
|
||||
where+=QString().sprintf("&&(TYPE=%u)",cart_type);
|
||||
}
|
||||
sql="select NUMBER from CART where "+where+"order by NUMBER";
|
||||
sql=RDCart::xmlSql(include_cuts)+"where "+where+" order by CART.NUMBER";
|
||||
q=new RDSqlQuery(sql);
|
||||
|
||||
//
|
||||
@ -171,13 +172,8 @@ void Xport::ListCarts()
|
||||
printf("Status: 200\n\n");
|
||||
printf("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
|
||||
printf("<cartList>\n");
|
||||
while(q->next()) {
|
||||
cart=new RDCart(q->value(0).toUInt());
|
||||
printf("%s",(const char *)cart->xml(include_cuts,true));
|
||||
delete cart;
|
||||
}
|
||||
printf("%s\n",(const char *)RDCart::xml(q,include_cuts,true));
|
||||
printf("</cartList>\n");
|
||||
|
||||
delete q;
|
||||
Exit(0);
|
||||
}
|
||||
@ -479,7 +475,7 @@ void Xport::AddCut()
|
||||
printf("<cutAdd>\n");
|
||||
cut=new RDCut(cart_number,cut_number);
|
||||
if(cut->exists()) {
|
||||
printf("%s",(const char *)cut->xml(true));
|
||||
printf("%s",(const char *)RDCart::cutXml(cart_number,cut_number,true));
|
||||
}
|
||||
delete cut;
|
||||
delete cart;
|
||||
@ -491,7 +487,6 @@ void Xport::AddCut()
|
||||
|
||||
void Xport::ListCuts()
|
||||
{
|
||||
RDCut *cut;
|
||||
int cart_number;
|
||||
QString sql;
|
||||
RDSqlQuery *q;
|
||||
@ -513,23 +508,18 @@ void Xport::ListCuts()
|
||||
//
|
||||
// Process Request
|
||||
//
|
||||
sql=QString().sprintf("select CUT_NAME from CUTS where CART_NUMBER=%u \
|
||||
order by CUT_NAME",
|
||||
cart_number);
|
||||
sql=RDCart::xmlSql(true)+
|
||||
QString().sprintf(" where CART.NUMBER=%u",cart_number);
|
||||
q=new RDSqlQuery(sql);
|
||||
printf("Content-type: application/xml\n");
|
||||
printf("Status: 200\n\n");
|
||||
printf("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
|
||||
printf("<cutList>\n");
|
||||
while(q->next()) {
|
||||
cut=new RDCut(q->value(0).toString());
|
||||
if(cut->exists()) {
|
||||
printf("%s",(const char *)cut->xml(true));
|
||||
}
|
||||
delete cut;
|
||||
printf("%s\n",(const char *)RDCut::xml(q,false));
|
||||
}
|
||||
delete q;
|
||||
printf("</cutList>\n");
|
||||
delete q;
|
||||
|
||||
Exit(0);
|
||||
}
|
||||
@ -570,7 +560,7 @@ void Xport::ListCut()
|
||||
printf("Status: 200\n\n");
|
||||
printf("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
|
||||
printf("<cutList>\n");
|
||||
printf("%s",(const char *)cut->xml(true));
|
||||
printf("%s",(const char *)RDCart::cutXml(cart_number,cut_number,true));
|
||||
printf("</cutList>\n");
|
||||
delete cut;
|
||||
|
||||
@ -839,11 +829,12 @@ void Xport::EditCut()
|
||||
}
|
||||
delete cart;
|
||||
}
|
||||
|
||||
printf("Content-type: application/xml\n");
|
||||
printf("Status: 200\n\n");
|
||||
printf("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n");
|
||||
printf("<cutList>\n");
|
||||
printf("%s",(const char *)cut->xml(true));
|
||||
printf("%s",(const char *)RDCart::cutXml(cart_number,cut_number,true));
|
||||
printf("</cutList>\n");
|
||||
delete cut;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user