Chris@28: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@28: Chris@42: #include Chris@42: Chris@28: #include "TypingSelectWidget.h" Chris@30: #include "TypeRegistrar.h" Chris@30: #include "Objects.h" Chris@30: #include "Matcher.h" Chris@30: Chris@30: #include Chris@30: #include Chris@30: #include Chris@30: #include Chris@28: Chris@28: #include Chris@28: Chris@30: #include Chris@30: Chris@28: using namespace ClassicalData; Chris@30: using namespace Dataquay; Chris@30: using namespace std; Chris@30: Chris@53: /* Chris@30: ostream &operator<<(ostream &target, const QString &str) Chris@30: { Chris@30: return target << str.toLocal8Bit().data(); Chris@30: } Chris@30: Chris@30: ostream &operator<<(ostream &target, const QUrl &u) Chris@30: { Chris@30: return target << "<" << u.toString() << ">"; Chris@30: } Chris@53: */ Chris@30: Chris@30: void Chris@30: usage(const char *name) Chris@30: { Chris@30: int s = 0; Chris@30: for (int i = 0; name[i]; ++i) if (name[i] == '/') s = i + 1; Chris@30: name = name + s; Chris@30: cerr << "Usage:" << endl; Chris@30: cerr << " " << name << " " << endl; Chris@30: exit(2); Chris@30: } Chris@30: Chris@30: bool Chris@30: load(BasicStore *store, QString fileName) Chris@30: { Chris@30: QUrl url = QUrl::fromLocalFile(fileName); Chris@30: Chris@30: cerr << "Importing from URL " << url << " ..."; Chris@30: try { Chris@30: store->import(url, BasicStore::ImportPermitDuplicates); Chris@30: } catch (RDFException e) { Chris@30: cerr << " retrying with explicit ntriples type..."; Chris@30: try { Chris@30: store->import(url, BasicStore::ImportPermitDuplicates, "ntriples"); Chris@30: } catch (RDFException e) { Chris@30: cerr << "failed" << endl; Chris@30: cerr << "Import failed: " << e.what() << endl; Chris@30: return false; Chris@30: } Chris@30: } Chris@30: Chris@30: cerr << " done" << endl; Chris@30: return true; Chris@30: } Chris@28: Chris@28: int Chris@28: main(int argc, char **argv) Chris@28: { Chris@28: QApplication app(argc, argv); Chris@28: Chris@30: if (argc != 2) usage(argv[0]); Chris@30: QString inFileName = argv[1]; Chris@30: Chris@30: BasicStore *store = new BasicStore(); Chris@30: store->setBaseUri(Uri("http://dbtune.org/classical/resource/")); Chris@30: ObjectLoader *loader = new ObjectLoader(store); Chris@30: Chris@30: TypeMapping tm; Chris@30: Chris@30: TypeRegistrar::registerTypes(); Chris@30: TypeRegistrar::addMappings(store, &tm); Chris@30: Chris@30: loader->setTypeMapping(tm); Chris@30: Chris@30: if (!load(store, inFileName)) { Chris@31: cerr << "Failed to load data source" << endl; Chris@31: return 1; Chris@30: } Chris@30: Chris@30: cerr << "Imported RDF data, mapping to objects..."; Chris@31: QObjectList objects = loader->loadAll(); Chris@30: cerr << " done" << endl; Chris@30: Chris@30: delete loader; Chris@30: Chris@31: QList composers; Chris@31: foreach (QObject *o, objects) { Chris@31: Composer *c = qobject_cast(o); Chris@31: if (c) composers.push_back(c); Chris@31: } Chris@30: ComposerTypingThoroughMatcher matcher(composers); Chris@30: Chris@28: TypingSelectWidget *w = new TypingSelectWidget(); Chris@30: w->addMatcher(&matcher); Chris@28: Chris@28: w->show(); Chris@28: Chris@28: app.exec(); Chris@28: } Chris@28: