Sync with Tizen 2.4 78/46178/1
authorMu-Woong <muwoong.lee@samsung.com>
Mon, 17 Aug 2015 12:59:03 +0000 (21:59 +0900)
committerMu-Woong <muwoong.lee@samsung.com>
Mon, 17 Aug 2015 12:59:03 +0000 (21:59 +0900)
- Add error handling for failures of contacts_record_get_str_p
- Add the init routine for registering trigger item specifications
- Cleanup context item names

Change-Id: Ifbe59d17972efa3090c8de4448f96409758ef456
Signed-off-by: Mu-Woong <muwoong.lee@samsung.com>
12 files changed:
src/app/app_stats_provider.cpp
src/app/app_stats_provider.h
src/app/app_stats_types.h
src/media/media_stats_provider.cpp
src/media/media_stats_provider.h
src/media/media_stats_types.h
src/shared/common_types.h
src/social/log_aggregator.cpp
src/social/social_stats_provider.cpp
src/social/social_stats_provider.h
src/social/social_stats_types.h
src/statistics_context_provider.cpp

index 2496bb8..59a224b 100644 (file)
@@ -76,6 +76,16 @@ bool ctx::app_statistics_provider::is_supported(const char* subject)
        return true;
 }
 
+void ctx::app_statistics_provider::submit_trigger_item()
+{
+       context_manager::register_trigger_item(APP_SUBJ_FREQUENCY, OPS_READ,
+                       "{" TRIG_DEF_RANK "," TRIG_DEF_TOTAL_COUNT "}",
+                       "{"
+                               "\"AppId\":{\"type\":\"string\"},"
+                               TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK
+                       "}");
+}
+
 bool ctx::app_statistics_provider::init()
 {
        app_db_initializer *initializer = new(std::nothrow) app_db_initializer();
index f523a91..f5804bd 100644 (file)
@@ -27,6 +27,7 @@ namespace ctx {
                static context_provider_iface *create(void *data);
                static void destroy(void *data);
                static bool is_supported(const char *subject);
+               static void submit_trigger_item();
 
                int subscribe(const char *subject, ctx::json option, ctx::json *request_result);
                int unsubscribe(const char *subject, ctx::json option);
index 52e9499..96ed505 100644 (file)
 #include <common_types.h>
 
 #define APP_HISTORY_PRIV                       "apphistory.read"
-#define APP_SUBJ_RECENTLY_USED         "app/history/recently_used"
-#define APP_SUBJ_FREQUENTLY_USED       "app/history/frequently_used"
-#define APP_SUBJ_RARELY_USED           "app/history/rarely_used"
-#define APP_SUBJ_PEAK_TIME                     "app/history/peak_time"
-#define APP_SUBJ_COMMON_SETTING                "app/history/common_setting"
-#define APP_SUBJ_FREQUENCY                     "app/history/use_freq"
+#define APP_SUBJ_RECENTLY_USED         "stats/app/recently"
+#define APP_SUBJ_FREQUENTLY_USED       "stats/app/often"
+#define APP_SUBJ_RARELY_USED           "stats/app/rarely"
+#define APP_SUBJ_PEAK_TIME                     "stats/app/peak_time"
+#define APP_SUBJ_COMMON_SETTING                "stats/app/setting"
+#define APP_SUBJ_FREQUENCY                     "stats/app/frequency"
 
 #define APP_TABLE_REMOVABLE_APP        "Log_RemovableApp"
 #define APP_TABLE_REMOVABLE_APP_COLUMNS \
index 849cf2a..d6ad2b7 100644 (file)
@@ -65,6 +65,17 @@ bool ctx::media_statistics_provider::is_supported(const char* subject)
        return true;
 }
 
+void ctx::media_statistics_provider::submit_trigger_item()
+{
+       context_manager::register_trigger_item(MEDIA_SUBJ_MUSIC_FREQUENCY, OPS_READ,
+                       "{" TRIG_DEF_TOTAL_COUNT "}",
+                       "{" TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK "}");
+
+       context_manager::register_trigger_item(MEDIA_SUBJ_VIDEO_FREQUENCY, OPS_READ,
+                       "{" TRIG_DEF_TOTAL_COUNT "}",
+                       "{" TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK "}");
+}
+
 bool ctx::media_statistics_provider::init()
 {
        content_mon = new(std::nothrow) ctx::media_content_monitor();
index 391aad7..49949c3 100644 (file)
@@ -27,6 +27,7 @@ namespace ctx {
                static context_provider_iface *create(void *data);
                static void destroy(void *data);
                static bool is_supported(const char *subject);
+               static void submit_trigger_item();
 
                int subscribe(const char* subject, ctx::json option, ctx::json* request_result);
                int unsubscribe(const char* subject, ctx::json option);
index 278b5e5..79cfe3f 100644 (file)
 #include <common_types.h>
 
 #define MEDIA_HISTORY_PRIV                                     "mediahistory.read"
-#define MEDIA_SUBJ_PEAK_TIME_FOR_MUSIC         "music/history/peak_time"
-#define MEDIA_SUBJ_PEAK_TIME_FOR_VIDEO         "video/history/peak_time"
-#define MEDIA_SUBJ_COMMON_SETTING_FOR_MUSIC    "music/history/common_setting"
-#define MEDIA_SUBJ_COMMON_SETTING_FOR_VIDEO    "video/history/common_setting"
-#define MEDIA_SUBJ_MUSIC_FREQUENCY                     "music/history/play_freq"
-#define MEDIA_SUBJ_VIDEO_FREQUENCY                     "video/history/play_freq"
+#define MEDIA_SUBJ_PEAK_TIME_FOR_MUSIC         "stats/music/peak_time"
+#define MEDIA_SUBJ_PEAK_TIME_FOR_VIDEO         "stats/video/peak_time"
+#define MEDIA_SUBJ_COMMON_SETTING_FOR_MUSIC    "stats/music/setting"
+#define MEDIA_SUBJ_COMMON_SETTING_FOR_VIDEO    "stats/video/setting"
+#define MEDIA_SUBJ_MUSIC_FREQUENCY                     "stats/music/frequency"
+#define MEDIA_SUBJ_VIDEO_FREQUENCY                     "stats/video/frequency"
 
 #define MEDIA_TABLE_NAME       "Log_MediaPlayback"
 #define MEDIA_TABLE_COLUMNS \
index e8a3424..f173df9 100644 (file)
@@ -71,4 +71,9 @@ enum stats_day_of_week_e {
        STATS_DAY_OF_WEEK_SAT,
 };
 
+#define TRIG_DEF_RANK                  "\"Rank\":{\"type\":\"integer\",\"min\":1}"
+#define TRIG_DEF_TOTAL_COUNT   "\"TotalCount\":{\"type\":\"integer\",\"min\":0}"
+#define TRIG_DEF_TIME_OF_DAY   "\"TimeOfDay\":{\"type\":\"string\"}"
+#define TRIG_DEF_DAY_OF_WEEK   "\"DayOfWeek\":{\"type\":\"string\",\"values\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\",\"Weekday\",\"Weekend\"]}"
+
 #endif
index b94400a..658e784 100644 (file)
@@ -132,12 +132,18 @@ void ctx::contact_log_aggregator::insert_contact_log_list(contacts_list_h list)
 
                ctx::json data;
 
-               char* address;
+               char* address = NULL;
                int log_type;
                int duration = 0;
                int accesstime = 0;
 
                contacts_record_get_str_p(record, _contacts_phone_log.address, &address);
+
+               if (!address) {
+                       _W("Getting address failed");
+                       continue;
+               }
+
                contacts_record_get_int(record, _contacts_phone_log.log_type, &log_type);
                contacts_record_get_int(record, _contacts_phone_log.extra_data1, &duration);
                contacts_record_get_int(record, _contacts_phone_log.log_time, &accesstime);
index 01b1688..92bb856 100644 (file)
@@ -64,6 +64,16 @@ bool ctx::social_statistics_provider::is_supported(const char* subject)
        return true;
 }
 
+void ctx::social_statistics_provider::submit_trigger_item()
+{
+       context_manager::register_trigger_item(SOCIAL_SUBJ_FREQUENCY, OPS_READ,
+                       "{" TRIG_DEF_RANK "," TRIG_DEF_TOTAL_COUNT "}",
+                       "{"
+                               "\"Address\":{\"type\":\"string\"},"
+                               TRIG_DEF_TIME_OF_DAY "," TRIG_DEF_DAY_OF_WEEK
+                       "}");
+}
+
 bool ctx::social_statistics_provider::init()
 {
        aggregator = new(std::nothrow) contact_log_aggregator();
index d371780..64ab059 100644 (file)
@@ -27,6 +27,7 @@ namespace ctx {
                static context_provider_iface *create(void *data);
                static void destroy(void *data);
                static bool is_supported(const char *subject);
+               static void submit_trigger_item();
 
                int subscribe(const char* subject, ctx::json option, ctx::json* request_result);
                int unsubscribe(const char* subject, ctx::json option);
index 3f1cccf..b627c67 100644 (file)
@@ -20,8 +20,8 @@
 #include <common_types.h>
 
 #define SOCIAL_HISTORY_PRIV                    "callhistory.read"
-#define SOCIAL_SUBJ_FREQ_ADDRESS       "social/history/frequently_communicated"
-#define SOCIAL_SUBJ_FREQUENCY          "contact/history/comm_freq"
+#define SOCIAL_SUBJ_FREQ_ADDRESS       "stats/contact/often"
+#define SOCIAL_SUBJ_FREQUENCY          "stats/contact/frequency"
 
 #define SOCIAL_TABLE_CONTACT_LOG       "Log_Contact"
 #define SOCIAL_TABLE_CONTACT_LOG_COLUMNS \
index 8e76ae2..62fea4d 100644 (file)
@@ -48,6 +48,7 @@ EXTAPI bool ctx::init_statistics_context_provider()
        register_provider<app_statistics_provider>(APP_SUBJ_PEAK_TIME, APP_HISTORY_PRIV);
        register_provider<app_statistics_provider>(APP_SUBJ_COMMON_SETTING, APP_HISTORY_PRIV);
        register_provider<app_statistics_provider>(APP_SUBJ_FREQUENCY, APP_HISTORY_PRIV);
+       app_statistics_provider::submit_trigger_item();
 
 #ifdef _MOBILE_
        media_statistics_provider::create(NULL);
@@ -57,10 +58,12 @@ EXTAPI bool ctx::init_statistics_context_provider()
        register_provider<media_statistics_provider>(MEDIA_SUBJ_COMMON_SETTING_FOR_VIDEO, MEDIA_HISTORY_PRIV);
        register_provider<media_statistics_provider>(MEDIA_SUBJ_MUSIC_FREQUENCY, MEDIA_HISTORY_PRIV);
        register_provider<media_statistics_provider>(MEDIA_SUBJ_VIDEO_FREQUENCY, MEDIA_HISTORY_PRIV);
+       media_statistics_provider::submit_trigger_item();
 
        social_statistics_provider::create(NULL);
        register_provider<social_statistics_provider>(SOCIAL_SUBJ_FREQ_ADDRESS, SOCIAL_HISTORY_PRIV);
        register_provider<social_statistics_provider>(SOCIAL_SUBJ_FREQUENCY, SOCIAL_HISTORY_PRIV);
+       social_statistics_provider::submit_trigger_item();
 #endif
 
 #ifdef _TV_
@@ -71,6 +74,7 @@ EXTAPI bool ctx::init_statistics_context_provider()
        register_provider<media_statistics_provider>(MEDIA_SUBJ_COMMON_SETTING_FOR_VIDEO, MEDIA_HISTORY_PRIV);
        register_provider<media_statistics_provider>(MEDIA_SUBJ_MUSIC_FREQUENCY, MEDIA_HISTORY_PRIV);
        register_provider<media_statistics_provider>(MEDIA_SUBJ_VIDEO_FREQUENCY, MEDIA_HISTORY_PRIV);
+       media_statistics_provider::submit_trigger_item();
 #endif
 
        return true;