public:
virtual ~ContextStore();
- virtual int insert(const std::vector<std::string>& columns, Tuple* record);
- virtual int insert(const std::vector<std::string>& columns, std::vector<Tuple*>& records);
+ virtual int insert(const std::string& columns, Tuple* record);
+ virtual int insert(const std::string& columns, std::vector<Tuple*>& records);
virtual int retrieve(const ContextStoreSearchQuery& query, std::vector<Tuple*>& result);
virtual int remove(const std::string& selection);
~ContextStoreManager();
int getStore(const std::string& uri, ContextStore** contextStore);
- int removeStore(const std::string& uri);
};
}
ContextStoreSearchQuery& setSortOrder(const std::string& sortOrder);
ContextStoreSearchQuery& setLimit(unsigned int limit);
- bool valid();
+ const std::string& getProjection() const;
+ const std::string& getSelection() const;
+ const std::string& getSortOrder() const;
+ unsigned int getLimit() const;
+
+ bool valid() const;
private:
std::string __projection;
{
}
-int ContextStore::insert(const std::vector<std::string>& columns, Tuple* record)
+int ContextStore::insert(const std::string& columns, Tuple* record)
{
return E_SUPPORT;
}
-int ContextStore::insert(const std::vector<std::string>& columns, std::vector<Tuple*>& records)
+int ContextStore::insert(const std::string& columns, std::vector<Tuple*>& records)
{
return E_SUPPORT;
}
{
return E_SUPPORT;
}
-
-int ContextStoreManager::removeStore(const std::string& uri)
-{
- return E_SUPPORT;
-}
return *this;
}
-bool ContextStoreSearchQuery::valid()
+const std::string& ContextStoreSearchQuery::getProjection() const
+{
+ return __projection;
+}
+
+const std::string& ContextStoreSearchQuery::getSelection() const
+{
+ return __selection;
+}
+
+const std::string& ContextStoreSearchQuery::getSortOrder() const
+{
+ return __sortOrder;
+}
+
+unsigned int ContextStoreSearchQuery::getLimit() const
+{
+ return __limit;
+}
+
+bool ContextStoreSearchQuery::valid() const
{
return false;
}
{
}
-int ContextStore::insert(const std::vector<std::string>& columns, Tuple* record)
+int ContextStore::insert(const std::string& columns, Tuple* record)
{
return E_SUPPORT;
}
-int ContextStore::insert(const std::vector<std::string>& columns, std::vector<Tuple*>& records)
+int ContextStore::insert(const std::string& columns, std::vector<Tuple*>& records)
{
return E_SUPPORT;
}
*/
#include <ServiceProxy.h>
-#include <IServiceResultListener.h>
-#include <IServiceSignalListener.h>
#include <ContextStoreTypesPrivate.h>
#include <ContextStoreManager.h>
#include "PlatformManagedStore.h"
return &proxy;
}
-template<typename StoreType>
-static ContextStore* __createStore(const std::string& uri, int* error)
+static ContextStore* __createPlatformManagedStore(const std::string& uri, int* error)
{
- StoreType* store = new(std::nothrow) StoreType(__getServiceProxy());
+ PlatformManagedStore* store = new(std::nothrow) PlatformManagedStore(__getServiceProxy());
if (!store) {
*error = E_NO_MEM;
int error = E_NONE;
ContextStore* _store = NULL;
- _store = __createStore<PlatformManagedStore>(uri, &error);
+ _store = __createPlatformManagedStore(uri, &error);
IF_FAIL_RETURN(_store, error);
*store = _store;
return E_NONE;
}
-
-int ContextStoreManager::removeStore(const std::string& uri)
-{
- _D("Dropping the store %s", uri.c_str());
-
- int error = E_NONE;
-
- error = PlatformManagedStore::destroy(uri, __getServiceProxy());
-
- if (error != E_NONE)
- _E("%s", CTX_ERROR_STR(error));
-
- return error;
-}
return *this;
}
-bool ContextStoreSearchQuery::valid()
+const std::string& ContextStoreSearchQuery::getProjection() const
+{
+ return __projection;
+}
+
+const std::string& ContextStoreSearchQuery::getSelection() const
+{
+ return __selection;
+}
+
+const std::string& ContextStoreSearchQuery::getSortOrder() const
+{
+ return __sortOrder;
+}
+
+unsigned int ContextStoreSearchQuery::getLimit() const
+{
+ return __limit;
+}
+
+bool ContextStoreSearchQuery::valid() const
{
// TODO
return true;
int PlatformManagedStore::init(const std::string& uri)
{
- // TODO
- return E_SUPPORT;
+ int error = __proxy->call(METHOD_GET_ACCESS, g_variant_new("(s)", uri.c_str()));
+ __uri = uri;
+ return error;
}
-int PlatformManagedStore::insert(const std::vector<std::string>& columns, Tuple* record)
+int PlatformManagedStore::insert(const std::string& columns, Tuple* record)
{
- // TODO
- return E_SUPPORT;
+ if (columns.empty() || record == NULL) {
+ delete record;
+ return E_PARAM;
+ }
+
+ GVariant* param = g_variant_new("(ssv)", __uri.c_str(), columns.c_str(), Tuple::toGVariant(record));
+ return __proxy->call(METHOD_INSERT, param);
}
-int PlatformManagedStore::insert(const std::vector<std::string>& columns, std::vector<Tuple*>& records)
+int PlatformManagedStore::insert(const std::string& columns, std::vector<Tuple*>& records)
{
- // TODO
- return E_SUPPORT;
+ if (columns.empty() || records.empty()) {
+ for (auto& tuple : records) {
+ delete tuple;
+ }
+ records.clear();
+ return E_PARAM;
+ }
+
+ GVariant* param = g_variant_new("(ssv)", __uri.c_str(), columns.c_str(), Tuple::toGVariant(records));
+ return __proxy->call(METHOD_INSERT, param);
}
int PlatformManagedStore::retrieve(const ContextStoreSearchQuery& query, std::vector<Tuple*>& result)
{
- // TODO
- return E_SUPPORT;
-}
+ IF_FAIL_RETURN(query.valid(), E_PARAM);
-int PlatformManagedStore::remove(const std::string& selection)
-{
- // TODO
- return E_SUPPORT;
+ GVariant* param = g_variant_new("(ssssu)", __uri.c_str(),
+ query.getProjection().c_str(), query.getSelection().c_str(),
+ query.getSortOrder().c_str(), static_cast<guint32>(query.getLimit()));
+
+ GVariant* outParam = NULL;
+ int error = __proxy->call(METHOD_RETRIEVE, param, &outParam);
+ IF_FAIL_RETURN_TAG(error == E_NONE, error, _E, "%s", CTX_ERROR_STR(error));
+
+ result = Tuple::buildFrom(g_variant_get_child_value(outParam, IDX_RETRIEVE_RESULT));
+ return E_NONE;
}
-int PlatformManagedStore::destroy(const std::string& uri, ServiceProxy* proxy)
+int PlatformManagedStore::remove(const std::string& selection)
{
- // TODO
- return E_NONE;
+ return __proxy->call(METHOD_REMOVE, g_variant_new("(ss)", __uri.c_str(), selection.c_str()));
}
#define __CONTEXT_STORE_PLATFORM_MANAGED_STORE_H__
#include <ServiceProxy.h>
+#include <IServiceResultListener.h>
+#include <IServiceSignalListener.h>
#include <ContextStore.h>
#include <ContextStoreTypesPrivate.h>
int init(const std::string& uri);
- int insert(const std::vector<std::string>& columns, Tuple* record);
- int insert(const std::vector<std::string>& columns, std::vector<Tuple*>& records);
+ int insert(const std::string& columns, Tuple* record);
+ int insert(const std::string& columns, std::vector<Tuple*>& records);
int retrieve(const ContextStoreSearchQuery& query, std::vector<Tuple*>& result);
int remove(const std::string& selection);
- static int destroy(const std::string& uri, ServiceProxy* proxy);
-
private:
ServiceProxy* __proxy;
+ std::string __uri;
};
}
#define CTX_CONTEXT_STORE "ContextStore"
#define CTX_CONTEXT_STORE_SPEC \
- "<method name='test'>" \
- " <arg type='i' name='attr' direction='in'/>" \
- " <arg type='i' name='return' direction='out'/>" \
+ "<method name='" METHOD_GET_ACCESS "'>" \
+ " <arg type='s' name='uri' direction='in'/>" \
+ " <arg type='s' name='path' direction='out'/>" \
+ "</method>" \
+ "<method name='" METHOD_INSERT "'>" \
+ " <arg type='s' name='uri' direction='in'/>" \
+ " <arg type='s' name='columns' direction='in'/>" \
+ " <arg type='v' name='values' direction='in'/>" \
+ "</method>" \
+ "<method name='" METHOD_RETRIEVE "'>" \
+ " <arg type='s' name='uri' direction='in'/>" \
+ " <arg type='s' name='projection' direction='in'/>" \
+ " <arg type='s' name='selection' direction='in'/>" \
+ " <arg type='s' name='sortOrder' direction='in'/>" \
+ " <arg type='u' name='limit' direction='in'/>" \
+ " <arg type='v' name='values' direction='out'/>" \
+ "</method>" \
+ "<method name='" METHOD_REMOVE "'>" \
+ " <arg type='s' name='uri' direction='in'/>" \
+ " <arg type='s' name='selection' direction='in'/>" \
"</method>"
+#define METHOD_GET_ACCESS "GetAccess"
+#define METHOD_INSERT "Insert"
+#define METHOD_RETRIEVE "Retrieve"
+#define METHOD_REMOVE "Remove"
+
+#define IDX_RETRIEVE_RESULT 0
+
#endif