~ubuntu-branches/ubuntu/saucy/digikam/saucy

« back to all changes in this revision

Viewing changes to libs/database/thumbnaildb.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-12-21 23:19:11 UTC
  • mfrom: (1.2.33 upstream) (3.1.7 experimental)
  • Revision ID: james.westby@ubuntu.com-20101221231911-z9jip7s5aht1jqn9
Tags: 2:1.7.0-1ubuntu1
* Merge from Debian Experimental. Remaining Ubuntu changes:
  - Export .pot name and copy to plugins in debian/rules
  - Version build-depends on kipi-plugins-dev to ensure build is against the
    same version on all archs
* Drop debian/patches/kubuntu_01_linker.diff, incoporated upstream
* Remove patches directory and unused patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
 
50
50
public:
51
51
 
52
 
    ThumbnailDBPriv()
 
52
    ThumbnailDBPriv() :
 
53
        db(0)
53
54
    {
54
 
        db = 0;
55
55
    }
56
56
 
57
 
    DatabaseCoreBackend *db;
 
57
    DatabaseCoreBackend* db;
58
58
};
59
59
 
60
 
ThumbnailDB::ThumbnailDB(DatabaseCoreBackend *backend)
61
 
           : d(new ThumbnailDBPriv)
 
60
ThumbnailDB::ThumbnailDB(DatabaseCoreBackend* backend)
 
61
    : d(new ThumbnailDBPriv)
62
62
{
63
63
    d->db = backend;
64
64
}
69
69
}
70
70
 
71
71
bool ThumbnailDB::setSetting(const QString& keyword,
72
 
                         const QString& value )
 
72
                             const QString& value )
73
73
{
74
 
   return  d->db->execSql( "REPLACE INTO Settings VALUES (?,?);",
75
 
                    keyword, value );
 
74
    return  d->db->execSql( "REPLACE INTO Settings VALUES (?,?);",
 
75
                            keyword, value );
76
76
}
77
77
 
78
78
QString ThumbnailDB::getSetting(const QString& keyword)
82
82
                    keyword, &values );
83
83
 
84
84
    if (values.isEmpty())
 
85
    {
85
86
        return QString();
 
87
    }
86
88
    else
 
89
    {
87
90
        return values.first().toString();
 
91
    }
88
92
}
89
93
 
90
 
static void fillThumbnailInfo(const QList<QVariant> &values, DatabaseThumbnailInfo &info)
 
94
static void fillThumbnailInfo(const QList<QVariant> &values, DatabaseThumbnailInfo& info)
91
95
{
92
96
    if (values.isEmpty())
 
97
    {
93
98
        return;
 
99
    }
 
100
 
94
101
    info.id               = values[0].toInt();
95
102
    info.type             = (DatabaseThumbnail::Type)values[1].toInt();
96
103
    info.modificationDate = values[2].isNull() ? QDateTime() : QDateTime::fromString(values[2].toString(), Qt::ISODate);
98
105
    info.data             = values[4].toByteArray();
99
106
}
100
107
 
101
 
DatabaseThumbnailInfo ThumbnailDB::findByHash(const QString &uniqueHash, int fileSize)
 
108
DatabaseThumbnailInfo ThumbnailDB::findByHash(const QString& uniqueHash, int fileSize)
102
109
{
103
110
    QList<QVariant> values;
104
111
    d->db->execSql( QString("SELECT id, type, modificationDate, orientationHint, data "
113
120
    return info;
114
121
}
115
122
 
116
 
DatabaseThumbnailInfo ThumbnailDB::findByFilePath(const QString &path)
 
123
DatabaseThumbnailInfo ThumbnailDB::findByFilePath(const QString& path)
117
124
{
118
125
    QList<QVariant> values;
119
126
    d->db->execSql( QString("SELECT id, type, modificationDate, orientationHint, data "
131
138
QHash<QString, int> ThumbnailDB::getFilePathsWithThumbnail()
132
139
{
133
140
    SqlQuery query = d->db->prepareQuery(QString("SELECT path, id "
134
 
                                                 "FROM FilePaths "
135
 
                                                 "   INNER JOIN Thumbnails ON FilePaths.thumbId=Thumbnails.id "
136
 
                                                 "WHERE type BETWEEN %1 AND %2;")
 
141
                                         "FROM FilePaths "
 
142
                                         "   INNER JOIN Thumbnails ON FilePaths.thumbId=Thumbnails.id "
 
143
                                         "WHERE type BETWEEN %1 AND %2;")
137
144
                                         .arg(DatabaseThumbnail::PGF)
138
145
                                         .arg(DatabaseThumbnail::PNG));
139
146
 
148
155
    {
149
156
        filePaths[query.value(0).toString()] = query.value(1).toInt();
150
157
    }
 
158
 
151
159
    return filePaths;
152
160
}
153
161
 
154
 
DatabaseCoreBackend::QueryState ThumbnailDB::insertUniqueHash(const QString &uniqueHash, int fileSize, int thumbId)
 
162
DatabaseCoreBackend::QueryState ThumbnailDB::insertUniqueHash(const QString& uniqueHash, int fileSize, int thumbId)
155
163
{
156
164
    return d->db->execSql("REPLACE INTO UniqueHashes (uniqueHash, fileSize, thumbId) VALUES (?,?,?)",
157
 
                   uniqueHash, fileSize, thumbId);
 
165
                          uniqueHash, fileSize, thumbId);
158
166
}
159
167
 
160
 
DatabaseCoreBackend::QueryState ThumbnailDB::insertFilePath(const QString &path, int thumbId)
 
168
DatabaseCoreBackend::QueryState ThumbnailDB::insertFilePath(const QString& path, int thumbId)
161
169
{
162
170
    return d->db->execSql("REPLACE INTO FilePaths (path, thumbId) VALUES (?,?)",
163
 
                   path, thumbId);
 
171
                          path, thumbId);
164
172
}
165
173
 
166
 
DatabaseCoreBackend::QueryState ThumbnailDB::removeByUniqueHash(const QString &uniqueHash, int fileSize)
 
174
DatabaseCoreBackend::QueryState ThumbnailDB::removeByUniqueHash(const QString& uniqueHash, int fileSize)
167
175
{
168
176
    // UniqueHashes + FilePaths entries are removed by trigger
169
177
    QMap<QString, QVariant> parameters;
172
180
    return d->db->execDBAction(d->db->getDBAction(QString("Delete_Thumbnail_ByUniqueHashId")), parameters);
173
181
}
174
182
 
175
 
DatabaseCoreBackend::QueryState ThumbnailDB::removeByFilePath(const QString &path)
 
183
DatabaseCoreBackend::QueryState ThumbnailDB::removeByFilePath(const QString& path)
176
184
{
177
185
    // UniqueHashes + FilePaths entries are removed by trigger
178
186
    QMap<QString, QVariant> parameters;
180
188
    return d->db->execDBAction(d->db->getDBAction(QString("Delete_Thumbnail_ByPath")), parameters);
181
189
}
182
190
 
183
 
DatabaseCoreBackend::QueryState ThumbnailDB::insertThumbnail(const DatabaseThumbnailInfo &info, QVariant *lastInsertId)
 
191
DatabaseCoreBackend::QueryState ThumbnailDB::insertThumbnail(const DatabaseThumbnailInfo& info, QVariant* lastInsertId)
184
192
{
185
193
    QVariant id;
186
194
    DatabaseCoreBackend::QueryState lastQueryState;
187
195
    lastQueryState= d->db->execSql("INSERT INTO Thumbnails (type, modificationDate, orientationHint, data) VALUES (?, ?, ?, ?);",
188
 
                        info.type, info.modificationDate, info.orientationHint, info.data,
189
 
                        0, &id);
 
196
                                   info.type, info.modificationDate, info.orientationHint, info.data,
 
197
                                   0, &id);
 
198
 
190
199
    if (DatabaseCoreBackend::NoErrors==lastQueryState)
191
200
    {
192
201
        *lastInsertId=id.toInt();
193
 
    }else
 
202
    }
 
203
    else
194
204
    {
195
205
        *lastInsertId=-1;
196
206
    }
 
207
 
197
208
    return lastQueryState;
198
209
}
199
210
 
200
 
DatabaseCoreBackend::QueryState ThumbnailDB::replaceThumbnail(const DatabaseThumbnailInfo &info)
 
211
DatabaseCoreBackend::QueryState ThumbnailDB::replaceThumbnail(const DatabaseThumbnailInfo& info)
201
212
{
202
213
    return d->db->execSql("REPLACE INTO Thumbnails (id, type, modificationDate, orientationHint, data) VALUES(?, ?, ?, ?, ?);",
203
 
                    QList<QVariant>() << info.id << info.type << info.modificationDate << info.orientationHint << info.data);
 
214
                          QList<QVariant>() << info.id << info.type << info.modificationDate << info.orientationHint << info.data);
204
215
}
205
216
 
206
217
}  // namespace Digikam