3
* $Id: sourceheader 511311 2006-02-19 14:51:05Z trueg $
5
* This file is part of the Nepomuk KDE project.
6
* Copyright (C) 2006-2007 Sebastian Trueg <trueg@kde.org>
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
* See the file "COPYING" for the exact licensing terms.
15
#include "modelcopyjob.h"
17
#include <Soprano/StorageModel>
18
#include <Soprano/Backend>
19
#include <Soprano/Error/Error>
23
#include <kuiserverjobtracker.h>
25
#include <QtCore/QThread>
26
#include <QtCore/QTimer>
29
class Nepomuk::ModelCopyJob::Private : public QThread
34
Soprano::Model* m_source;
35
Soprano::Model* m_dest;
40
KUiServerJobTracker* m_jobTracker;
46
void Nepomuk::ModelCopyJob::Private::run()
49
unsigned long size = m_source->statementCount();
50
unsigned long done = 0;
51
kDebug() << "Need to copy" << size << "statements.";
53
Soprano::StatementIterator it = m_source->listStatements();
55
while ( !m_stopped ) {
59
if ( m_dest->addStatement( *it ) != Soprano::Error::ErrorNone ) {
60
kDebug() << m_dest->lastError();
61
q->setErrorText( m_dest->lastError().message() );
67
// emitPercent does only emit a signal if the percent value actually changes
68
q->emitPercent( done, size );
72
if ( it.lastError() ) {
73
q->setErrorText( it.lastError().message() );
81
Nepomuk::ModelCopyJob::ModelCopyJob( Soprano::Model* source, Soprano::Model* dest, QObject* parent )
91
setCapabilities( KJob::Killable );
93
d->m_jobTracker = new KUiServerJobTracker();
94
d->m_jobTracker->registerJob( this );
96
connect( d, SIGNAL( finished() ),
97
this, SLOT( slotThreadFinished() ) );
101
Nepomuk::ModelCopyJob::~ModelCopyJob()
103
if ( d->isRunning() ) {
107
d->m_jobTracker->deleteLater();
111
Soprano::Model* Nepomuk::ModelCopyJob::source() const
117
Soprano::Model* Nepomuk::ModelCopyJob::dest() const
123
void Nepomuk::ModelCopyJob::start()
126
emit description( this,
127
i18nc( "@title job", "Converting Nepomuk database" ),
128
qMakePair( i18n( "Old backend" ), qobject_cast<Soprano::StorageModel*>( d->m_source )->backend()->pluginName() ),
129
qMakePair( i18n( "New backend" ), qobject_cast<Soprano::StorageModel*>( d->m_dest )->backend()->pluginName() ) );
134
void Nepomuk::ModelCopyJob::slotThreadFinished()
136
if ( !d->m_stopped ) {
142
bool Nepomuk::ModelCopyJob::doKill()
144
if ( d->isRunning() ) {
154
#include "modelcopyjob.moc"