comparison rdf/PluginRDFIndexer.cpp @ 471:0dc158c1a6c9

* tidy up uses of CachedFile
author Chris Cannam
date Tue, 28 Oct 2008 11:38:43 +0000
parents c9b055f84326
children a70dcfed59c1
comparison
equal deleted inserted replaced
470:dddd4ab77068 471:0dc158c1a6c9
15 15
16 #include "PluginRDFIndexer.h" 16 #include "PluginRDFIndexer.h"
17 17
18 #include "SimpleSPARQLQuery.h" 18 #include "SimpleSPARQLQuery.h"
19 19
20 //!!!#include "data/fileio/FileSource.h"
21 #include "data/fileio/CachedFile.h" 20 #include "data/fileio/CachedFile.h"
21 #include "data/fileio/FileSource.h"
22 #include "data/fileio/PlaylistFileReader.h" 22 #include "data/fileio/PlaylistFileReader.h"
23 #include "plugin/PluginIdentifier.h" 23 #include "plugin/PluginIdentifier.h"
24 24
25 #include "base/Profiler.h" 25 #include "base/Profiler.h"
26 26
99 } 99 }
100 100
101 PluginRDFIndexer::~PluginRDFIndexer() 101 PluginRDFIndexer::~PluginRDFIndexer()
102 { 102 {
103 QMutexLocker locker(&m_mutex); 103 QMutexLocker locker(&m_mutex);
104 /*!!!
105 while (!m_sources.empty()) {
106 delete *m_sources.begin();
107 m_sources.erase(m_sources.begin());
108 }
109 */
110 } 104 }
111 105
112 bool 106 bool
113 PluginRDFIndexer::indexConfiguredURLs() 107 PluginRDFIndexer::indexConfiguredURLs()
114 { 108 {
125 QString index = indices[i]; 119 QString index = indices[i];
126 120
127 std::cerr << "PluginRDFIndexer::indexConfiguredURLs: index url is " 121 std::cerr << "PluginRDFIndexer::indexConfiguredURLs: index url is "
128 << index.toStdString() << std::endl; 122 << index.toStdString() << std::endl;
129 123
130 /*!!!
131 expireCacheMaybe(index);
132
133 FileSource indexSource(index, 0, FileSource::PersistentCache);
134 if (!indexSource.isAvailable()) continue;
135 indexSource.waitForData();
136 */
137
138 CachedFile cf(index); 124 CachedFile cf(index);
139 if (!cf.isOK()) continue; 125 if (!cf.isOK()) continue;
140 126
141 FileSource indexSource(cf.getLocalFilename()); 127 FileSource indexSource(cf.getLocalFilename());
142 128
237 { 223 {
238 QUrl url = QUrl::fromLocalFile(filepath); 224 QUrl url = QUrl::fromLocalFile(filepath);
239 QString urlString = url.toString(); 225 QString urlString = url.toString();
240 return indexURL(urlString); 226 return indexURL(urlString);
241 } 227 }
242 /*!!! 228
243 void
244 PluginRDFIndexer::expireCacheMaybe(QString urlString)
245 {
246 QString cacheFile = FileSource::getPersistentCacheFilePath(urlString);
247
248 QSettings settings;
249 settings.beginGroup("RDF");
250
251 QString key("rdf-expiry-times");
252
253 QMap<QString, QVariant> expiryMap = settings.value(key).toMap();
254 QDateTime lastExpiry = expiryMap[urlString].toDateTime();
255
256 if (!QFileInfo(cacheFile).exists()) {
257 expiryMap[urlString] = QDateTime::currentDateTime();
258 settings.setValue(key, expiryMap);
259 settings.endGroup();
260 return;
261 }
262
263 if (!lastExpiry.isValid() ||
264 (lastExpiry.addDays(2) < QDateTime::currentDateTime())) {
265
266 std::cerr << "Expiring old cache file " << cacheFile.toStdString()
267 << std::endl;
268
269 if (QFile(cacheFile).remove()) {
270
271 expiryMap[urlString] = QDateTime::currentDateTime();
272 settings.setValue(key, expiryMap);
273 }
274 }
275
276 settings.endGroup();
277 }
278 */
279 bool 229 bool
280 PluginRDFIndexer::indexURL(QString urlString) 230 PluginRDFIndexer::indexURL(QString urlString)
281 { 231 {
282 Profiler profiler("PluginRDFIndexer::indexURL"); 232 Profiler profiler("PluginRDFIndexer::indexURL");
283 233
287 237
288 QString localString = urlString; 238 QString localString = urlString;
289 239
290 if (FileSource::isRemote(urlString) && 240 if (FileSource::isRemote(urlString) &&
291 FileSource::canHandleScheme(urlString)) { 241 FileSource::canHandleScheme(urlString)) {
292
293 //!!! how do we avoid hammering the server if it doesn't have
294 //!!! the file, and/or the network if it can't get through?
295 242
296 CachedFile cf(urlString); 243 CachedFile cf(urlString);
297 if (!cf.isOK()) { 244 if (!cf.isOK()) {
298 return false; 245 return false;
299 } 246 }
300 247
301 localString = cf.getLocalFilename(); 248 localString = cf.getLocalFilename();
302 /*!!!
303 expireCacheMaybe(urlString);
304
305 FileSource *source = new FileSource
306 (urlString, 0, FileSource::PersistentCache);
307 if (!source->isAvailable()) {
308 delete source;
309 return false;
310 }
311 source->waitForData();
312 localString = QUrl::fromLocalFile(source->getLocalFilename()).toString();
313 m_sources.insert(source);
314 */
315 } 249 }
316 250
317 // cerr << "PluginRDFIndexer::indexURL: url = <" << urlString.toStdString() << ">" << endl; 251 // cerr << "PluginRDFIndexer::indexURL: url = <" << urlString.toStdString() << ">" << endl;
318 252
319 SimpleSPARQLQuery query 253 SimpleSPARQLQuery query