• 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
datamanagementadaptor.cpp
Go to the documentation of this file.
1 /*
2  This file is part of the Nepomuk KDE project.
3  Copyright (C) 2010-2011 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  The basis for this file was generated by qdbusxml2cpp version 0.7
22  Command line was: qdbusxml2cpp -a datamanagementadaptor -c DataManagementAdaptor -m org.kde.nepomuk.DataManagement.xml
23 
24  qdbusxml2cpp is Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
25  */
26 
27 #include "datamanagementadaptor.h"
28 #include "datamanagementmodel.h"
29 #include "datamanagementcommand.h"
30 #include "simpleresourcegraph.h"
31 #include "dbustypes.h"
32 
33 #include <QtCore/QMetaObject>
34 #include <QtCore/QByteArray>
35 #include <QtCore/QList>
36 #include <QtCore/QMap>
37 #include <QtCore/QString>
38 #include <QtCore/QStringList>
39 #include <QtCore/QVariant>
40 #include <QtCore/QThreadPool>
41 #include <QtDBus/QDBusMetaType>
42 
43 
44 Nepomuk2::DataManagementAdaptor::DataManagementAdaptor(Nepomuk2::DataManagementModel *parent)
45  : QObject(parent),
46  m_model(parent),
47  m_namespacePrefixRx(QLatin1String("(\\w+)\\:(\\w+)"))
48 {
49  DBus::registerDBusTypes();
50 
51  // FIXME: it is not sufficient to put this register call in DBus::registerDBusTypes()
52  // might have to do with the latter being part of libnepomukcore.
53  qDBusRegisterMetaType<__nepomuk_QHashQStringQString>();
54 
55  m_threadPool = new QThreadPool(this);
56 
57  // N threads means N connections to Virtuoso
58  m_threadPool->setMaxThreadCount(10);
59 
60  // This is hack to slow down the indexing. A lot of processes seem to be indexing things
61  // at the same time, and this leads of very high cpu usage along with occasional transaction
62  // failures. As a temporary measure, it would be best to only allow one storeResource at a
63  // time for 4.11.1
64  m_storeResourcesThreadPool = new QThreadPool(this);
65  m_storeResourcesThreadPool->setMaxThreadCount(1);
66 }
67 
68 Nepomuk2::DataManagementAdaptor::~DataManagementAdaptor()
69 {
70  // make sure all commands are done before letting deletion continue
71  m_threadPool->waitForDone();
72 }
73 
74 void Nepomuk2::DataManagementAdaptor::addProperty(const QStringList &resources, const QString &property, const QVariantList &values, const QString &app)
75 {
76  Q_ASSERT(calledFromDBus());
77  setDelayedReply(true);
78  enqueueCommand(new AddPropertyCommand(decodeUris(resources), decodeUri(property), Nepomuk2::DBus::resolveDBusArguments(values), app, m_model, message()));
79 }
80 
81 void Nepomuk2::DataManagementAdaptor::addProperty(const QString &resource, const QString &property, const QDBusVariant &value, const QString &app)
82 {
83  addProperty(QStringList() << resource, property, QVariantList() << Nepomuk2::DBus::resolveDBusArguments(value.variant()), app);
84 }
85 
86 QString Nepomuk2::DataManagementAdaptor::createResource(const QStringList &types, const QString &label, const QString &description, const QString &app)
87 {
88  Q_ASSERT(calledFromDBus());
89  setDelayedReply(true);
90  enqueueCommand(new CreateResourceCommand(decodeUris(types), label, description, app, m_model, message()));
91  // QtDBus will ignore this return value
92  return QString();
93 }
94 
95 QString Nepomuk2::DataManagementAdaptor::createResource(const QString &type, const QString &label, const QString &description, const QString &app)
96 {
97  return createResource(QStringList() << type, label, description, app);
98 }
99 
100 QList<Nepomuk2::SimpleResource> Nepomuk2::DataManagementAdaptor::describeResources(const QStringList &resources, int flags, const QStringList& targetParties)
101 {
102  Q_ASSERT(calledFromDBus());
103  setDelayedReply(true);
104  enqueueCommand(new DescribeResourcesCommand(decodeUris(resources), Nepomuk2::DescribeResourcesFlags(flags), decodeUris(targetParties), m_model, message()));
105  // QtDBus will ignore this return value
106  return QList<SimpleResource>();
107 }
108 
109 QHash< QString, QString > Nepomuk2::DataManagementAdaptor::storeResources(const QList< Nepomuk2::SimpleResource >& resources, int identificationMode, int flags, const Nepomuk2::PropertyHash& additionalMetadata, const QString& app)
110 {
111  Q_ASSERT(calledFromDBus());
112  setDelayedReply(true);
113  StoreResourcesCommand* command = new StoreResourcesCommand(resources, app, identificationMode, flags, additionalMetadata, m_model, message());
114  m_storeResourcesThreadPool->start(command);
115  // QtDBus will ignore this return value
116  return QHash<QString, QString>();
117 }
118 
119 void Nepomuk2::DataManagementAdaptor::mergeResources(const QString &resource1, const QString &resource2, const QString &app)
120 {
121  Q_ASSERT(calledFromDBus());
122  setDelayedReply(true);
123  QList<QUrl> resources;
124  resources << decodeUri(resource1) << decodeUri(resource2);
125  enqueueCommand(new MergeResourcesCommand(resources, app, m_model, message()));
126 }
127 
128 void Nepomuk2::DataManagementAdaptor::mergeResources(const QStringList& resources, const QString& app)
129 {
130  Q_ASSERT(calledFromDBus());
131  setDelayedReply(true);
132  enqueueCommand(new MergeResourcesCommand(decodeUris(resources), app, m_model, message()));
133 }
134 
135 void Nepomuk2::DataManagementAdaptor::removeDataByApplication(int flags, const QString &app)
136 {
137  Q_ASSERT(calledFromDBus());
138  setDelayedReply(true);
139  enqueueCommand(new RemoveDataByApplicationCommand(app, flags, m_model, message()));
140 }
141 
142 void Nepomuk2::DataManagementAdaptor::removeDataByApplication(const QStringList &resources, int flags, const QString &app)
143 {
144  Q_ASSERT(calledFromDBus());
145  setDelayedReply(true);
146  enqueueCommand(new RemoveResourcesByApplicationCommand(decodeUris(resources), app, flags, m_model, message()));
147 }
148 
149 void Nepomuk2::DataManagementAdaptor::removeProperties(const QStringList &resources, const QStringList &properties, const QString &app)
150 {
151  Q_ASSERT(calledFromDBus());
152  setDelayedReply(true);
153  enqueueCommand(new RemovePropertiesCommand(decodeUris(resources), decodeUris(properties), app, m_model, message()));
154 }
155 
156 void Nepomuk2::DataManagementAdaptor::removeProperties(const QString &resource, const QString &property, const QString &app)
157 {
158  removeProperties(QStringList() << resource, QStringList() << property, app);
159 }
160 
161 void Nepomuk2::DataManagementAdaptor::removeProperty(const QStringList &resources, const QString &property, const QVariantList &values, const QString &app)
162 {
163  Q_ASSERT(calledFromDBus());
164  setDelayedReply(true);
165  enqueueCommand(new RemovePropertyCommand(decodeUris(resources), decodeUri(property), Nepomuk2::DBus::resolveDBusArguments(values), app, m_model, message()));
166 }
167 
168 void Nepomuk2::DataManagementAdaptor::removeProperty(const QString &resource, const QString &property, const QDBusVariant &value, const QString &app)
169 {
170  removeProperty(QStringList() << resource, property, QVariantList() << Nepomuk2::DBus::resolveDBusArguments(value.variant()), app);
171 }
172 
173 void Nepomuk2::DataManagementAdaptor::removeResources(const QStringList &resources, int flags, const QString &app)
174 {
175  Q_ASSERT(calledFromDBus());
176  setDelayedReply(true);
177  enqueueCommand(new RemoveResourcesCommand(decodeUris(resources), app, flags, m_model, message()));
178 }
179 
180 void Nepomuk2::DataManagementAdaptor::removeResources(const QString &resource, int flags, const QString &app)
181 {
182  removeResources(QStringList() << resource, flags, app);
183 }
184 
185 void Nepomuk2::DataManagementAdaptor::setProperty(const QStringList &resources, const QString &property, const QVariantList &values, const QString &app)
186 {
187  Q_ASSERT(calledFromDBus());
188  setDelayedReply(true);
189  enqueueCommand(new SetPropertyCommand(decodeUris(resources), decodeUri(property), Nepomuk2::DBus::resolveDBusArguments(values), app, m_model, message()));
190 }
191 
192 void Nepomuk2::DataManagementAdaptor::setProperty(const QString &resource, const QString &property, const QDBusVariant &value, const QString &app)
193 {
194  setProperty(QStringList() << resource, property, QVariantList() << Nepomuk2::DBus::resolveDBusArguments(value.variant()), app);
195 }
196 
197 void Nepomuk2::DataManagementAdaptor::enqueueCommand(DataManagementCommand *cmd)
198 {
199  m_threadPool->start(cmd);
200 }
201 
202 QUrl Nepomuk2::DataManagementAdaptor::decodeUri(const QString &s, bool namespaceAbbrExpansion) const
203 {
204  if(namespaceAbbrExpansion) {
205  if(m_namespacePrefixRx.exactMatch(s)) {
206  const QString ns = m_namespacePrefixRx.cap(1);
207  const QString name = m_namespacePrefixRx.cap(2);
208  QHash<QString, QString>::const_iterator it = m_namespaces.constFind(ns);
209  if(it != m_namespaces.constEnd()) {
210  return QUrl::fromEncoded(QString(it.value() + name).toAscii());
211  }
212  }
213  }
214 
215  // fallback
216  return Nepomuk2::decodeUrl(s);
217 }
218 
219 QList<QUrl> Nepomuk2::DataManagementAdaptor::decodeUris(const QStringList &urlStrings, bool namespaceAbbrExpansions) const
220 {
221  QList<QUrl> urls;
222  Q_FOREACH(const QString& urlString, urlStrings) {
223  if(!urlString.isEmpty()) {
224  urls << decodeUri(urlString, namespaceAbbrExpansions);
225  }
226  }
227  return urls;
228 }
229 
230 void Nepomuk2::DataManagementAdaptor::setPrefixes(const QHash<QString, QString>& prefixes)
231 {
232  m_namespaces = prefixes;
233 }
234 
235 void Nepomuk2::DataManagementAdaptor::importResources(const QString &url, const QString &serialization, int identificationMode, int flags, const QString &app)
236 {
237  importResources(url, serialization, identificationMode, flags, PropertyHash(), app);
238 }
239 
240 void Nepomuk2::DataManagementAdaptor::importResources(const QString &url, const QString &serialization, int identificationMode, int flags, const Nepomuk2::PropertyHash &additionalMetadata, const QString &app)
241 {
242  Q_ASSERT(calledFromDBus());
243  setDelayedReply(true);
244  enqueueCommand(new ImportResourcesCommand(decodeUri(url), Soprano::mimeTypeToSerialization(serialization), serialization, identificationMode, flags, additionalMetadata, app, m_model, message()));
245 }
246 
247 QString Nepomuk2::DataManagementAdaptor::exportResources(const QStringList &resources, const QString &mimeType, int flags, const QStringList &targetParties)
248 {
249  Q_ASSERT(calledFromDBus());
250  setDelayedReply(true);
251  enqueueCommand(new ExportResourcesCommand(decodeUris(resources), Soprano::mimeTypeToSerialization(mimeType), mimeType, Nepomuk2::DescribeResourcesFlags(flags), decodeUris(targetParties), m_model, message()));
252  // QtDBus will ignore this return value
253  return QString();
254 }
255 
256 void Nepomuk2::DataManagementAdaptor::clearCache()
257 {
258  m_model->clearCache();
259 }
260 
261 #include "datamanagementadaptor.moc"
Nepomuk2::ExportResourcesCommand
Definition: datamanagementcommand.h:385
Nepomuk2::DataManagementAdaptor::decodeUris
QList< QUrl > decodeUris(const QStringList &s, bool namespaceAbbrExpansion=true) const
Tries to decode a list of URIs including namespace abbreviation lookup for known ontologies (Example:...
Definition: datamanagementadaptor.cpp:219
Nepomuk2::DataManagementAdaptor::removeProperties
Q_SCRIPTABLE void removeProperties(const QStringList &resources, const QStringList &properties, const QString &app)
Definition: datamanagementadaptor.cpp:149
Nepomuk2::DBus::resolveDBusArguments
QVariant resolveDBusArguments(const QVariant &v)
Convert QDBusArguments variants into QUrl, QDate, QTime, and QDateTime variants.
Definition: dbustypes.cpp:62
Nepomuk2::DataManagementAdaptor::DataManagementAdaptor
DataManagementAdaptor(Nepomuk2::DataManagementModel *parent)
Definition: datamanagementadaptor.cpp:44
Nepomuk2::DataManagementAdaptor::describeResources
Q_SCRIPTABLE QList< Nepomuk2::SimpleResource > describeResources(const QStringList &resources, int flags, const QStringList &targetParties)
Definition: datamanagementadaptor.cpp:100
Nepomuk2::ImportResourcesCommand
Definition: datamanagementcommand.h:349
Nepomuk2::addProperty
KJob * addProperty(const QList< QUrl > &resources, const QUrl &property, const QVariantList &values, const KComponentData &component=KGlobal::mainComponent())
Add one or more property values to one or more resources.
Definition: datamanagement.cpp:36
Nepomuk2::RemoveResourcesByApplicationCommand
Definition: datamanagementcommand.h:206
Nepomuk2::importResources
KJob * importResources(const KUrl &url, Soprano::RdfSerialization serialization, const QString &userSerialization=QString(), StoreIdentificationMode identificationMode=IdentifyNew, StoreResourcesFlags flags=NoStoreResourcesFlags, const QHash< QUrl, QVariant > &additionalMetadata=QHash< QUrl, QVariant >(), const KComponentData &component=KGlobal::mainComponent())
Import an RDF graph from a URL.
Definition: datamanagement.cpp:154
Nepomuk2::removeProperty
KJob * removeProperty(const QList< QUrl > &resources, const QUrl &property, const QVariantList &values, const KComponentData &component=KGlobal::mainComponent())
Remove values of a property from one or more resources.
Definition: datamanagement.cpp:61
Nepomuk2::DataManagementAdaptor::addProperty
Q_SCRIPTABLE void addProperty(const QStringList &resources, const QString &property, const QVariantList &values, const QString &app)
Definition: datamanagementadaptor.cpp:74
QHash
QObject
Nepomuk2::DataManagementAdaptor::~DataManagementAdaptor
~DataManagementAdaptor()
Definition: datamanagementadaptor.cpp:68
Nepomuk2::RemovePropertyCommand
Definition: datamanagementcommand.h:275
Nepomuk2::RemovePropertiesCommand
Definition: datamanagementcommand.h:251
Nepomuk2::RemoveResourcesCommand
Definition: datamanagementcommand.h:302
Nepomuk2::DataManagementAdaptor::storeResources
Q_SCRIPTABLE QHash< QString, QString > storeResources(const QList< Nepomuk2::SimpleResource > &resources, int identificationMode, int flags, const Nepomuk2::PropertyHash &additionalMetadata, const QString &app)
Definition: datamanagementadaptor.cpp:109
Nepomuk2::CreateResourceCommand
Definition: datamanagementcommand.h:120
Nepomuk2::DataManagementCommand
Definition: datamanagementcommand.h:42
Nepomuk2::AddPropertyCommand
Definition: datamanagementcommand.h:66
Nepomuk2::DataManagementAdaptor::clearCache
Q_SCRIPTABLE void clearCache()
Definition: datamanagementadaptor.cpp:256
Nepomuk2::RemoveDataByApplicationCommand
Definition: datamanagementcommand.h:230
Nepomuk2::PropertyHash
QMultiHash< QUrl, QVariant > PropertyHash
Definition: simpleresource.h:37
Nepomuk2::DBus::registerDBusTypes
void registerDBusTypes()
Definition: dbustypes.cpp:112
simpleresourcegraph.h
Nepomuk2::DataManagementAdaptor::createResource
Q_SCRIPTABLE QString createResource(const QStringList &types, const QString &label, const QString &description, const QString &app)
Definition: datamanagementadaptor.cpp:86
Nepomuk2::DataManagementAdaptor::setProperty
Q_SCRIPTABLE void setProperty(const QStringList &resources, const QString &property, const QVariantList &values, const QString &app)
Definition: datamanagementadaptor.cpp:185
Nepomuk2::DataManagementAdaptor::mergeResources
Q_SCRIPTABLE void mergeResources(const QString &resource1, const QString &resource2, const QString &app)
Definition: datamanagementadaptor.cpp:119
Nepomuk2::removeProperties
KJob * removeProperties(const QList< QUrl > &resources, const QList< QUrl > &properties, const KComponentData &component=KGlobal::mainComponent())
Remove one or more properties from one or more resources.
Definition: datamanagement.cpp:74
Nepomuk2::DataManagementAdaptor::decodeUri
QUrl decodeUri(const QString &s, bool namespaceAbbrExpansion=true) const
Tries to decode a URI including namespace abbreviation lookup for known ontologies (Example: nao:Tag)...
Definition: datamanagementadaptor.cpp:202
Nepomuk2::SetPropertyCommand
Definition: datamanagementcommand.h:93
Nepomuk2::DataManagementAdaptor::removeResources
Q_SCRIPTABLE void removeResources(const QStringList &resources, int flags, const QString &app)
Definition: datamanagementadaptor.cpp:173
Nepomuk2::DescribeResourcesCommand
Definition: datamanagementcommand.h:326
Nepomuk2::removeResources
KJob * removeResources(const QList< QUrl > &resources, Nepomuk2::RemovalFlags flags=Nepomuk2::NoRemovalFlags, const KComponentData &component=KGlobal::mainComponent())
Completely remove resources from the database.
Nepomuk2::setProperty
KJob * setProperty(const QList< QUrl > &resources, const QUrl &property, const QVariantList &values, const KComponentData &component=KGlobal::mainComponent())
Set the values of a property for one or more resources.
Definition: datamanagement.cpp:48
Nepomuk2::DataManagementAdaptor::removeProperty
Q_SCRIPTABLE void removeProperty(const QStringList &resources, const QString &property, const QVariantList &values, const QString &app)
Definition: datamanagementadaptor.cpp:161
datamanagementmodel.h
Nepomuk2::DataManagementAdaptor::removeDataByApplication
Q_SCRIPTABLE void removeDataByApplication(int flags, const QString &app)
Definition: datamanagementadaptor.cpp:135
Nepomuk2::createResource
CreateResourceJob * createResource(const QList< QUrl > &types, const QString &label, const QString &description, const KComponentData &component=KGlobal::mainComponent())
Create a new resource.
Definition: datamanagement.cpp:85
datamanagementcommand.h
Nepomuk2::DataManagementAdaptor::exportResources
Q_SCRIPTABLE QString exportResources(const QStringList &resources, const QString &mimeType, int flags, const QStringList &targetParties)
Definition: datamanagementadaptor.cpp:247
datamanagementadaptor.h
Nepomuk2::StoreResourcesCommand
Definition: datamanagementcommand.h:146
Nepomuk2::decodeUrl
QUrl decodeUrl(const QString &urlsString)
Definition: datamanagementcommand.cpp:96
Nepomuk2::MergeResourcesCommand
Definition: datamanagementcommand.h:185
dbustypes.h
Nepomuk2::DataManagementModel
Definition: datamanagementmodel.h:39
Nepomuk2::DataManagementAdaptor::setPrefixes
void setPrefixes(const QHash< QString, QString > &prefixes)
Set the prefixes that will be supported for script convenience.
Definition: datamanagementadaptor.cpp:230
Nepomuk2::DataManagementAdaptor::importResources
Q_SCRIPTABLE void importResources(const QString &url, const QString &serialization, int identificationMode, int flags, const Nepomuk2::PropertyHash &additionalMetadata, const QString &app)
Definition: datamanagementadaptor.cpp:240
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