2 // Tizen Web Device API
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 #ifndef TIZENAPIS_PLATFORM_SQL_DATACONTRIL_CONSUMER_H_
19 #define TIZENAPIS_PLATFORM_SQL_DATACONTRIL_CONSUMER_H_
23 #include <dpl/noncopyable.h>
25 #include "ISqlDataControlConsumer.h"
26 #include "DataControlFactory.h"
27 #include <dpl/mutex.h>
30 namespace DataControl {
32 class SQLDataControlConsumer : public ISQLDataControlConsumer
34 friend class DataControlFactory;
38 virtual void insertData(const EventInsertPtr& event);
39 virtual void deleteData(const EventDeletePtr& event);
40 virtual void selectData(const EventSelectPtr& event);
41 virtual void updateData(const EventUpdatePtr& event);
43 virtual ~SQLDataControlConsumer();
44 void setType(std::string& type);
45 void setProviderId(const std::string& id );
46 void setDataId(const std::string& id );
48 std::string getType();
49 std::string getDataId();
50 std::string getProviderId();
52 void SendAppControlLaunchToProvider(void* event);
53 void handlePendingEvent(const EventInsertPtr& event);
54 void handlePendingEvent(const EventDeletePtr& event);
55 void handlePendingEvent(const EventSelectPtr& event);
56 void handlePendingEvent(const EventUpdatePtr& event);
61 std::string m_providerId;
64 std::string getApplicationId(const std::string& provId);
65 std::string getProviderPkgId(const std::string& appId);
66 std::string getCurrentApplicationId();
67 void addArrayToBundle(bundle* passData, std::vector<std::string>& array);
68 void handleCommonErrorEvent(void* userData, unsigned int code, std::string msg);
70 std::string convertIntToString(unsigned int data);
72 static std::vector<unsigned int> m_currentReqIds;
73 bool checkReqIdUniqueness(unsigned int reqId);
75 void removeReqId(unsigned int reqId);
76 std::string generateFileName(unsigned int reqId);
77 void saveArrayToFile(std::string filename, RowData* rowData);
78 void createResultDir();
79 static DPL::Mutex m_mutex;
81 SQLDataControlConsumer(std::string& provId, std::string& dataId, std::string& type);
83 virtual void OnRequestReceived(const EventInsertPtr& event);
84 virtual void OnRequestReceived(const EventDeletePtr& event);
85 virtual void OnRequestReceived(const EventSelectPtr& event);
86 virtual void OnRequestReceived(const EventUpdatePtr& event);
88 std::string m_currentAppId;
89 std::string m_ProviderPkgId;
94 class CommonPendingEvent
97 CommonPendingEvent() {}
98 ~CommonPendingEvent() {}
100 virtual void* getThisObject() const = 0;
103 class EventInsertPendingEvent : public CommonPendingEvent
106 EventInsertPendingEvent() {}
107 EventInsertPendingEvent(void *thisObject, const EventInsertPtr &event) :
108 m_thisObject(thisObject),
113 virtual ~EventInsertPendingEvent()
116 virtual void* getThisObject() const { return m_thisObject; }
117 EventInsertPtr getEvent() const { return m_event; }
120 EventInsertPtr m_event;
123 class EventDeletePendingEvent : public CommonPendingEvent
126 EventDeletePendingEvent() {}
127 EventDeletePendingEvent(void *thisObject, const EventDeletePtr &event) :
128 m_thisObject(thisObject),
133 virtual ~EventDeletePendingEvent()
136 virtual void* getThisObject() const { return m_thisObject; }
137 EventDeletePtr getEvent() const { return m_event; }
140 EventDeletePtr m_event;
143 class EventUpdatePendingEvent : public CommonPendingEvent
146 EventUpdatePendingEvent() {}
147 EventUpdatePendingEvent(void *thisObject, const EventUpdatePtr &event) :
148 m_thisObject(thisObject),
153 virtual ~EventUpdatePendingEvent()
156 virtual void* getThisObject() const { return m_thisObject; }
157 EventUpdatePtr getEvent() const { return m_event; }
160 EventUpdatePtr m_event;
163 class EventSelectPendingEvent : public CommonPendingEvent
166 EventSelectPendingEvent() {}
167 EventSelectPendingEvent(void *thisObject, const EventSelectPtr &event) :
168 m_thisObject(thisObject),
173 virtual ~EventSelectPendingEvent()
176 virtual void* getThisObject() const { return m_thisObject; }
177 EventSelectPtr getEvent() const { return m_event; }
180 EventSelectPtr m_event;