mirror of https://github.com/nymea/nymea.git
add load / save timeDescriptor
parent
d713e3ba29
commit
e7ee05f017
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue