#include <map>
#include <Util.h>
#include <DatabaseManager.h>
+#include <TriggerTypes.h>
#include "CustomManager.h"
#include "CustomProvider.h"
#include "CustomTypes.h"
{
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);
}
{
/* Create custom template table */
std::vector<Json> 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);
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) {
/* 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<Json> record;
bool ret = __dbManager.executeSync(q.c_str(), &record);
IF_FAIL_RETURN_TAG(ret, ERR_OPERATION_FAILED, _E, "Failed to query custom templates");
__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<Json> record;
bool ret = __dbManager.executeSync(q.c_str(), &record);
IF_FAIL_RETURN_TAG(ret, ERR_OPERATION_FAILED, _E, "Failed to query custom templates");
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");
{
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);
}
{
/* 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;
}
#include <ProviderTypes.h>
-#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_ */