Ticket #554: programid-part-v1.1.patch

File programid-part-v1.1.patch, 2.5 KB (added by jppoet@…, 11 years ago)

include parttotal as part of fudged programid

  • programs/mythfilldatabase/main.cpp

    old new int main(int argc, char *argv[]) 
    728728                QString("    Found %1").arg(query.numRowsAffected()));
    729729    }
    730730
     731    if (grab_data)
     732    {
     733        VERBOSE(VB_GENERAL, "Fudging non-unique programid "
     734                "with multiple parts.");
     735
     736        MSqlQuery sel(MSqlQuery::InitCon());
     737        sel.exec("SELECT DISTINCT programid, partnumber, parttotal "
     738                 "FROM program WHERE partnumber > 0 AND parttotal > 0 AND "
     739                 "programid LIKE '%0000'");
     740
     741        if (sel.isActive() && sel.size() > 0)
     742        {
     743            MSqlQuery repl(MSqlQuery::InitCon());
     744
     745            while (sel.next())
     746            {
     747                QString orig_programid = sel.value(0).toString();
     748                QString new_programid = orig_programid.left(8);
     749                int     partnum, parttotal;
     750                QString part;
     751
     752                partnum   = sel.value(1).toInt();
     753                parttotal = sel.value(2).toInt();
     754
     755                part.setNum(parttotal);
     756                new_programid.append(part.rightJustify(2, '0'));
     757                part.setNum(partnum);
     758                new_programid.append(part.rightJustify(2, '0'));
     759
     760                VERBOSE(VB_GENERAL,
     761                        QString("    %1 -> %2 (part %3 of %4)")
     762                        .arg(orig_programid).arg(new_programid)
     763                        .arg(partnum).arg(parttotal));
     764
     765                repl.prepare("UPDATE program SET programid = :NEWID "
     766                             "WHERE programid = :OLDID AND "
     767                             "partnumber = :PARTNUM AND "
     768                             "parttotal = :PARTTOTAL");
     769                repl.bindValue(":NEWID", new_programid);
     770                repl.bindValue(":OLDID", orig_programid);
     771                repl.bindValue(":PARTNUM",   partnum);
     772                repl.bindValue(":PARTTOTAL", parttotal);
     773                if (!repl.exec())
     774                {
     775                    VERBOSE(VB_GENERAL,
     776                            QString("Fudging programid from '%1' to '%2'")
     777                            .arg(orig_programid)
     778                            .arg(new_programid));
     779                }
     780            }
     781        }
     782
     783        VERBOSE(VB_GENERAL,
     784                QString("    Found %1").arg(sel.numRowsAffected()));
     785    }
     786
    731787    if (mark_repeats)
    732788    {
    733789        VERBOSE(VB_GENERAL, "Marking repeats.");