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();
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);
#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 \
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();
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);
#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 \
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
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);
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();
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);
#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 \
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);
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_
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;