view testapp/Loader.cpp @ 7:df999875c53b classical-rdf

* Test application for load/query (beginnings of)
author Chris Cannam
date Tue, 09 Feb 2010 17:33:39 +0000
parents
children 71cf328c2a9d
line wrap: on
line source

#include "Objects.h"
#include "TypeRegistrar.h"

#include <dataquay/BasicStore.h>
#include <dataquay/objectmapper/ObjectMapper.h>

#include <QTemporaryFile>

#include <iostream>

using namespace Dataquay;
using namespace ClassicalData;

bool
load(BasicStore *store, QString resourceName)
{
    QTemporaryFile tf;
    if (!tf.open()) return false;
    tf.setAutoRemove(true);
    QFile f(resourceName);
    if (!f.open(QFile::ReadOnly)) return false;
    QByteArray buffer;
    int bufsiz = 10240;
    while (!f.atEnd()) {
	buffer = f.read(bufsiz);
	tf.write(buffer);
    }
    std::cerr << "unpacked, importing..." << std::endl;
    store->import("file://" + tf.fileName(),
		  BasicStore::ImportPermitDuplicates, // fastest mode
		  "ntriples");
    return true;
}

int main(int argc, char **argv)
{
    BasicStore *store = new BasicStore();
    store->setBaseUri("http://dbtune.org/classical/resource/");
    ObjectMapper *mapper = new ObjectMapper(store);

    TypeRegistrar::addMappings(store, mapper);

    if (!load(store, ":data.ntriples")) {
	std::cerr << "Failed to unpack and load resource" << std::endl;
	return 1;
    }

    std::cerr << "imported, mapping..." << std::endl;

    QObject *parent = mapper->loadAllObjects(0);
    
    delete mapper;
    delete store;
}