activities tab implemented
[toast/confclerk.git] / src / mvc / track.cpp
1 /*
2  * activity.cpp
3  *
4  *  Created on: Dec 27, 2009
5  *      Author: Pavol Korinek
6  */
7
8 #include "track.h"
9 #include <QSqlTableModel>
10
11 QString const Track::sTableName = QString("track");
12 int const Track::sTableColCount = 2;
13 const QString Track::NAME = "name";
14
15 QSqlRecord const Track::sColumns = Track::toRecord(QList<QSqlField>()
16     << QSqlField("id", QVariant::Int)
17     << QSqlField(NAME, QVariant::String));
18
19 QMap<int, Track> Track::mIdToTrack;
20
21 class TrackInsertException : OrmSqlException
22 {
23 public:
24     TrackInsertException(const QString& text) : OrmSqlException(text) {}
25 };
26
27 int Track::insert()
28 {
29     QSqlQuery query;
30     query.prepare("INSERT INTO " + sTableName + " (" + NAME + ")" + " VALUES " + "(\"" + name() + "\")");
31     if (!query.exec())
32     {
33         throw TrackInsertException("Exec Error");
34     }
35     QVariant variant = query.lastInsertId();
36     if (variant.isValid())
37         return variant.toInt();
38     else
39         throw TrackInsertException("Last Insert Id Error");
40 }
41
42 Track Track::retrieveByName(QString name)
43 {
44     QSqlQuery query;
45     query.prepare(
46             selectQuery()
47             + QString("WHERE %1.name = :name").arg(sTableName));
48     query.bindValue(":name", name);
49     return loadOne(query);
50 }
51
52 QList<Track> Track::getAll()
53 {
54     QSqlQuery query;
55     query.prepare(selectQuery());
56     return load(query);
57 }
58
59 void Track::updateTrackMap()
60 {
61     mIdToTrack.clear();
62     QList<Track> trackList = Track::getAll();
63     Track track;
64     for (int id = 0; id < trackList.count(); ++id) {
65         track = trackList.at(id);
66         mIdToTrack.insert(track.id(), track);
67     }
68 }
69
70 QString Track::getTrackName(int id)
71 {
72     QString name = mIdToTrack.value(id).name();
73     if (name == "") {
74         qDebug() << QString("Error: undefined activity name for id %1").arg(id);
75     }
76     return name;
77 }