annotate utilities/widgettest/widgettest.cpp @ 53:bcea875d8d2f tip

More build fixes
author Chris Cannam
date Thu, 16 Oct 2014 19:03:51 +0100
parents add3570c6035
children
rev   line source
Chris@28 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@28 2
Chris@42 3 #include <dataquay/Uri.h>
Chris@42 4
Chris@28 5 #include "TypingSelectWidget.h"
Chris@30 6 #include "TypeRegistrar.h"
Chris@30 7 #include "Objects.h"
Chris@30 8 #include "Matcher.h"
Chris@30 9
Chris@30 10 #include <dataquay/BasicStore.h>
Chris@30 11 #include <dataquay/RDFException.h>
Chris@30 12 #include <dataquay/objectmapper/ObjectLoader.h>
Chris@30 13 #include <dataquay/objectmapper/TypeMapping.h>
Chris@28 14
Chris@28 15 #include <QApplication>
Chris@28 16
Chris@30 17 #include <iostream>
Chris@30 18
Chris@28 19 using namespace ClassicalData;
Chris@30 20 using namespace Dataquay;
Chris@30 21 using namespace std;
Chris@30 22
Chris@53 23 /*
Chris@30 24 ostream &operator<<(ostream &target, const QString &str)
Chris@30 25 {
Chris@30 26 return target << str.toLocal8Bit().data();
Chris@30 27 }
Chris@30 28
Chris@30 29 ostream &operator<<(ostream &target, const QUrl &u)
Chris@30 30 {
Chris@30 31 return target << "<" << u.toString() << ">";
Chris@30 32 }
Chris@53 33 */
Chris@30 34
Chris@30 35 void
Chris@30 36 usage(const char *name)
Chris@30 37 {
Chris@30 38 int s = 0;
Chris@30 39 for (int i = 0; name[i]; ++i) if (name[i] == '/') s = i + 1;
Chris@30 40 name = name + s;
Chris@30 41 cerr << "Usage:" << endl;
Chris@30 42 cerr << " " << name << " <input-rdf-file>" << endl;
Chris@30 43 exit(2);
Chris@30 44 }
Chris@30 45
Chris@30 46 bool
Chris@30 47 load(BasicStore *store, QString fileName)
Chris@30 48 {
Chris@30 49 QUrl url = QUrl::fromLocalFile(fileName);
Chris@30 50
Chris@30 51 cerr << "Importing from URL " << url << " ...";
Chris@30 52 try {
Chris@30 53 store->import(url, BasicStore::ImportPermitDuplicates);
Chris@30 54 } catch (RDFException e) {
Chris@30 55 cerr << " retrying with explicit ntriples type...";
Chris@30 56 try {
Chris@30 57 store->import(url, BasicStore::ImportPermitDuplicates, "ntriples");
Chris@30 58 } catch (RDFException e) {
Chris@30 59 cerr << "failed" << endl;
Chris@30 60 cerr << "Import failed: " << e.what() << endl;
Chris@30 61 return false;
Chris@30 62 }
Chris@30 63 }
Chris@30 64
Chris@30 65 cerr << " done" << endl;
Chris@30 66 return true;
Chris@30 67 }
Chris@28 68
Chris@28 69 int
Chris@28 70 main(int argc, char **argv)
Chris@28 71 {
Chris@28 72 QApplication app(argc, argv);
Chris@28 73
Chris@30 74 if (argc != 2) usage(argv[0]);
Chris@30 75 QString inFileName = argv[1];
Chris@30 76
Chris@30 77 BasicStore *store = new BasicStore();
Chris@30 78 store->setBaseUri(Uri("http://dbtune.org/classical/resource/"));
Chris@30 79 ObjectLoader *loader = new ObjectLoader(store);
Chris@30 80
Chris@30 81 TypeMapping tm;
Chris@30 82
Chris@30 83 TypeRegistrar::registerTypes();
Chris@30 84 TypeRegistrar::addMappings(store, &tm);
Chris@30 85
Chris@30 86 loader->setTypeMapping(tm);
Chris@30 87
Chris@30 88 if (!load(store, inFileName)) {
Chris@31 89 cerr << "Failed to load data source" << endl;
Chris@31 90 return 1;
Chris@30 91 }
Chris@30 92
Chris@30 93 cerr << "Imported RDF data, mapping to objects...";
Chris@31 94 QObjectList objects = loader->loadAll();
Chris@30 95 cerr << " done" << endl;
Chris@30 96
Chris@30 97 delete loader;
Chris@30 98
Chris@31 99 QList<Composer *> composers;
Chris@31 100 foreach (QObject *o, objects) {
Chris@31 101 Composer *c = qobject_cast<Composer *>(o);
Chris@31 102 if (c) composers.push_back(c);
Chris@31 103 }
Chris@30 104 ComposerTypingThoroughMatcher matcher(composers);
Chris@30 105
Chris@28 106 TypingSelectWidget *w = new TypingSelectWidget();
Chris@30 107 w->addMatcher(&matcher);
Chris@28 108
Chris@28 109 w->show();
Chris@28 110
Chris@28 111 app.exec();
Chris@28 112 }
Chris@28 113