From 3bfd314312ada32f441c98f83063a8975e8e14ed Mon Sep 17 00:00:00 2001 From: Somin Kim Date: Mon, 22 Aug 2016 16:25:55 +0900 Subject: [PATCH] Custom types are modified Change-Id: I9c895c1a879e057bc8cda5fbda0d0ecff26b38a9 Signed-off-by: Somin Kim --- src/custom/CustomManager.cpp | 56 ++++++++++++++++++++++---------------------- src/custom/CustomTypes.h | 45 +++++++++++++++++++---------------- src/shared/DbHandleBase.cpp | 6 ++--- 3 files changed, 56 insertions(+), 51 deletions(-) diff --git a/src/custom/CustomManager.cpp b/src/custom/CustomManager.cpp index 6bb7a5e..5ec516f 100644 --- a/src/custom/CustomManager.cpp +++ b/src/custom/CustomManager.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "CustomManager.h" #include "CustomProvider.h" #include "CustomTypes.h" @@ -67,27 +68,27 @@ int CustomManager::write(Json data, Json *requestResult) { int error = ERR_NONE; std::string req; - data.get(NULL, CUSTOM_KEY_REQ, &req); + data.get(NULL, TRIG_CUSTOM_KEY_REQ, &req); std::string packageId; std::string name; data.get(NULL, KEY_CLIENT_PKG_ID, &packageId); - data.get(NULL, CUSTOM_KEY_NAME, &name); - std::string subj = std::string(SUBJ_CUSTOM) + CUSTOM_SEPERATOR + packageId + CUSTOM_SEPERATOR + name; + data.get(NULL, TRIG_CUSTOM_KEY_NAME, &name); + std::string subj = std::string(SUBJ_CUSTOM) + TRIG_SUBJECT_SEPERATOR + packageId + TRIG_SUBJECT_SEPERATOR + name; - if (req == CUSTOM_REQ_TYPE_ADD) { + if (req == TRIG_CUSTOM_REQ_ADD) { Json tmpl; - data.get(NULL, CUSTOM_KEY_ATTRIBUTES, &tmpl); + data.get(NULL, TRIG_TMPL_KEY_ATTRIBUTE, &tmpl); error = __addCustomItem(subj, name, tmpl, packageId); - } else if (req == CUSTOM_REQ_TYPE_REMOVE) { + } else if (req == TRIG_CUSTOM_REQ_REMOVE) { error = __removeCustomItem(subj); if (error == ERR_NONE) { - requestResult->set(NULL, CUSTOM_KEY_SUBJECT, subj); + requestResult->set(NULL, TRIG_TMPL_KEY_SUBJECT, subj); } - } else if (req == CUSTOM_REQ_TYPE_PUBLISH) { + } else if (req == TRIG_CUSTOM_REQ_PUBLISH) { Json fact; - data.get(NULL, CUSTOM_KEY_FACT, &fact); + data.get(NULL, TRIG_CUSTOM_KEY_FACT, &fact); error = __publishData(subj, fact); } @@ -108,12 +109,11 @@ bool CustomManager::__initialize() { /* Create custom template table */ std::vector record; - bool ret = __dbManager.executeSync(CUSTOM_TEMPLATE_TABLE_SCHEMA, &record); + bool ret = __dbManager.executeSync(CREATE_CUSTOM_TMPL_TABLE_QUERY, &record); IF_FAIL_RETURN_TAG(ret, false, _E, "Create template table failed"); /* Register custom items */ - std::string qSelect = "SELECT * FROM ContextTriggerCustomTemplate"; - ret = __dbManager.executeSync(qSelect.c_str(), &record); + ret = __dbManager.executeSync(SELECT_CUSTOM_TMPL_TABLE_QUERY, &record); IF_FAIL_RETURN_TAG(ret, false, _E, "Failed to query custom templates"); IF_FAIL_RETURN(record.size() > 0, true); @@ -125,10 +125,10 @@ bool CustomManager::__initialize() std::string name; std::string attributes; std::string owner; - elem.get(NULL, CUSTOM_KEY_SUBJECT, &subject); - elem.get(NULL, CUSTOM_KEY_NAME, &name); - elem.get(NULL, CUSTOM_KEY_ATTRIBUTES, &attributes); - elem.get(NULL, CUSTOM_KEY_OWNER, &owner); + elem.get(NULL, CUSTOM_COLUMN_SUBJECT, &subject); + elem.get(NULL, CUSTOM_COLUMN_NAME, &name); + elem.get(NULL, CUSTOM_COLUMN_ATTRIBUTE, &attributes); + elem.get(NULL, CUSTOM_COLUMN_OWNER, &owner); error = __addCustomItem(subject.c_str(), name, Json(attributes), owner, true); if (error != ERR_NONE) { @@ -162,8 +162,8 @@ int CustomManager::__addCustomItem(std::string subject, std::string name, Json t /* Insert item to custom template db */ if (!isInit) { - std::string q = "INSERT OR IGNORE INTO ContextTriggerCustomTemplate (subject, name, attributes, owner) VALUES ('" - + subject + "', '" + name + "', '" + tmpl.str() + "', '" + owner + "'); "; + std::string q = std::string(INSERT_CUSTOM_TMPL_QUERY) + "('" + subject + "', '" + + name + "', '" + tmpl.str() + "', '" + owner + "'); "; std::vector record; bool ret = __dbManager.executeSync(q.c_str(), &record); IF_FAIL_RETURN_TAG(ret, ERR_OPERATION_FAILED, _E, "Failed to query custom templates"); @@ -183,7 +183,7 @@ int CustomManager::__removeCustomItem(std::string subject) __customMap.erase(it); /* Delete item from custom template db */ - std::string q = "DELETE FROM ContextTriggerCustomTemplate WHERE subject = '" + subject + "'"; + std::string q = std::string(DELETE_CUSTOM_TMPL_QUERY) + "'" + subject + "'"; std::vector record; bool ret = __dbManager.executeSync(q.c_str(), &record); IF_FAIL_RETURN_TAG(ret, ERR_OPERATION_FAILED, _E, "Failed to query custom templates"); @@ -217,28 +217,28 @@ bool __isValidFact(std::string subject, Json& fact) std::string key = *it; std::string type; - ret = tmpl.get(key.c_str(), "type", &type); + ret = tmpl.get(key.c_str(), TRIG_TMPL_KEY_TYPE, &type); if (!ret) { - int size = tmpl.getSize(key.c_str(), "enum"); + int size = tmpl.getSize(key.c_str(), TRIG_TMPL_TYPE_ENUM); IF_FAIL_RETURN_TAG(size >= 0, false, _E, "Invalid template"); - type = "enum"; + type = TRIG_TMPL_TYPE_ENUM; } - if (type == "integer") { + if (type == TRIG_TMPL_TYPE_INTEGER) { int val; ret = fact.get(NULL, key.c_str(), &val); IF_FAIL_RETURN_TAG(ret, false, _E, "Custom fact: invalid data type"); ret = __checkValueInt(tmpl, key, val); IF_FAIL_RETURN_TAG(ret, false, _E, "Custom fact: invalid value"); - } else if (type == "string") { + } else if (type == TRIG_TMPL_TYPE_STRING) { std::string val_str; ret = fact.get(NULL, key.c_str(), &val_str); IF_FAIL_RETURN_TAG(ret, false, _E, "Custom fact: invalid data type"); ret = __checkValueString(tmpl, key, val_str); IF_FAIL_RETURN_TAG(ret, false, _E, "Custom fact: invalid value"); - } else if (type == "enum") { + } else if (type == TRIG_TMPL_TYPE_ENUM) { std::string val_str; ret = fact.get(NULL, key.c_str(), &val_str); IF_FAIL_RETURN_TAG(ret, false, _E, "Custom fact: invalid data type"); @@ -258,11 +258,11 @@ bool __checkValueInt(Json& tmpl, std::string key, int value) { int min, max; - if (tmpl.get(key.c_str(), "minimum", &min)) { + if (tmpl.get(key.c_str(), TRIG_TMPL_KEY_MIN, &min)) { IF_FAIL_RETURN(value >= min, false); } - if (tmpl.get(key.c_str(), "maximum", &max)) { + if (tmpl.get(key.c_str(), TRIG_TMPL_KEY_MAX, &max)) { IF_FAIL_RETURN(value <= max, false); } @@ -279,7 +279,7 @@ bool __checkValueEnum(Json& tmpl, std::string key, std::string value) { /* check acceptable value */ std::string tmplValue; - for (int i = 0; tmpl.getAt(key.c_str(), "enum", i, &tmplValue); i++) { + for (int i = 0; tmpl.getAt(key.c_str(), TRIG_TMPL_TYPE_ENUM, i, &tmplValue); i++) { if (tmplValue == value) return true; } diff --git a/src/custom/CustomTypes.h b/src/custom/CustomTypes.h index 8aecdfa..b3f94d5 100644 --- a/src/custom/CustomTypes.h +++ b/src/custom/CustomTypes.h @@ -19,25 +19,30 @@ #include -#define CUSTOM_KEY_REQ "req" -#define CUSTOM_KEY_PACKAGE_ID "packageId" -#define CUSTOM_KEY_NAME "name" -#define CUSTOM_KEY_ATTRIBUTES "attributes" -#define CUSTOM_KEY_FACT "fact" -#define CUSTOM_KEY_SUBJECT "subject" -#define CUSTOM_KEY_OWNER "owner" - -#define CUSTOM_REQ_TYPE_ADD "add" -#define CUSTOM_REQ_TYPE_REMOVE "remove" -#define CUSTOM_REQ_TYPE_PUBLISH "publish" - -#define CUSTOM_SEPERATOR "/" - -#define CUSTOM_TEMPLATE_TABLE_SCHEMA \ - "CREATE TABLE IF NOT EXISTS ContextTriggerCustomTemplate " \ - "(subject TEXT DEFAULT '' NOT NULL PRIMARY KEY, name TEXT DEFAULT '' NOT NULL," \ - " operation INTEGER DEFAULT 3 NOT NULL, attributes TEXT DEFAULT '' NOT NULL, " \ - " owner TEXT DEFAULT '' NOT NULL)" - +#define CUSTOM_TMPL_TABLE "ContextTriggerCustomTemplate" +#define CUSTOM_COLUMN_SUBJECT "subject" +#define CUSTOM_COLUMN_NAME "name" +#define CUSTOM_COLUMN_OPERATION "operation" +#define CUSTOM_COLUMN_ATTRIBUTE "attributes" +#define CUSTOM_COLUMN_OWNER "owner" + +#define CREATE_CUSTOM_TMPL_TABLE_QUERY \ + "CREATE TABLE IF NOT EXISTS " CUSTOM_TMPL_TABLE \ + " (" CUSTOM_COLUMN_SUBJECT " TEXT DEFAULT '' NOT NULL PRIMARY KEY, "\ + CUSTOM_COLUMN_NAME " TEXT DEFAULT '' NOT NULL, " \ + CUSTOM_COLUMN_OPERATION " INTEGER DEFAULT 3 NOT NULL, "\ + CUSTOM_COLUMN_ATTRIBUTE " TEXT DEFAULT '' NOT NULL, "\ + CUSTOM_COLUMN_OWNER " TEXT DEFAULT '' NOT NULL)" + +#define SELECT_CUSTOM_TMPL_TABLE_QUERY \ + "SELECT * FROM " CUSTOM_TMPL_TABLE + +#define INSERT_CUSTOM_TMPL_QUERY \ + "INSERT OR IGNORE INTO " CUSTOM_TMPL_TABLE " ("\ + CUSTOM_COLUMN_SUBJECT ", " CUSTOM_COLUMN_NAME ", "\ + CUSTOM_COLUMN_ATTRIBUTE ", " CUSTOM_COLUMN_OWNER ") VALUES " + +#define DELETE_CUSTOM_TMPL_QUERY \ + "DELETE FROM " CUSTOM_TMPL_TABLE " WHERE " CUSTOM_COLUMN_SUBJECT " = " #endif /* End of _CONTEXT_CUSTOM_TYPES_H_ */ diff --git a/src/shared/DbHandleBase.cpp b/src/shared/DbHandleBase.cpp index 074a7ac..0bf238c 100644 --- a/src/shared/DbHandleBase.cpp +++ b/src/shared/DbHandleBase.cpp @@ -83,7 +83,7 @@ std::string StatsDbHandleBase::createWhereClause(Json filter) int week = 0; int start = 0; int end = 0; - int timespan = DEFAULT_TIMESPAN; + int timeSpan = DEFAULT_TIME_SPAN; std::string appId; std::string weekStr; std::string timeOfDay; @@ -161,8 +161,8 @@ std::string StatsDbHandleBase::createWhereClause(Json filter) } } - filter.get(NULL, KEY_TIMESPAN, ×pan); - whereClause << KEY_UNIV_TIME " > strftime('%s', 'now', '-" << timespan <<" day')"; + filter.get(NULL, KEY_TIME_SPAN, &timeSpan); + whereClause << KEY_UNIV_TIME " > strftime('%s', 'now', '-" << timeSpan <<" day')"; return whereClause.str(); } -- 2.7.4