add load / save timeDescriptor
This commit is contained in:
parent
d713e3ba29
commit
e7ee05f017
@ -517,7 +517,7 @@ QVariantMap JsonTypes::packStateDescriptor(const StateDescriptor &stateDescripto
|
|||||||
variantMap.insert("stateTypeId", stateDescriptor.stateTypeId().toString());
|
variantMap.insert("stateTypeId", stateDescriptor.stateTypeId().toString());
|
||||||
variantMap.insert("deviceId", stateDescriptor.deviceId().toString());
|
variantMap.insert("deviceId", stateDescriptor.deviceId().toString());
|
||||||
variantMap.insert("value", stateDescriptor.stateValue());
|
variantMap.insert("value", stateDescriptor.stateValue());
|
||||||
variantMap.insert("operator", valueOperator().at(stateDescriptor.operatorType()));
|
variantMap.insert("operator", s_valueOperator.at(stateDescriptor.operatorType()));
|
||||||
return variantMap;
|
return variantMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -534,7 +534,7 @@ QVariantMap JsonTypes::packStateEvaluator(const StateEvaluator &stateEvaluator)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!childEvaluators.isEmpty() || stateEvaluator.stateDescriptor().isValid())
|
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) {
|
if (childEvaluators.count() > 0) {
|
||||||
variantMap.insert("childEvaluators", childEvaluators);
|
variantMap.insert("childEvaluators", childEvaluators);
|
||||||
@ -712,6 +712,7 @@ QVariantMap JsonTypes::packRule(const Rule &rule)
|
|||||||
eventDescriptorList.append(JsonTypes::packEventDescriptor(eventDescriptor));
|
eventDescriptorList.append(JsonTypes::packEventDescriptor(eventDescriptor));
|
||||||
}
|
}
|
||||||
ruleMap.insert("eventDescriptors", eventDescriptorList);
|
ruleMap.insert("eventDescriptors", eventDescriptorList);
|
||||||
|
ruleMap.insert("stateEvaluator", JsonTypes::packStateEvaluator(rule.stateEvaluator()));
|
||||||
|
|
||||||
QVariantList actionList;
|
QVariantList actionList;
|
||||||
foreach (const RuleAction &action, rule.actions()) {
|
foreach (const RuleAction &action, rule.actions()) {
|
||||||
@ -724,7 +725,6 @@ QVariantMap JsonTypes::packRule(const Rule &rule)
|
|||||||
exitActionList.append(JsonTypes::packRuleAction(action));
|
exitActionList.append(JsonTypes::packRuleAction(action));
|
||||||
}
|
}
|
||||||
ruleMap.insert("exitActions", exitActionList);
|
ruleMap.insert("exitActions", exitActionList);
|
||||||
ruleMap.insert("stateEvaluator", JsonTypes::packStateEvaluator(rule.stateEvaluator()));
|
|
||||||
return ruleMap;
|
return ruleMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -246,7 +246,6 @@ RuleEngine::RuleEngine(QObject *parent) :
|
|||||||
}
|
}
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.endGroup();
|
|
||||||
|
|
||||||
// Load stateEvaluator
|
// Load stateEvaluator
|
||||||
StateEvaluator stateEvaluator = StateEvaluator::loadFromSettings(settings, "stateEvaluator");
|
StateEvaluator stateEvaluator = StateEvaluator::loadFromSettings(settings, "stateEvaluator");
|
||||||
@ -1020,10 +1019,15 @@ void RuleEngine::saveRule(const Rule &rule)
|
|||||||
if (!rule.timeDescriptor().isEmpty()) {
|
if (!rule.timeDescriptor().isEmpty()) {
|
||||||
settings.beginGroup("calendarItems");
|
settings.beginGroup("calendarItems");
|
||||||
for (int i = 0; i < rule.timeDescriptor().calendarItems().count(); i++) {
|
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.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("duration", calendarItem.duration());
|
||||||
settings.setValue("mode", calendarItem.repeatingOption().mode());
|
settings.setValue("mode", calendarItem.repeatingOption().mode());
|
||||||
|
|
||||||
@ -1049,10 +1053,15 @@ void RuleEngine::saveRule(const Rule &rule)
|
|||||||
|
|
||||||
settings.beginGroup("timeEventItems");
|
settings.beginGroup("timeEventItems");
|
||||||
for (int i = 0; i < rule.timeDescriptor().timeEventItems().count(); i++) {
|
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.beginGroup("TimeEventItem-" + QString::number(i));
|
||||||
settings.setValue("dateTime", timeEventItem.dateTime().toTime_t());
|
const TimeEventItem &timeEventItem = rule.timeDescriptor().timeEventItems().at(i);
|
||||||
settings.setValue("time", timeEventItem.time().toString("hh:mm"));
|
|
||||||
|
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());
|
settings.setValue("mode", timeEventItem.repeatingOption().mode());
|
||||||
|
|
||||||
// Save weekDays
|
// Save weekDays
|
||||||
|
|||||||
@ -1073,11 +1073,13 @@ void TestRules::loadStoreConfig()
|
|||||||
QVERIFY2(found, "missing eventdescriptor");
|
QVERIFY2(found, "missing eventdescriptor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qDebug() << endl << rule1;
|
||||||
|
|
||||||
QVERIFY2(rule1.value("name").toString() == "TestRule", "Loaded wrong name for rule");
|
QVERIFY2(rule1.value("name").toString() == "TestRule", "Loaded wrong name for rule");
|
||||||
QVariantMap replyStateEvaluator= rule1.value("stateEvaluator").toMap();
|
QVariantMap replyStateEvaluator= rule1.value("stateEvaluator").toMap();
|
||||||
QVariantList replyChildEvaluators = replyStateEvaluator.value("childEvaluators").toList();
|
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(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) {
|
foreach (const QVariant &childEvaluator, replyChildEvaluators) {
|
||||||
QVERIFY2(childEvaluator.toMap().contains("stateDescriptor"), "StateDescriptor missing in StateEvaluator");
|
QVERIFY2(childEvaluator.toMap().contains("stateDescriptor"), "StateDescriptor missing in StateEvaluator");
|
||||||
|
|||||||
@ -218,18 +218,22 @@ void TestTimeManager::loadSaveTimeDescriptor()
|
|||||||
response = injectAndWait("Rules.GetRuleDetails", params);
|
response = injectAndWait("Rules.GetRuleDetails", params);
|
||||||
verifyRuleError(response);
|
verifyRuleError(response);
|
||||||
|
|
||||||
QVariantMap timeDescriptorMap = response.toMap().value("params").toMap().value("rule").toMap().value("timeDescriptor").toMap();
|
|
||||||
qDebug() << QJsonDocument::fromVariant(timeDescriptorMap).toJson();
|
|
||||||
|
|
||||||
// Restart the server
|
// Restart the server
|
||||||
restartServer();
|
restartServer();
|
||||||
|
|
||||||
// Get the loaded rule
|
// Get the loaded rule
|
||||||
|
|
||||||
|
|
||||||
response = injectAndWait("Rules.GetRuleDetails", params);
|
response = injectAndWait("Rules.GetRuleDetails", params);
|
||||||
verifyRuleError(response);
|
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();
|
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);
|
QCOMPARE(timeDescriptorMap, timeDescriptorMapLoaded);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user