Add Get by a channel feature to a manager 53/209053/3
authorhyunho <hhstark.kang@samsung.com>
Tue, 2 Jul 2019 04:37:52 +0000 (13:37 +0900)
committerhyunho <hhstark.kang@samsung.com>
Thu, 4 Jul 2019 01:03:07 +0000 (10:03 +0900)
Change-Id: Ifbc6177a7f362f02b0376dc9f5d9259e1d621579
Signed-off-by: hyunho <hhstark.kang@samsung.com>
notification-ex/db_manager.cc
notification-ex/db_manager.h
notification-ex/manager.cc
notification-ex/manager.h

index 34ceedb..3710d36 100644 (file)
@@ -44,6 +44,7 @@
   " root_id TEXT NOT NULL,\n" \
   " app_id TEXT NOT NULL,\n" \
   " uid INTEGER,\n" \
+  " channel TEXT,\n" \
   " priv_id INTEGER,\n" \
   " pkg_id TEXT,\n" \
   " policy INTEGER,\n" \
@@ -404,11 +405,12 @@ int DBManager::InsertNotification(list<shared_ptr<item::AbstractItem>> addedItem
 
     Bundle b = i->Serialize();
     query = sqlite3_mprintf("INSERT INTO noti_ex_list"
-          " (root_id, app_id, uid, priv_id, pkg_id, policy, data, insert_time)"
-          " VALUES (%Q, %Q, %d, %d, %Q, %d, %Q, %d)",
+          " (root_id, app_id, uid, channel, priv_id, pkg_id, policy, data, insert_time)"
+          " VALUES (%Q, %Q, %d, %Q, %d, %Q, %d, %Q, %d)",
           i->GetId().c_str(),
           i->GetSenderAppId().c_str(),
           uid,
+          i->GetChannel().c_str(),
           util::GetQuarkFromString(i->GetId() + to_string(uid)),
           GetPkgId(i->GetSenderAppId(),uid).c_str(),
           static_cast<int>(i->GetPolicy()),
@@ -584,10 +586,11 @@ int DBManager::UpdateNotification(shared_ptr<item::AbstractItem> updatedItem) {
 
   Bundle b = updatedItem->Serialize();
   query = sqlite3_mprintf("UPDATE noti_ex_list SET"
-     " priv_id = %d, pkg_id = %Q, policy = %d, data = %Q, insert_time = %d"
+     " priv_id = %d, pkg_id = %Q, channel = %Q, policy = %d, data = %Q, insert_time = %d"
      " WHERE root_id = %Q AND app_id = %Q AND uid = %d",
      util::GetQuarkFromString(updatedItem->GetId() + to_string(uid)),
      GetPkgId(updatedItem->GetSenderAppId(), uid).c_str(),
+     updatedItem->GetChannel().c_str(),
      static_cast<int>(updatedItem->GetPolicy()),
      reinterpret_cast<char*>(b.ToRaw().first.get()),
      static_pointer_cast<IItemInfo>(updatedItem->GetInfo())->GetTime(),
@@ -704,7 +707,8 @@ list<shared_ptr<item::AbstractItem>> DBManager::GetNotificationList
   return item_list;
 }
 
-list<shared_ptr<item::AbstractItem>> DBManager::GetNotificationList(uid_t uid) {
+list<shared_ptr<item::AbstractItem>> DBManager::GetNotificationList(
+      uid_t uid, string channel) {
   int ret, sim_mode;
   char* query;
   list<shared_ptr<item::AbstractItem>> item_list;
@@ -716,15 +720,22 @@ list<shared_ptr<item::AbstractItem>> DBManager::GetNotificationList(uid_t uid) {
     LOGI("vconf_get_int");
   }
 
-  if (sim_mode == VCONFKEY_TELEPHONY_SIM_INSERTED) {
-    query = sqlite3_mprintf("SELECT data FROM noti_ex_list WHERE uid = %d"
-                            " ORDER BY insert_time DESC", uid);
-  } else {
-    query = sqlite3_mprintf("SELECT data FROM noti_ex_list"
-            " WHERE  uid = %d AND (policy & %d) == 0 ORDER BY insert_time DESC",
-            uid, static_cast<int>(item::AbstractItem::Policy::SimMode));
+  string channel_query;
+  if (!channel.empty())
+    channel_query = " AND channel = '" + channel + "' ";
+
+  string simmode_query;
+  if (sim_mode != VCONFKEY_TELEPHONY_SIM_INSERTED) {
+    simmode_query = " AND (policy & " +
+        to_string(static_cast<int>(item::AbstractItem::Policy::SimMode)) +
+        ") == 0 ";
   }
 
+  string query_str = "SELECT data FROM noti_ex_list WHERE uid = %d " +
+      channel_query +
+      simmode_query;
+
+  query = sqlite3_mprintf(query_str.c_str(), uid);
   if (!query) {
     LOGE("OOM - sql query");
     return item_list;
index cf687e1..f2751ad 100644 (file)
@@ -43,7 +43,7 @@ class EXPORT_API DBManager {
   static int GetCount(const std::string& root_id, const std::string& app_id, uid_t uid, int* count);
   static int GetCount(const std::string& app_id, uid_t uid, int* count);
   static int DeleteNotification(std::shared_ptr<item::AbstractItem> deletedItem);
-  static std::list<std::shared_ptr<item::AbstractItem>> GetNotificationList(uid_t uid);
+  static std::list<std::shared_ptr<item::AbstractItem>> GetNotificationList(uid_t uid, std::string channel = "");
   static std::list<std::shared_ptr<item::AbstractItem>> GetNotificationList(std::string app_id, uid_t uid);
   static std::list<std::shared_ptr<item::AbstractItem>> GetNotificationList(std::string app_id, std::string root_id, uid_t uid);
 
index 8067aa6..9bf5cac 100644 (file)
@@ -118,8 +118,8 @@ unique_ptr<item::AbstractItem> Manager::FindByRootID(string id) {
   return move(gen_item);
 }
 
-list<unique_ptr<item::AbstractItem>> Manager::Get() {
-  EventInfo info(EventInfo::Get, util::GetAppId(), "");
+list<unique_ptr<item::AbstractItem>> Manager::Get(string channel) {
+  EventInfo info(EventInfo::Get, util::GetAppId(), channel);
   list<Bundle> result = impl_->sender_->Request(info);
   list<unique_ptr<item::AbstractItem>> gen_list;
   for (auto& i : result) {
index 9fd69a3..c009226 100644 (file)
@@ -39,7 +39,7 @@ class EXPORT_API Manager : public IEventObserver {
       std::unique_ptr<IEventListener> listener, std::string receiver_group = "");
   virtual ~Manager();
 
-  std::list<std::unique_ptr<item::AbstractItem>> Get();
+  std::list<std::unique_ptr<item::AbstractItem>> Get(std::string channel = "");
   int Update(std::shared_ptr<item::AbstractItem> noti);
   int Delete(std::shared_ptr<item::AbstractItem> noti);
   int DeleteAll();