Changeset 1735f55 for src/sql


Ignore:
Timestamp:
01/21/10 20:48:46 (12 years ago)
Author:
pavelpa <pavelpa@…>
Branches:
master, qt5
Children:
c718a77
Parents:
30e2bdf
Message:

check for existence of conference before inserting it into DB

Location:
src/sql
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/sql/schedulexmlparser.cpp

    r30e2bdf r1735f55  
    2424    if (!scheduleElement.isNull())
    2525    {
    26         // TODO: assign conferenceID based on eg. title
    27         int conferenceID = 1; // HARD-WIRED for now to '1' - only one Conference
    28 
     26        int confId = 0;
    2927        QDomElement conferenceElement = scheduleElement.firstChildElement("conference");
    3028        if (!conferenceElement.isNull())
    3129        {
    3230            QHash<QString,QString> conference;
    33             conference["id"] = QString::number(conferenceID,10);
     31            conference["id"] = QString::number(0); // conference ID is assigned automatically, or obtained from the DB
    3432            conference["title"] = conferenceElement.firstChildElement("title").text();
    3533            conference["subtitle"] = conferenceElement.firstChildElement("subtitle").text();
     
    4240            conference["timeslot_duration"] = conferenceElement.firstChildElement("timeslot_duration").text(); // time
    4341            aDBEngine->addConferenceToDB(conference);
     42            confId = conference["id"].toInt();
    4443        }
    4544
     
    7675                        room["name"] = roomElement.attribute("name");
    7776                        room["event_id"] = eventElement.attribute("id");
    78                         room["conference_id"] = QString::number(conferenceID,10);
     77                        room["conference_id"] = QString::number(confId,10);
    7978                        room["picture"] = "NOT DEFINED YET"; // TODO: implement some mapping to assign correct picture to specified room_name
    8079                        aDBEngine->addRoomToDB(room);
     
    8382                        QHash<QString,QString> event;
    8483                        event["id"] = eventElement.attribute("id");;
    85                         event["conference_id"] = QString::number(conferenceID, 10);
     84                        event["conference_id"] = QString::number(confId, 10);
    8685                        event["start"] = eventElement.firstChildElement("start").text(); // time eg. 10:00
    8786                        event["date"] = dayElement.attribute("date"); // date eg. 2009-02-07
     
    106105                            person["name"] = personList.at(i).toElement().text();
    107106                            person["event_id"] = eventElement.attribute("id");
    108                             person["conference_id"] = QString::number(conferenceID, 10);
     107                            person["conference_id"] = QString::number(confId, 10);
    109108                            //qDebug() << "adding Person: " << person["name"];
    110109                            aDBEngine->addPersonToDB(person);
     
    118117                            link["url"] = linkList.at(i).toElement().attribute("href");
    119118                            link["event_id"] = eventElement.attribute("id");
    120                             link["conference_id"] = QString::number(conferenceID, 10);
     119                            link["conference_id"] = QString::number(confId, 10);
    121120                            aDBEngine->addLinkToDB(link);
    122121                        }
  • src/sql/sql.pro

    r30e2bdf r1735f55  
    88# module dependencies
    99LIBS += -L$$DESTDIR -lmvc -lorm
    10 INCLUDEPATH += ../mvc ../orm
     10INCLUDEPATH += ../mvc ../orm ../app
    1111DEPENDPATH += .
    1212
  • src/sql/sqlengine.cpp

    r30e2bdf r1735f55  
    77
    88#include <QDir>
     9#include <appsettings.h>
    910#include "sqlengine.h"
    1011#include <track.h>
     12#include <conference.h>
    1113
    1214#include <QDebug>
     
    6466    if (db.isValid() && db.isOpen())
    6567    {
    66         QString values = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9', '%10'") \
    67                          .arg(aConference["id"]) \
    68                          .arg(aConference["title"]) \
    69                          .arg(aConference["subtitle"]) \
    70                          .arg(aConference["venue"]) \
    71                          .arg(aConference["city"]) \
    72                          .arg(QDateTime(QDate::fromString(aConference["start"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
    73                          .arg(QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
    74                          .arg(aConference["days"]) \
    75                          .arg(-QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0))) \
    76                          .arg(-QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0)));
    77 
    78         QString query = QString("INSERT INTO CONFERENCE (id,title,subtitle,venue,city,start,end,days,day_change,timeslot_duration) VALUES (%1)").arg(values);
    79         QSqlQuery result (query, db);
    80         //LOG_AUTOTEST(query);
     68        int confId = 0;
     69        QList<Conference> confsList = Conference::getAll();
     70        if(confsList.count())
     71        {
     72            QListIterator<Conference> i(confsList);
     73            while (i.hasNext())
     74            {
     75                Conference conf = i.next();
     76                if( aConference["title"] == conf.title() )
     77                {
     78                    confId = conf.id();
     79                    aConference["id"] = QString::number(confId);
     80                    break;
     81                }
     82            }
     83        }
     84
     85        if(!confId) // conference 'aConference' isn't in the table => insert
     86        {
     87            QString values = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9'") \
     88                             .arg(aConference["title"]) \
     89                             .arg(aConference["subtitle"]) \
     90                             .arg(aConference["venue"]) \
     91                             .arg(aConference["city"]) \
     92                             .arg(QDateTime(QDate::fromString(aConference["start"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
     93                             .arg(QDateTime(QDate::fromString(aConference["end"],DATE_FORMAT),QTime(0,0),Qt::UTC).toTime_t()) \
     94                             .arg(aConference["days"]) \
     95                             .arg(-QTime::fromString(aConference["day_change"],TIME_FORMAT).secsTo(QTime(0,0))) \
     96                             .arg(-QTime::fromString(aConference["timeslot_duration"],TIME_FORMAT).secsTo(QTime(0,0)));
     97
     98            QString query = QString("INSERT INTO CONFERENCE (title,subtitle,venue,city,start,end,days,day_change,timeslot_duration) VALUES (%1)").arg(values);
     99            QSqlQuery result (query, db);
     100            aConference["id"] = result.lastInsertId().toString(); // 'id' is assigned automatically
     101
     102            if(!AppSettings::confId()) // default conf Id isn't set yet => set it up
     103                AppSettings::setConfId(confId);
     104        }
    81105    }
    82106}
Note: See TracChangeset for help on using the changeset viewer.