Mercurial > hg > svcore
comparison rdf/PluginRDFIndexer.cpp @ 457:ef14acd6d102
* Add beginnings of capability to search plugins that are not yet
installed -- lots more work to do here, though
author | Chris Cannam |
---|---|
date | Tue, 14 Oct 2008 16:36:35 +0000 |
parents | 64e64e304a12 |
children | 93fb1ebff76b |
comparison
equal
deleted
inserted
replaced
456:64e64e304a12 | 457:ef14acd6d102 |
---|---|
18 #include "SimpleSPARQLQuery.h" | 18 #include "SimpleSPARQLQuery.h" |
19 | 19 |
20 #include "data/fileio/FileSource.h" | 20 #include "data/fileio/FileSource.h" |
21 #include "plugin/PluginIdentifier.h" | 21 #include "plugin/PluginIdentifier.h" |
22 | 22 |
23 #include "base/Profiler.h" | |
24 | |
23 #include <vamp-sdk/PluginHostAdapter.h> | 25 #include <vamp-sdk/PluginHostAdapter.h> |
24 | 26 |
25 #include <QFileInfo> | 27 #include <QFileInfo> |
26 #include <QDir> | 28 #include <QDir> |
27 #include <QUrl> | 29 #include <QUrl> |
91 } | 93 } |
92 } | 94 } |
93 | 95 |
94 PluginRDFIndexer::~PluginRDFIndexer() | 96 PluginRDFIndexer::~PluginRDFIndexer() |
95 { | 97 { |
96 while (!m_cache.empty()) { | 98 while (!m_sources.empty()) { |
97 delete *m_cache.begin(); | 99 delete *m_sources.begin(); |
98 m_cache.erase(m_cache.begin()); | 100 m_sources.erase(m_sources.begin()); |
99 } | 101 } |
100 } | 102 } |
101 | 103 |
102 QString | 104 QString |
103 PluginRDFIndexer::getURIForPluginId(QString pluginId) | 105 PluginRDFIndexer::getURIForPluginId(QString pluginId) |
120 | 122 |
121 cerr << "PluginRDFIndexer::getIdForPluginURI: NOTE: Failed to find a local RDF document describing plugin <" << uri.toStdString() << ">: attempting to retrieve one remotely by guesswork" << endl; | 123 cerr << "PluginRDFIndexer::getIdForPluginURI: NOTE: Failed to find a local RDF document describing plugin <" << uri.toStdString() << ">: attempting to retrieve one remotely by guesswork" << endl; |
122 | 124 |
123 QString baseUrl = QUrl(uri).toString(QUrl::RemoveFragment); | 125 QString baseUrl = QUrl(uri).toString(QUrl::RemoveFragment); |
124 | 126 |
125 FileSource source(baseUrl); | 127 indexURL(baseUrl); |
126 if (source.isAvailable()) { | |
127 source.waitForData(); | |
128 if (indexFile(source.getLocalFilename())) { | |
129 m_cache.insert(new FileSource(source)); | |
130 } | |
131 } | |
132 | 128 |
133 if (m_uriToIdMap.find(uri) == m_uriToIdMap.end()) { | 129 if (m_uriToIdMap.find(uri) == m_uriToIdMap.end()) { |
134 m_uriToIdMap[uri] = ""; | 130 m_uriToIdMap[uri] = ""; |
135 } | 131 } |
136 } | 132 } |
173 } | 169 } |
174 | 170 |
175 bool | 171 bool |
176 PluginRDFIndexer::indexURL(QString urlString) | 172 PluginRDFIndexer::indexURL(QString urlString) |
177 { | 173 { |
174 Profiler profiler("PluginRDFIndexer::indexURL"); | |
175 | |
176 QString localString = urlString; | |
177 | |
178 if (FileSource::isRemote(urlString) && | |
179 FileSource::canHandleScheme(urlString)) { | |
180 | |
181 FileSource *source = new FileSource(urlString); | |
182 if (!source->isAvailable()) { | |
183 delete source; | |
184 return false; | |
185 } | |
186 source->waitForData(); | |
187 localString = QUrl::fromLocalFile(source->getLocalFilename()).toString(); | |
188 m_sources.insert(source); | |
189 } | |
190 | |
178 // cerr << "PluginRDFIndexer::indexURL: url = <" << urlString.toStdString() << ">" << endl; | 191 // cerr << "PluginRDFIndexer::indexURL: url = <" << urlString.toStdString() << ">" << endl; |
179 | 192 |
180 SimpleSPARQLQuery query | 193 SimpleSPARQLQuery query |
181 (QString | 194 (QString |
182 ( | 195 ( |
204 " vamp:available_plugin ?plugin ; " | 217 " vamp:available_plugin ?plugin ; " |
205 " vamp:identifier ?library_id " | 218 " vamp:identifier ?library_id " |
206 " } " | 219 " } " |
207 " } " | 220 " } " |
208 ) | 221 ) |
209 .arg(urlString)); | 222 .arg(localString)); |
210 | 223 |
211 SimpleSPARQLQuery::ResultList results = query.execute(); | 224 SimpleSPARQLQuery::ResultList results = query.execute(); |
212 | 225 |
213 if (!query.isOK()) { | 226 if (!query.isOK()) { |
214 cerr << "ERROR: PluginRDFIndexer::indexURL: ERROR: Failed to index document at <" | 227 cerr << "ERROR: PluginRDFIndexer::indexURL: ERROR: Failed to index document at <" |