Collection.cpp
Go to the documentation of this file.
1/*
2* This file is part of ArmarX.
3*
4* ArmarX is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License version 2 as
6* published by the Free Software Foundation.
7*
8* ArmarX is distributed in the hope that it will be useful, but
9* WITHOUT ANY WARRANTY; without even the implied warranty of
10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11* GNU General Public License for more details.
12*
13* You should have received a copy of the GNU General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*
16* @package MemoryX::CommonStorage
17* @author Alexey Kozlov ( kozlov at kit dot edu)
18* @date 2012
19* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20* GNU General Public License
21*/
22
23#include "Collection.h"
24
25#include <IceUtil/UUID.h>
26
27#include <mongo/client/dbclient.h>
28
29namespace memoryx
30{
31 // Collection implementation
32 Collection::Collection(const CommonStoragePtr& dbConn, const std::string& collNS) :
33 dbConn(dbConn)
34 {
35 ns = collNS;
36 iceId.name = IceUtil::generateUUID();
37 }
38
39 Ice::Identity
41 {
42 return iceId;
43 }
44
45 // inherited from Collection
46 Ice::Int
47 Collection::count(const ::Ice::Current& c)
48 {
49 std::unique_lock lock(dbConnectionMutex);
50 return dbConn->count(ns);
51 }
52
53 DBStorableData
54 Collection::findByMongoId(const std::string& id, const ::Ice::Current& c)
55 {
56 std::unique_lock lock(dbConnectionMutex);
57 return dbConn->findByMongoId(ns, id);
58 }
59
60 DBStorableDataList
61 Collection::findByFieldValue(const std::string& fieldName,
62 const std::string& fieldValue,
63 const Ice::Current& c)
64 {
65 std::unique_lock lock(dbConnectionMutex);
66 return dbConn->findByFieldValue(ns, fieldName, fieldValue);
67 }
68
69 DBStorableData
70 Collection::findOneByFieldValue(const std::string& fieldName,
71 const std::string& fieldValue,
72 const Ice::Current& c)
73 {
74 std::unique_lock lock(dbConnectionMutex);
75 return dbConn->findOneByFieldValue(ns, fieldName, fieldValue);
76 }
77
78 DBStorableDataList
79 Collection::findByFieldValueList(const std::string& fieldName,
80 const NameList& fieldValueList,
81 const Ice::Current& c)
82 {
83 std::unique_lock lock(dbConnectionMutex);
84 return dbConn->findByFieldValueList(ns, fieldName, fieldValueList);
85 }
86
87 DBStorableData
88 Collection::findOneByQuery(const std::string& query, const Ice::Current& c)
89 {
90 std::unique_lock lock(dbConnectionMutex);
91 return dbConn->findOneByQuery(ns, query);
92 }
93
94 DBStorableDataList
95 Collection::findByQuery(const std::string& query, const ::Ice::Current& c)
96 {
97 std::unique_lock lock(dbConnectionMutex);
98 return dbConn->findByQuery(ns, query);
99 }
100
101 DBStorableDataList
102 Collection::findByConstraintQuery(const std::string& query,
103 const std::string& where,
104 const Ice::Current&)
105 {
106 std::unique_lock lock(dbConnectionMutex);
107 return dbConn->findByQuery(ns, query, where);
108 }
109
110 DBStorableDataList
111 Collection::findAll(const Ice::Current& c)
112 {
113 std::unique_lock lock(dbConnectionMutex);
114 return dbConn->findAll(ns);
115 }
116
117 DBStorableData
118 Collection::findAllUniqueByFieldName(const std::string& fieldName, const ::Ice::Current&)
119 {
120 std::unique_lock lock(dbConnectionMutex);
121 return dbConn->findAllUniqueByFieldName(ns, fieldName);
122 }
123
124 EntityIdList
125 Collection::findAllIds(const Ice::Current& c)
126 {
127 std::unique_lock lock(dbConnectionMutex);
128 return dbConn->findAllIds(ns);
129 }
130
131 NameList
132 Collection::findAllFieldValues(const std::string& fieldName, const ::Ice::Current&)
133 {
134 std::unique_lock lock(dbConnectionMutex);
135 return dbConn->findAllFieldValues(ns, fieldName);
136 }
137
138 std::string
139 Collection::insert(const DBStorableData& obj, const ::Ice::Current& c)
140 {
141 std::unique_lock lock(dbConnectionMutex);
142 return dbConn->insert(ns, obj);
143 }
144
145 std::vector<std::string>
146 Collection::insertList(const DBStorableDataList& objectList, const Ice::Current&)
147 {
148 std::unique_lock lock(dbConnectionMutex);
149 return dbConn->insertList(ns, objectList);
150 }
151
152 bool
153 Collection::update(const DBStorableData& obj, const ::Ice::Current& c)
154 {
155 std::unique_lock lock(dbConnectionMutex);
156 return dbConn->update(ns, obj, "_id");
157 }
158
159 bool
160 Collection::updateWithUserKey(const DBStorableData& obj,
161 const std::string& keyField,
162 const ::Ice::Current& c)
163 {
164 std::unique_lock lock(dbConnectionMutex);
165 return dbConn->update(ns, obj, keyField);
166 }
167
168 bool
169 Collection::updateByQuery(const std::string& query,
170 const DBStorableData& obj,
171 const ::Ice::Current& c)
172 {
173 return dbConn->updateByQuery(ns, query, mongo::fromjson(obj.JSON));
174 }
175
176 std::string
177 Collection::save(const DBStorableData& obj, const Ice::Current& c)
178 {
179 std::unique_lock lock(dbConnectionMutex);
180 return dbConn->insert(ns, obj, true);
181 }
182
183 bool
184 Collection::saveWithUserKey(const DBStorableData& obj,
185 const std::string& keyField,
186 const Ice::Current& c)
187 {
188 std::unique_lock lock(dbConnectionMutex);
189 return dbConn->update(ns, obj, keyField, true);
190 }
191
192 bool
193 Collection::removeByMongoId(const std::string& id, const ::Ice::Current& c)
194 {
195 std::unique_lock lock(dbConnectionMutex);
196 return dbConn->removeByMongoId(ns, id);
197 }
198
199 bool
200 Collection::removeByFieldValue(const std::string& fieldName,
201 const std::string& fieldValue,
202 const Ice::Current& c)
203 {
204 std::unique_lock lock(dbConnectionMutex);
205 return dbConn->removeByFieldValue(ns, fieldName, fieldValue);
206 }
207
208 bool
209 Collection::removeByQuery(const std::string& query, const ::Ice::Current& c)
210 {
211 std::unique_lock lock(dbConnectionMutex);
212 return dbConn->removeByQuery(ns, query);
213 }
214
215 bool
216 Collection::clear(const ::Ice::Current& c)
217 {
218 std::unique_lock lock(dbConnectionMutex);
219 return dbConn->clearCollection(ns);
220 }
221
222 bool
223 Collection::ensureIndex(const std::string& fieldName, bool unique, const ::Ice::Current& c)
224 {
225 std::unique_lock lock(dbConnectionMutex);
226 return dbConn->ensureIndex(ns, fieldName, unique);
227 }
228
229 std::string
230 Collection::getNS(const ::Ice::Current& c)
231 {
232 return ns;
233 }
234} // namespace memoryx
constexpr T c
EntityIdList findAllIds(const ::Ice::Current &=Ice::emptyCurrent) override
bool update(const DBStorableData &obj, const ::Ice::Current &=Ice::emptyCurrent) override
std::string save(const DBStorableData &obj, const ::Ice::Current &=Ice::emptyCurrent) override
Ice::Identity getIceId() const
Collection(const CommonStoragePtr &dbConn, const std::string &collNS)
DBStorableDataList findByQuery(const std::string &query, const ::Ice::Current &c) override
std::string getNS(const ::Ice::Current &=Ice::emptyCurrent) override
bool updateByQuery(const std::string &query, const DBStorableData &obj, const ::Ice::Current &=Ice::emptyCurrent) override
std::string insert(const DBStorableData &obj, const ::Ice::Current &=Ice::emptyCurrent) override
bool removeByQuery(const std::string &query, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableDataList findByFieldValueList(const std::string &fieldName, const NameList &fieldValueList, const ::Ice::Current &=Ice::emptyCurrent) override
bool clear(const ::Ice::Current &c) override
bool removeByFieldValue(const std::string &fieldName, const std::string &fieldValue, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableData findAllUniqueByFieldName(const std::string &fieldName, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableData findOneByFieldValue(const std::string &fieldName, const ::std::string &fieldValue, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableData findOneByQuery(const std::string &query, const ::Ice::Current &c) override
DBStorableDataList findAll(const ::Ice::Current &=Ice::emptyCurrent) override
NameList findAllFieldValues(const std::string &fieldName, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableDataList findByFieldValue(const std::string &fieldName, const ::std::string &fieldValue, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableData findByMongoId(const std::string &id, const ::Ice::Current &c) override
std::vector< std::string > insertList(const DBStorableDataList &objectList, const Ice::Current &=Ice::emptyCurrent) override
Ice::Int count(const ::Ice::Current &=Ice::emptyCurrent) override
bool removeByMongoId(const std::string &id, const ::Ice::Current &=Ice::emptyCurrent) override
bool saveWithUserKey(const DBStorableData &obj, const std::string &keyField, const ::Ice::Current &=Ice::emptyCurrent) override
DBStorableDataList findByConstraintQuery(const std::string &query, const std::string &where, const Ice::Current &) override
bool ensureIndex(const std::string &fieldName, bool unique, const ::Ice::Current &=Ice::emptyCurrent) override
bool updateWithUserKey(const DBStorableData &obj, const std::string &keyField, const ::Ice::Current &=Ice::emptyCurrent) override
VirtualRobot headers.
IceUtil::Handle< CommonStorage > CommonStoragePtr