• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Nepomuk-Core

  • sources
  • kde-4.12
  • kdelibs
  • nepomuk-core
  • services
  • storage
datamanagementcommand.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the Nepomuk KDE project.
3  Copyright (C) 2010 Sebastian Trueg <trueg@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Lesser General Public
7  License as published by the Free Software Foundation; either
8  version 2.1 of the License, or (at your option) version 3, or any
9  later version accepted by the membership of KDE e.V. (or its
10  successor approved by the membership of KDE e.V.), which shall
11  act as a proxy defined in Section 6 of version 3 of the license.
12 
13  This library is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public
19  License along with this library. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #include "datamanagementcommand.h"
23 #include "datamanagementmodel.h"
24 
25 #include <Soprano/Error/Error>
26 #include <Soprano/Error/ErrorCode>
27 
28 #include <kdbusconnectionpool.h>
29 
30 #include <QtCore/QStringList>
31 #include <QtCore/QEventLoop>
32 
33 #include <KUrl>
34 
35 
36 namespace {
37 QDBusError::ErrorType convertSopranoErrorCode(int code)
38 {
39  switch(code) {
40  case Soprano::Error::ErrorInvalidArgument:
41  return QDBusError::InvalidArgs;
42  default:
43  return QDBusError::Failed;
44  }
45 }
46 }
47 
48 
49 Nepomuk2::DataManagementCommand::DataManagementCommand(DataManagementModel* model, const QDBusMessage& msg)
50  : QRunnable(),
51  m_model(model),
52  m_msg(msg)
53 {
54 }
55 
56 Nepomuk2::DataManagementCommand::~DataManagementCommand()
57 {
58 }
59 
60 void Nepomuk2::DataManagementCommand::run()
61 {
62  QVariant result = runCommand();
63  Soprano::Error::Error error = model()->lastError();
64  QDBusConnection con = KDBusConnectionPool::threadConnection();
65  if(error) {
66  // send error reply
67  con.send(m_msg.createErrorReply(convertSopranoErrorCode(error.code()), error.message()));
68  }
69  else {
70  // encode result (ie. convert QUrl to QString)
71  if(result.isValid()) {
72  if(result.type() == QVariant::Url) {
73  result = encodeUrl(result.toUrl());
74  }
75  con.send(m_msg.createReply(result));
76  }
77  else {
78  con.send(m_msg.createReply());
79  }
80  }
81 
82  //
83  // DBus requires event handling for signals to be emitted properly.
84  // (for example the Soprano statement signals which are emitted a
85  // lot during command execution.)
86  // Otherwise memory will fill up with queued DBus message objects.
87  // Instead of executing an event loop we avoid all the hassle and
88  // simply handle all events here.
89  //
90  QEventLoop loop;
91  loop.processEvents();
92 }
93 
94 
95 // static
96 QUrl Nepomuk2::decodeUrl(const QString& urlsString)
97 {
98  // we use the power of KUrl to automatically convert file paths to file:/ URLs
99  return KUrl(urlsString);
100 }
101 
102 // static
103 QList<QUrl> Nepomuk2::decodeUrls(const QStringList& urlStrings)
104 {
105  QList<QUrl> urls;
106  Q_FOREACH(const QString& urlString, urlStrings) {
107  urls << decodeUrl(urlString);
108  }
109  return urls;
110 }
111 
112 // static
113 QString Nepomuk2::encodeUrl(const QUrl& url)
114 {
115  return QString::fromAscii(url.toEncoded());
116 }
QRunnable
Nepomuk2::DataManagementCommand::DataManagementCommand
DataManagementCommand(DataManagementModel *model, const QDBusMessage &msg)
Definition: datamanagementcommand.cpp:49
Nepomuk2::DataManagementCommand::~DataManagementCommand
virtual ~DataManagementCommand()
Definition: datamanagementcommand.cpp:56
Nepomuk2::decodeUrls
QList< QUrl > decodeUrls(const QStringList &urlStrings)
Definition: datamanagementcommand.cpp:103
datamanagementmodel.h
Nepomuk2::encodeUrl
QString encodeUrl(const QUrl &url)
Definition: datamanagementcommand.cpp:113
datamanagementcommand.h
Nepomuk2::DataManagementCommand::run
void run()
Definition: datamanagementcommand.cpp:60
Nepomuk2::decodeUrl
QUrl decodeUrl(const QString &urlsString)
Definition: datamanagementcommand.cpp:96
Nepomuk2::DataManagementModel
Definition: datamanagementmodel.h:39
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Nepomuk-Core

Skip menu "Nepomuk-Core"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal