Mercurial > hg > classical
diff utilities/widgettest/widgettest.cpp @ 30:8bed05455706
* Make classical code build
author | Chris Cannam |
---|---|
date | Tue, 16 Mar 2010 17:36:28 +0000 |
parents | 7d8a6167febb |
children | 07efb25d24d6 |
line wrap: on
line diff
--- a/utilities/widgettest/widgettest.cpp Mon Mar 01 16:55:27 2010 +0000 +++ b/utilities/widgettest/widgettest.cpp Tue Mar 16 17:36:28 2010 +0000 @@ -1,17 +1,104 @@ /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ #include "TypingSelectWidget.h" +#include "TypeRegistrar.h" +#include "Objects.h" +#include "Matcher.h" + +#include <dataquay/BasicStore.h> +#include <dataquay/Debug.h> +#include <dataquay/Uri.h> +#include <dataquay/RDFException.h> +#include <dataquay/objectmapper/ObjectLoader.h> +#include <dataquay/objectmapper/TypeMapping.h> #include <QApplication> +#include <iostream> + using namespace ClassicalData; +using namespace Dataquay; +using namespace std; + +ostream &operator<<(ostream &target, const QString &str) +{ + return target << str.toLocal8Bit().data(); +} + +ostream &operator<<(ostream &target, const QUrl &u) +{ + return target << "<" << u.toString() << ">"; +} + +void +usage(const char *name) +{ + int s = 0; + for (int i = 0; name[i]; ++i) if (name[i] == '/') s = i + 1; + name = name + s; + cerr << "Usage:" << endl; + cerr << " " << name << " <input-rdf-file>" << endl; + exit(2); +} + +bool +load(BasicStore *store, QString fileName) +{ + QUrl url = QUrl::fromLocalFile(fileName); + + cerr << "Importing from URL " << url << " ..."; + try { + store->import(url, BasicStore::ImportPermitDuplicates); + } catch (RDFException e) { + cerr << " retrying with explicit ntriples type..."; + try { + store->import(url, BasicStore::ImportPermitDuplicates, "ntriples"); + } catch (RDFException e) { + cerr << "failed" << endl; + cerr << "Import failed: " << e.what() << endl; + return false; + } + } + + cerr << " done" << endl; + return true; +} int main(int argc, char **argv) { QApplication app(argc, argv); + if (argc != 2) usage(argv[0]); + QString inFileName = argv[1]; + + BasicStore *store = new BasicStore(); + store->setBaseUri(Uri("http://dbtune.org/classical/resource/")); + ObjectLoader *loader = new ObjectLoader(store); + + TypeMapping tm; + + TypeRegistrar::registerTypes(); + TypeRegistrar::addMappings(store, &tm); + + loader->setTypeMapping(tm); + + if (!load(store, inFileName)) { + cerr << "Failed to load data source" << endl; + return 1; + } + + cerr << "Imported RDF data, mapping to objects..."; + QObject *root = loader->loadAllObjects(0); + cerr << " done" << endl; + + delete loader; + + QList<Composer *> composers = root->findChildren<Composer *>(); + ComposerTypingThoroughMatcher matcher(composers); + TypingSelectWidget *w = new TypingSelectWidget(); + w->addMatcher(&matcher); w->show();