summaryrefslogtreecommitdiff
path: root/lib-apps-common/inc/Model/DataControlConsumer.h
diff options
context:
space:
mode:
authorAleksandr Sapozhnik <a.sapozhnik@samsung.com>2017-03-13 16:45:17 +0200
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2017-03-14 04:40:50 -0700
commite2ffaea56b3a448d95e12269eaf752685af0884f (patch)
treefa03d5f1b3de355af470638298c65ed234d9b038 /lib-apps-common/inc/Model/DataControlConsumer.h
parent2b944f5ee5bbabe20ee1f25691e59258f66bb02a (diff)
downloadalarm-e2ffaea56b3a448d95e12269eaf752685af0884f.tar.gz
alarm-e2ffaea56b3a448d95e12269eaf752685af0884f.tar.bz2
alarm-e2ffaea56b3a448d95e12269eaf752685af0884f.zip
Update lib-apps-common
Change-Id: If21739d86bed8d4bc59773385b702da8bcd715f8 Signed-off-by: Aleksandr Sapozhnik <a.sapozhnik@samsung.com>
Diffstat (limited to 'lib-apps-common/inc/Model/DataControlConsumer.h')
-rw-r--r--lib-apps-common/inc/Model/DataControlConsumer.h166
1 files changed, 166 insertions, 0 deletions
diff --git a/lib-apps-common/inc/Model/DataControlConsumer.h b/lib-apps-common/inc/Model/DataControlConsumer.h
new file mode 100644
index 0000000..3cb0b24
--- /dev/null
+++ b/lib-apps-common/inc/Model/DataControlConsumer.h
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2017 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MODEL_DATA_CONTROL_CONSUMER_H
+#define MODEL_DATA_CONTROL_CONSUMER_H
+
+#include "Model/DataProvider.h"
+#include "Utils/Bundle.h"
+#include "Utils/CallbackManager.h"
+#include "Utils/Range.h"
+
+#include <data_control_sql.h>
+
+namespace Model
+{
+ /**
+ * @brief Represents the data consumer of the data control.
+ */
+ class EXPORT_API DataControlConsumer
+ {
+ public:
+ typedef DataProvider::DataList DataList;
+
+ /**
+ * @brief List of columns for select query.
+ * The first must be the index column.
+ */
+ typedef Utils::Range<const char **> ColumnList;
+
+ /**
+ * @brief Called after data item changed.
+ * @param[in] Which item data was changed
+ * @param[in] Change type
+ */
+ typedef Utils::CallbackManager<int, data_control_data_change_type_e> DataItemChangeCallback;
+
+ /**
+ * @brief Called when requested Data Item(s) is received.
+ * @param[in] dataList List of received Data Items
+ */
+ typedef std::function<void(DataList dataList)> GetCallback;
+
+ /**
+ * @brief Called when result of insert, update or delete is received.
+ * @param[in] isSuccess Whether operation was successful
+ * @param[in] id Data Item's id if it was inserted
+ */
+ typedef std::function<void(bool isSuccess, int id)> ResultCallback;
+
+ /**
+ * @brief Create data consumer.
+ * @param[in] providerId The data provider's id
+ * @param[in] tableId The table's id
+ * @param[in] columnList The list of columns for select query
+ */
+ DataControlConsumer(const char *providerId, const char *tableId, ColumnList columnList);
+ virtual ~DataControlConsumer();
+
+ DataControlConsumer(const DataControlConsumer &that) = delete;
+ DataControlConsumer &operator=(const DataControlConsumer &that) = delete;
+
+ /**
+ * @brief Retrieve item from database by ID.
+ * @param[in] id ID
+ * @param[in] callback Callback to be called when data item is received
+ */
+ virtual void getDataItem(int id, GetCallback callback);
+
+ /**
+ * @brief Retrieve all data items from database.
+ * @param[in] callback Callback to be called when data items are received
+ */
+ virtual void getDataItems(GetCallback callback);
+
+ /**
+ * @brief Convenience wrapper to insert new or update existing data item.
+ * @see insertDataItem()
+ * @see updateDataItem()
+ */
+ void saveDataItem(const DataItem &item, ResultCallback callback);
+
+ /**
+ * @brief Insert data item into database.
+ * @param[in] item Data item to insert
+ * @param[in] callback Callback to be called when operation is complete
+ */
+ void insertDataItem(const DataItem &item, ResultCallback callback = nullptr);
+
+ /**
+ * @brief Update existing data item in the database.
+ * @param[in] item Data item to update
+ * @param[in] callback Callback to be called when operation is complete
+ */
+ void updateDataItem(const DataItem &item, ResultCallback callback = nullptr);
+
+ /**
+ * @brief Delete data item from the database.
+ * @param[in] id Data item ID
+ * @param[in] callback Callback to be called when operation is complete
+ */
+ void deleteDataItem(int id, ResultCallback callback = nullptr);
+
+ /**
+ * @brief Add/remove data item change callback.
+ */
+ DataItemChangeCallback &onDataItemChanged();
+
+ protected:
+ /**
+ * @brief Create data item from the result cursor.
+ * @param[in] cursor The result cursor
+ * @return Data item or nullptr.
+ */
+ virtual DataItem *createDataItem(result_set_cursor cursor) = 0;
+
+ /**
+ * @brief Create bundle from data item.
+ * @param[in] item Data item
+ * @return Bundle.
+ */
+ virtual Utils::Bundle createBundle(const DataItem &item) = 0;
+
+ /**
+ * @brief Invoke select query to database.
+ * @param[in] where The select query condition
+ * @param[in] callback Callback to be called when operation is completed
+ */
+ void selectDataItems(const char *where, GetCallback callback);
+
+ private:
+ void onSelectResponse(int requestId, data_control_h provider,
+ result_set_cursor result, bool isSuccess, const char *error);
+ void onInsertResponse(int requestId, data_control_h provider,
+ long long id, bool isSuccess, const char *error);
+ void onUpdateResponse(int requestId, data_control_h provider,
+ bool isSuccess, const char *error);
+ void onDeleteResponse(int requestId, data_control_h provider,
+ bool isSuccess, const char *error);
+ void onDataChanged(data_control_h provider,
+ data_control_data_change_type_e type, bundle *data);
+ void onDataCallbackAdded(data_control_h provider,
+ data_control_error_e result, int callbackId);
+
+ data_control_h m_Provider;
+ ColumnList m_ColumnList;
+ int m_ChangeCallbackId;
+ DataItemChangeCallback m_OnDataItemChanged;
+ std::vector<std::pair<int, ResultCallback>> m_ResultCallbacks;
+ std::vector<std::pair<int, GetCallback>> m_GetCallbacks;
+ };
+}
+
+#endif /* MODEL_DATA_CONTROL_CONSUMER_H */