C++: Add managed by search into SearchAgent
[smartapi.git] / Common / C++ / SmartAPI / smartapi / agents / SearchAgent.h
1 #ifndef __SEARCHAGENT_H__
2 #define __SEARCHAGENT_H__
3
4 #include "Agent.h"
5 #include <QString>
6 #include <QList>
7
8 class SearchAgent : public Agent
9 {
10         Q_OBJECT
11
12 public:
13         SearchAgent(QString myId, QNetworkAccessManager* am = NULL);
14         ~SearchAgent();
15
16         void setEntity(Entity* e);
17         void setRegistrationServiceUri(QString u) { mRegistrationUri = u; }
18         void doSearch(int callId, QObject* caller, const char* onSuccess, const char* onFail, QVariant userData);
19
20         QList<Entity*> searchSync();
21
22         QList<Entity*> searchByPointAndTypeSync(int freshnessInDays, double latitude, double longitude, int distanceInKm, QStringList types);
23         QList<Entity*> searchByNameAndTypeSync(int freshnessInDays, QStringList keywords, QStringList types);
24         QList<Entity*> searchByIdSync(int freshnessInDays, QString idRegex);
25         QList<Entity*> searchByDescriptionSync(int freshnessInDays, QString searchString);
26
27         QList<Entity*> searchByRegistrant(QString registrantId);
28         QList<Entity*> searchByRegistrant(QString registrantId, QString type);
29         QList<Entity*> searchById(QString idRegex);
30         QList<Entity*> searchById(QString idRegex, QString type);
31         QList<Entity*> searchByPoint(double latitude, double longitude, double distanceInKm);
32         QList<Entity*> searchByPoint(double latitude, double longitude, double distanceInKm, QString type);
33         QList<Entity*> searchByType(QString type);
34
35         void hasChanged(int callId, QObject* caller, const char* onSuccess, const char* onFail, Entity* entity);
36         void hasChanged(int callId, QObject* caller, const char* onSuccess, const char* onFail, QString entityId, QString checksum);
37
38         Entity* fetchBySmartAPIId(QString idToFetch);
39
40         void clear();
41         void clear(QString entityUri);
42
43         void ofId(QString searchString);
44         void ofIds(QStringList searchStrings);
45         void ofServedById(QString searchString);
46         void ofManagedById(QString searchString);
47         void ofRegistrantId(QString registrantId);
48         void ofName(QString searchString, bool exactMatch = false);
49         void ofType(QString type);
50         void ofDescription(QString searchString);
51         void ofOutputCategory(QString category);
52         void ofInputCategory(QString category);
53         void ofTopic(QString searchString, bool exactMatch = false);
54         void ofTheme(QString searchString, bool exactMatch = false);
55         void ofLocality(QString searchString, bool exactMatch = false);
56         void ofCountry(QString searchString, bool exactMatch = false);
57
58         void anyOfNames(QStringList searchStrings);
59         void anyOfTypes(QStringList types);
60         void minutesOldData(int minutes);
61         void hoursOldData(int hours);
62         void daysOldData(int days);
63         void monthsOldData(int months);
64         void yearsOldData(int years);
65         void polygonSearchArea(QList<Coordinates*> polygon);
66         void multipolygonSearchArea(QList<QList<Coordinates*> > polygons);
67         void rectangleSearchArea(Coordinates* minCoordinates, Coordinates* maxCoordinates);
68         void pointSearchArea(Coordinates* center, double kilometers);
69         void ringSearchArea(Coordinates* center, double minRadius, double maxRadius);
70
71 public slots:
72         void onItemSearchFailed(int callId, int errorCode, QVariant userData);
73         void onItemsFound(int callId, QVariant replyContentType, QByteArray replyData, QVariant userData);
74         void onHasChangedResult(int callId, QVariant replyContentType, QByteArray replyData, QVariant userData);
75
76 signals:
77         void itemsFound(int, QList<Entity*>);
78         void searchError(int, QVariant);
79
80 private:
81         QString mGeneratedBy;
82         Entity* mEntity;
83         QString mRegistrationUri;
84 };
85
86 #endif // __SEARCHAGENT_H__