Fixes: Typo for QctResourceIriResolver's pimpl class
[qtcontacts-tracker:qtcontacts-tracker.git] / src / lib / sparqlresolver.h
1 /*********************************************************************************
2  ** This file is part of QtContacts tracker storage plugin
3  **
4  ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
5  **
6  ** Contact:  Nokia Corporation (info@qt.nokia.com)
7  **
8  ** GNU Lesser General Public License Usage
9  ** This file may be used under the terms of the GNU Lesser General Public License
10  ** version 2.1 as published by the Free Software Foundation and appearing in the
11  ** file LICENSE.LGPL included in the packaging of this file.  Please review the
12  ** following information to ensure the GNU Lesser General Public License version
13  ** 2.1 requirements will be met:
14  ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15  **
16  ** In addition, as a special exception, Nokia gives you certain additional rights.
17  ** These rights are described in the Nokia Qt LGPL Exception version 1.1, included
18  ** in the file LGPL_EXCEPTION.txt in this package.
19  **
20  ** Other Usage
21  ** Alternatively, this file may be used in accordance with the terms and
22  ** conditions contained in a signed written agreement between you and Nokia.
23  *********************************************************************************/
24
25 #ifndef QCT_SPARQLRESOLVER_H_
26 #define QCT_SPARQLRESOLVER_H_
27
28 #include <cubi.h>
29 #include <QtSparql/QtSparql>
30
31 #include "libqtcontacts_extensions_tracker_global.h"
32
33 ////////////////////////////////////////////////////////////////////////////////////////////////////
34
35 class QctSparqlResolverData;
36 class LIBQTCONTACTS_EXTENSIONS_TRACKER_EXPORT QctSparqlResolver : public QObject
37 {
38     Q_OBJECT
39
40 public: // constants
41     static const int ColumnLimit;
42
43 protected: // constructor & destructor
44     explicit QctSparqlResolver(QctSparqlResolverData *data, QObject *parent = 0);
45     virtual ~QctSparqlResolver();
46
47 public: // methods
48     bool lookupAndWait();
49
50 public: // attributes
51     void setClassIris(const QStringList &classIris);
52     const QStringList & classIris() const;
53
54     bool isFinished() const;
55     const QList<QSparqlError> & errors() const;
56
57 Q_SIGNALS:
58     void finished();
59
60 public Q_SLOTS:
61     bool lookup();
62
63 protected: // virtual methods
64     virtual QList<Cubi::Projection> makeProjections() = 0;
65     virtual void buildResult(int offset, const QSparqlResult *result) = 0;
66
67     virtual QList<QSparqlQuery> makeRestrictedQueries() = 0;
68     virtual void buildRestrictedResult(QSparqlResult *result) = 0;
69
70 private Q_SLOTS:
71     void onResultFinished();
72
73 private: // methods
74     QList<QSparqlQuery> makeQueries();
75     void parseResults();
76
77 protected: // fields
78     QExplicitlySharedDataPointer<QctSparqlResolverData> d;
79 };
80
81 ////////////////////////////////////////////////////////////////////////////////////////////////////
82
83 class QctTrackerIdResolverData;
84 class LIBQTCONTACTS_EXTENSIONS_TRACKER_EXPORT QctTrackerIdResolver : public QctSparqlResolver
85 {
86     Q_OBJECT
87
88 public: // constructor & destructor
89     explicit QctTrackerIdResolver(const QStringList &resourceIris, QObject *parent = 0);
90     virtual ~QctTrackerIdResolver();
91
92 public: // attributes
93     const QStringList & resourceIris() const;
94     const QList<uint> & trackerIds() const;
95
96 protected: // virtual QctSparqlResolver methods
97     virtual QList<Cubi::Projection> makeProjections();
98     virtual void buildResult(int offset, const QSparqlResult *result);
99
100     virtual QList<QSparqlQuery> makeRestrictedQueries();
101     virtual void buildRestrictedResult(QSparqlResult *result);
102
103 protected:
104     const QctTrackerIdResolverData * data() const { return reinterpret_cast<const QctTrackerIdResolverData *>(d.data()); }
105     QctTrackerIdResolverData * data() { return reinterpret_cast<QctTrackerIdResolverData *>(d.data()); }
106 };
107
108 ////////////////////////////////////////////////////////////////////////////////////////////////////
109
110 class QctTrackerIriResolverData;
111 class LIBQTCONTACTS_EXTENSIONS_TRACKER_EXPORT QctResourceIriResolver : public QctSparqlResolver
112 {
113     Q_OBJECT
114
115 public: // constructor & destructor
116     explicit QctResourceIriResolver(const QList<uint> &trackerIds, QObject *parent = 0);
117     virtual ~QctResourceIriResolver();
118
119 public: // attributes
120     const QList<uint> & trackerIds() const;
121     const QStringList & resourceIris() const;
122
123 protected: // virtual QctSparqlResolver methods
124     virtual QList<Cubi::Projection> makeProjections();
125     virtual void buildResult(int offset, const QSparqlResult *result);
126
127     virtual QList<QSparqlQuery> makeRestrictedQueries();
128     virtual void buildRestrictedResult(QSparqlResult *result);
129
130 protected:
131     const QctTrackerIriResolverData * data() const { return reinterpret_cast<const QctTrackerIriResolverData *>(d.data()); }
132     QctTrackerIriResolverData * data() { return reinterpret_cast<QctTrackerIriResolverData *>(d.data()); }
133 };
134
135 ////////////////////////////////////////////////////////////////////////////////////////////////////
136
137 #endif /* QCT_SPARQLRESOLVER_H_ */