From: Mu-Woong Lee Date: Wed, 14 Jun 2017 06:06:26 +0000 (+0900) Subject: Add JobInfo::deserialize(), which replaces two sub-class deserialize() functions X-Git-Tag: accepted/tizen/unified/20170630.083109^2~5^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F66%2F133966%2F2;p=platform%2Fcore%2Fcontext%2Fjob-scheduler.git Add JobInfo::deserialize(), which replaces two sub-class deserialize() functions Change-Id: I6b2a905e3baed0e067cc60ff87aebcd9694c9d84 Signed-off-by: Mu-Woong Lee --- diff --git a/src/shared/JobInfo.cpp b/src/shared/JobInfo.cpp index 8e75261..bca38bf 100644 --- a/src/shared/JobInfo.cpp +++ b/src/shared/JobInfo.cpp @@ -15,13 +15,12 @@ */ #include -#include -#include #include "JobSchedulerTypesPrivate.h" #include "JobInfo.h" #include "JobContext.h" #include "JobAction.h" +#define KEY_JOB_TYPE "JobType" #define KEY_ONE_TIME "OneTime" #define KEY_PERSISTENT "Persistent" #define KEY_REQ_TIMEOUT "ReqTimeout" @@ -148,6 +147,7 @@ const std::string& JobInfo::serialize() void JobInfo::toJson(Json::Value& jsonRoot) { + jsonRoot[KEY_JOB_TYPE] = static_cast(getType()); jsonRoot[KEY_ONE_TIME] = __oneTime; jsonRoot[KEY_PERSISTENT] = __persistent; jsonRoot[KEY_REQ_TIMEOUT] = __requirementTimeout; @@ -195,6 +195,29 @@ JobInfo& JobInfo::setDisjunction(bool disjunction) return *this; } +JobInfo* JobInfo::deserialize(const std::string& serializedStr) +{ + Json::Reader reader; + Json::Value jsonRoot; + JobInfo* job = NULL; + + try { + if (reader.parse(serializedStr, jsonRoot)) { + JobInfo::Type type = static_cast(jsonRoot[KEY_JOB_TYPE].asInt()); + if (type == JobInfo::Type::PERIODIC) { + job = new PeriodicJobInfo(jsonRoot, serializedStr); + } else if (type == JobInfo::Type::ON_DEMAND) { + job = new OnDemandJobInfo(jsonRoot, serializedStr); + } + } + } catch (const Json::Exception& e) { + _E("Exception: %s", e.what()); + return NULL; + } + + return job; +} + PeriodicJobInfo::PeriodicJobInfo(unsigned int intervalMin, time_t anchor) : __intervalMin(intervalMin), @@ -218,24 +241,6 @@ JobInfo::Type PeriodicJobInfo::getType() return JobInfo::Type::PERIODIC; } -PeriodicJobInfo* PeriodicJobInfo::deserialize(const std::string& serializedStr) -{ - Json::Reader reader; - Json::Value jsonRoot; - PeriodicJobInfo* job = NULL; - - try { - if (reader.parse(serializedStr, jsonRoot)) { - job = new PeriodicJobInfo(jsonRoot, serializedStr); - } - } catch (const Json::Exception& e) { - _E("Exception: %s", e.what()); - return NULL; - } - - return job; -} - void PeriodicJobInfo::__toJson(Json::Value& jsonRoot) { jsonRoot[KEY_INTERVAL] = __intervalMin; @@ -266,24 +271,6 @@ JobInfo::Type OnDemandJobInfo::getType() return JobInfo::Type::ON_DEMAND; } -OnDemandJobInfo* OnDemandJobInfo::deserialize(const std::string& serializedStr) -{ - Json::Reader reader; - Json::Value jsonRoot; - OnDemandJobInfo* job = NULL; - - try { - if (reader.parse(serializedStr, jsonRoot)) { - return new OnDemandJobInfo(jsonRoot, serializedStr); - } - } catch (const Json::Exception& e) { - _E("Exception: %s", e.what()); - return NULL; - } - - return job; -} - OnDemandJobInfo::~OnDemandJobInfo() { } diff --git a/src/shared/JobInfo.h b/src/shared/JobInfo.h index c55d304..af32c31 100644 --- a/src/shared/JobInfo.h +++ b/src/shared/JobInfo.h @@ -67,6 +67,8 @@ namespace ctx { /* Legacy support */ JobInfo& setDisjunction(bool disjunction); + static JobInfo* deserialize(const std::string& serializedStr); + protected: JobInfo(); JobInfo(Json::Value& jsonRoot, const std::string& serializedStr); @@ -93,16 +95,13 @@ namespace ctx { class PeriodicJobInfo : public JobInfo { public: PeriodicJobInfo(unsigned int intervalMin, time_t anchor); + PeriodicJobInfo(Json::Value& jsonRoot, const std::string& serializedStr); ~PeriodicJobInfo(); JobInfo::Type getType(); - static PeriodicJobInfo* deserialize(const std::string& serializedStr); - private: - PeriodicJobInfo(Json::Value& jsonRoot, const std::string& serializedStr); - void __toJson(Json::Value& jsonRoot); unsigned int __intervalMin; @@ -113,6 +112,7 @@ namespace ctx { class OnDemandJobInfo : public JobInfo { public: OnDemandJobInfo(); + OnDemandJobInfo(Json::Value& jsonRoot, const std::string& serializedStr); ~OnDemandJobInfo(); @@ -120,11 +120,7 @@ namespace ctx { OnDemandJobInfo& addTrigger(JobTrigger* trigger); - static OnDemandJobInfo* deserialize(const std::string& serializedStr); - private: - OnDemandJobInfo(Json::Value& jsonRoot, const std::string& serializedStr); - void __toJson(Json::Value& jsonRoot); std::list __triggers;