From: Tomasz Marciniak Date: Tue, 14 Jul 2015 07:08:43 +0000 (+0200) Subject: [Calendar] Fix for default filter. X-Git-Tag: submit/tizen_tv/20150720.124123^2^2~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=638de0eb8f965636dd56550b7d961da42613503c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Calendar] Fix for default filter. [Features] Events and tasks with status or priority set to 'none' should also be handled. Default filter should be set if it was not passed by user. [Verification] Code compiles without errors. TCT pass rate 100% (binary 20150712.4) Change-Id: I64ae93b6759b7bba2a9b700642665ece0b23276c Signed-off-by: Tomasz Marciniak --- diff --git a/src/calendar/calendar.cc b/src/calendar/calendar.cc index 1583873f..5998e55d 100755 --- a/src/calendar/calendar.cc +++ b/src/calendar/calendar.cc @@ -402,6 +402,45 @@ PlatformResult Calendar::Remove(const picojson::object& args, return CalendarItem::Remove(type, id); } +PlatformResult Calendar::SetDefaultFilter(calendar_query_h* calendar_query, int type, int id) { + LoggerD("Entered"); + + const long UNIFIED_CALENDAR_ID = 0; + int error_code = 0; + PlatformResult status = PlatformResult(ErrorCode::NO_ERROR); + calendar_filter_h calendar_filter = nullptr; + const char* view_uri = + (type == CALENDAR_BOOK_TYPE_EVENT) ? _calendar_event._uri : _calendar_todo._uri; + const int book_id = + (type == CALENDAR_BOOK_TYPE_EVENT) ? _calendar_event.calendar_book_id : _calendar_todo.calendar_book_id; + const int is_deleted = + (type == CALENDAR_BOOK_TYPE_EVENT) ? _calendar_event.is_deleted : _calendar_todo.is_deleted; + + error_code = calendar_filter_create(view_uri, &calendar_filter); + if ((status = ErrorChecker(error_code)).IsError()) return status; + + CalendarFilterPtr calendar_filter_ptr(calendar_filter, CalendarFilterDeleter); + + calendar_match_int_flag_e match_int_flag = CALENDAR_MATCH_EQUAL; + if (CALENDAR_BOOK_FILTER_ALL == id || UNIFIED_CALENDAR_ID == id) { + match_int_flag = CALENDAR_MATCH_GREATER_THAN; + } + + error_code = calendar_filter_add_int(calendar_filter, book_id, match_int_flag, id); + if ((status = ErrorChecker(error_code)).IsError()) return status; + + error_code = calendar_filter_add_operator(calendar_filter, CALENDAR_FILTER_OPERATOR_AND); + if ((status = ErrorChecker(error_code)).IsError()) return status; + + error_code = calendar_filter_add_int(calendar_filter, is_deleted, CALENDAR_MATCH_EQUAL, 0); + if ((status = ErrorChecker(error_code)).IsError()) return status; + + error_code = calendar_query_set_filter(*calendar_query, calendar_filter); + status = ErrorChecker(error_code); + + return status; +} + PlatformResult Calendar::Find(const picojson::object& args, picojson::array& array) { if (!CalendarManager::GetInstance().IsConnected()) { return PlatformResult(ErrorCode::UNKNOWN_ERR, "DB Connection failed."); @@ -423,6 +462,7 @@ PlatformResult Calendar::Find(const picojson::object& args, picojson::array& arr const char* view_uri = (type == CALENDAR_BOOK_TYPE_EVENT) ? _calendar_event._uri : _calendar_todo._uri; calendar_query_h calendar_query = nullptr; + error_code = calendar_query_create(view_uri, &calendar_query); if ((status = ErrorChecker(error_code)).IsError()) return status; @@ -443,6 +483,7 @@ PlatformResult Calendar::Find(const picojson::object& args, picojson::array& arr CalendarFilterPtr calendar_filter_ptr(calendar_filter, CalendarFilterDeleter); + unsigned int propertyId = 0; if (name == "startDate" || name == "endDate" || name == "dueDate") { PlatformResult status = CalendarItem::GetPlatformProperty( @@ -768,6 +809,10 @@ PlatformResult Calendar::Find(const picojson::object& args, picojson::array& arr error_code = calendar_query_set_filter(calendar_query, intermediate_filters[0][0].get()); if ((status = ErrorChecker(error_code)).IsError()) return status; + } else { + //filter is not provided so default filter should be set + status = SetDefaultFilter(&calendar_query, type, calendar_id); + if (status.IsError()) return status; } if (!IsNull(args, "sortMode")) { @@ -818,6 +863,7 @@ PlatformResult Calendar::Find(const picojson::object& args, picojson::array& arr } array.reserve(record_count); + LoggerD("Found %d records", record_count); for (int i = 0; i < record_count; ++i) { calendar_record_h current_record = NULL; error_code = diff --git a/src/calendar/calendar.h b/src/calendar/calendar.h index ad9e19f0..2d5db2e1 100755 --- a/src/calendar/calendar.h +++ b/src/calendar/calendar.h @@ -18,6 +18,7 @@ #define CALENDAR_CALENDAR_H_ #include +#include #include "common/picojson.h" #include "common/platform_result.h" @@ -185,6 +186,7 @@ class Calendar { static void ChangeCallback(const char* view_uri, void* user_data); common::PlatformResult ErrorChecker(int errorCode); + common::PlatformResult SetDefaultFilter(calendar_query_h* calendar_query, int type, int id); }; } // namespace calendar diff --git a/src/calendar/calendar_item.cc b/src/calendar/calendar_item.cc index ca811b02..00da331a 100755 --- a/src/calendar/calendar_item.cc +++ b/src/calendar/calendar_item.cc @@ -131,22 +131,26 @@ const PlatformEnumMap CalendarItem::platform_enum_map_ = { {"BUSY-UNAVAILABLE", CALENDAR_EVENT_BUSY_STATUS_UNAVAILABLE}, {"BUSY-TENTATIVE", CALENDAR_EVENT_BUSY_STATUS_TENTATIVE}}}, {kEventPriority, { - {kDefaultEnumKey, CALENDAR_EVENT_PRIORITY_NORMAL}, + {kDefaultEnumKey, CALENDAR_EVENT_PRIORITY_NONE}, + {"NONE", CALENDAR_EVENT_PRIORITY_NONE}, {"LOW", CALENDAR_EVENT_PRIORITY_LOW}, {"MEDIUM", CALENDAR_EVENT_PRIORITY_NORMAL}, {"HIGH", CALENDAR_EVENT_PRIORITY_HIGH}}}, {kTaskPriority, { - {kDefaultEnumKey, CALENDAR_TODO_PRIORITY_NORMAL}, + {kDefaultEnumKey, CALENDAR_TODO_PRIORITY_NONE}, + {"NONE", CALENDAR_TODO_PRIORITY_NONE}, {"LOW", CALENDAR_TODO_PRIORITY_LOW}, {"MEDIUM", CALENDAR_TODO_PRIORITY_NORMAL}, {"HIGH", CALENDAR_TODO_PRIORITY_HIGH}}}, {kEventStatus, { {kDefaultEnumKey, CALENDAR_EVENT_STATUS_NONE}, + {"NONE_EVENT", CALENDAR_EVENT_STATUS_NONE}, {"TENTATIVE", CALENDAR_EVENT_STATUS_TENTATIVE}, {"CONFIRMED", CALENDAR_EVENT_STATUS_CONFIRMED}, {"CANCELLED", CALENDAR_EVENT_STATUS_CANCELLED}}}, {kTaskStatus, { {kDefaultEnumKey, CALENDAR_TODO_STATUS_NONE}, + {"NONE_TASK", CALENDAR_TODO_STATUS_NONE}, {"NEEDS_ACTION", CALENDAR_TODO_STATUS_NEEDS_ACTION}, {"COMPLETED", CALENDAR_TODO_STATUS_COMPLETED}, {"IN_PROCESS", CALENDAR_TODO_STATUS_IN_PROCESS}, @@ -1825,6 +1829,10 @@ PlatformResult CalendarItem::ToJson(int type, calendar_record_h rec, LoggerE("Error: %s", status.message().c_str()); return status; } + + if ("NONE_EVENT" == enum_str) { + enum_str = "CONFIRMED"; + } out["status"] = picojson::value(enum_str); status = GetEnum(type, rec, "priority", kEventPriority, &enum_str); @@ -1832,6 +1840,10 @@ PlatformResult CalendarItem::ToJson(int type, calendar_record_h rec, LoggerE("Error: %s", status.message().c_str()); return status; } + + if ("NONE" == enum_str) { + enum_str = "LOW"; + } out["priority"] = picojson::value(enum_str); status = GetEnum(type, rec, "availability", kEventAvailability, &enum_str); @@ -1854,6 +1866,10 @@ PlatformResult CalendarItem::ToJson(int type, calendar_record_h rec, LoggerE("Error: %s", status.message().c_str()); return status; } + + if ("NONE_TASK" == enum_str) { + enum_str = "NEEDS_ACTION"; + } out["status"] = picojson::value(enum_str); status = GetEnum(type, rec, "priority", kTaskPriority, &enum_str); @@ -1861,6 +1877,10 @@ PlatformResult CalendarItem::ToJson(int type, calendar_record_h rec, LoggerE("Error: %s", status.message().c_str()); return status; } + + if ("NONE" == enum_str) { + enum_str = "LOW"; + } out["priority"] = picojson::value(enum_str); long long int lli;