add load / save timeDescriptor

pull/135/head
Simon Stürz 2016-04-08 16:16:42 +02:00 committed by Michael Zanetti
parent d713e3ba29
commit e7ee05f017
4 changed files with 30 additions and 15 deletions

View File

@ -517,7 +517,7 @@ QVariantMap JsonTypes::packStateDescriptor(const StateDescriptor &stateDescripto
variantMap.insert("stateTypeId", stateDescriptor.stateTypeId().toString());
variantMap.insert("deviceId", stateDescriptor.deviceId().toString());
variantMap.insert("value", stateDescriptor.stateValue());
variantMap.insert("operator", valueOperator().at(stateDescriptor.operatorType()));
variantMap.insert("operator", s_valueOperator.at(stateDescriptor.operatorType()));
return variantMap;
}
@ -534,7 +534,7 @@ QVariantMap JsonTypes::packStateEvaluator(const StateEvaluator &stateEvaluator)
}
if (!childEvaluators.isEmpty() || stateEvaluator.stateDescriptor().isValid())
variantMap.insert("operator", stateOperator().at(stateEvaluator.operatorType()));
variantMap.insert("operator", s_stateOperator.at(stateEvaluator.operatorType()));
if (childEvaluators.count() > 0) {
variantMap.insert("childEvaluators", childEvaluators);
@ -712,6 +712,7 @@ QVariantMap JsonTypes::packRule(const Rule &rule)
eventDescriptorList.append(JsonTypes::packEventDescriptor(eventDescriptor));
}
ruleMap.insert("eventDescriptors", eventDescriptorList);
ruleMap.insert("stateEvaluator", JsonTypes::packStateEvaluator(rule.stateEvaluator()));
QVariantList actionList;
foreach (const RuleAction &action, rule.actions()) {
@ -724,7 +725,6 @@ QVariantMap JsonTypes::packRule(const Rule &rule)
exitActionList.append(JsonTypes::packRuleAction(action));
}
ruleMap.insert("exitActions", exitActionList);
ruleMap.insert("stateEvaluator", JsonTypes::packStateEvaluator(rule.stateEvaluator()));
return ruleMap;
}

View File

@ -246,7 +246,6 @@ RuleEngine::RuleEngine(QObject *parent) :
}
settings.endGroup();
settings.endGroup();
// Load stateEvaluator
StateEvaluator stateEvaluator = StateEvaluator::loadFromSettings(settings, "stateEvaluator");
@ -1020,10 +1019,15 @@ void RuleEngine::saveRule(const Rule &rule)
if (!rule.timeDescriptor().isEmpty()) {
settings.beginGroup("calendarItems");
for (int i = 0; i < rule.timeDescriptor().calendarItems().count(); i++) {
const CalendarItem &calendarItem = rule.timeDescriptor().calendarItems().at(i);
settings.beginGroup("CalendarItem-" + QString::number(i));
settings.setValue("dateTime", calendarItem.dateTime().toTime_t());
settings.setValue("startTime", calendarItem.startTime().toString("hh:mm"));
const CalendarItem &calendarItem = rule.timeDescriptor().calendarItems().at(i);
if (calendarItem.dateTime().isValid())
settings.setValue("dateTime", calendarItem.dateTime().toTime_t());
if (calendarItem.startTime().isValid())
settings.setValue("startTime", calendarItem.startTime().toString("hh:mm"));
settings.setValue("duration", calendarItem.duration());
settings.setValue("mode", calendarItem.repeatingOption().mode());
@ -1049,10 +1053,15 @@ void RuleEngine::saveRule(const Rule &rule)
settings.beginGroup("timeEventItems");
for (int i = 0; i < rule.timeDescriptor().timeEventItems().count(); i++) {
const TimeEventItem &timeEventItem = rule.timeDescriptor().timeEventItems().at(i);
settings.beginGroup("TimeEventItem-" + QString::number(i));
settings.setValue("dateTime", timeEventItem.dateTime().toTime_t());
settings.setValue("time", timeEventItem.time().toString("hh:mm"));
const TimeEventItem &timeEventItem = rule.timeDescriptor().timeEventItems().at(i);
if (timeEventItem.dateTime().isValid())
settings.setValue("dateTime", timeEventItem.dateTime().toTime_t());
if (timeEventItem.time().isValid())
settings.setValue("time", timeEventItem.time().toString("hh:mm"));
settings.setValue("mode", timeEventItem.repeatingOption().mode());
// Save weekDays

View File

@ -1073,11 +1073,13 @@ void TestRules::loadStoreConfig()
QVERIFY2(found, "missing eventdescriptor");
}
qDebug() << endl << rule1;
QVERIFY2(rule1.value("name").toString() == "TestRule", "Loaded wrong name for rule");
QVariantMap replyStateEvaluator= rule1.value("stateEvaluator").toMap();
QVariantList replyChildEvaluators = replyStateEvaluator.value("childEvaluators").toList();
QVERIFY2(replyStateEvaluator.value("operator") == "StateOperatorAnd", "There should be the AND operator.");
QVERIFY2(replyChildEvaluators.count() == 2, "There shoud be exactly 2 childEvaluators");
QVERIFY2(replyStateEvaluator.value("operator") == "StateOperatorAnd", "There should be the AND operator.");
foreach (const QVariant &childEvaluator, replyChildEvaluators) {
QVERIFY2(childEvaluator.toMap().contains("stateDescriptor"), "StateDescriptor missing in StateEvaluator");

View File

@ -218,18 +218,22 @@ void TestTimeManager::loadSaveTimeDescriptor()
response = injectAndWait("Rules.GetRuleDetails", params);
verifyRuleError(response);
QVariantMap timeDescriptorMap = response.toMap().value("params").toMap().value("rule").toMap().value("timeDescriptor").toMap();
qDebug() << QJsonDocument::fromVariant(timeDescriptorMap).toJson();
// Restart the server
restartServer();
// Get the loaded rule
response = injectAndWait("Rules.GetRuleDetails", params);
verifyRuleError(response);
QVariantMap timeDescriptorMap = response.toMap().value("params").toMap().value("rule").toMap().value("timeDescriptor").toMap();
//qDebug() << QJsonDocument::fromVariant(timeDescriptorMap).toJson();
QVariantMap timeDescriptorMapLoaded = response.toMap().value("params").toMap().value("rule").toMap().value("timeDescriptor").toMap();
qDebug() << QJsonDocument::fromVariant(timeDescriptorMapLoaded).toJson();
//qDebug() << QJsonDocument::fromVariant(timeDescriptorMapLoaded).toJson();
qDebug() << endl << timeDescriptorMap << endl << endl << timeDescriptorMapLoaded;
QCOMPARE(timeDescriptorMap, timeDescriptorMapLoaded);