fixed rule action setting error
This commit is contained in:
parent
6a35dd61e4
commit
9edb3b8b40
@ -113,8 +113,12 @@ void RuleActionParam::setEventTypeId(const EventTypeId &eventTypeId)
|
|||||||
/*! Writes the name, value, eventId and eventParamName of the given \a ruleActionParam to \a dbg. */
|
/*! Writes the name, value, eventId and eventParamName of the given \a ruleActionParam to \a dbg. */
|
||||||
QDebug operator<<(QDebug dbg, const RuleActionParam &ruleActionParam)
|
QDebug operator<<(QDebug dbg, const RuleActionParam &ruleActionParam)
|
||||||
{
|
{
|
||||||
dbg.nospace() << "RuleActionParam(Name: " << ruleActionParam.name() << ", Value:" << ruleActionParam.value() << ", EventTypeId:" << ruleActionParam.eventTypeId().toString() << ", EventParamName:" << ruleActionParam.eventParamName() << ")";
|
dbg.nospace() << "RuleActionParam(Name: " << ruleActionParam.name() << ", Value:" << ruleActionParam.value();
|
||||||
|
if (ruleActionParam.eventTypeId() != EventTypeId()) {
|
||||||
|
dbg.nospace() << ", EventTypeId:" << ruleActionParam.eventTypeId().toString() << ", EventParamName:" << ruleActionParam.eventParamName() << ")";
|
||||||
|
} else {
|
||||||
|
dbg.nospace() << ")";
|
||||||
|
}
|
||||||
return dbg.space();
|
return dbg.space();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -100,13 +100,13 @@ RuleEngine::RuleEngine(QObject *parent) :
|
|||||||
QSettings settings(m_settingsFile);
|
QSettings settings(m_settingsFile);
|
||||||
qDebug() << "laoding rules from" << settings.fileName();
|
qDebug() << "laoding rules from" << settings.fileName();
|
||||||
foreach (const QString &idString, settings.childGroups()) {
|
foreach (const QString &idString, settings.childGroups()) {
|
||||||
qDebug() << "found rule" << idString;
|
|
||||||
|
|
||||||
settings.beginGroup(idString);
|
settings.beginGroup(idString);
|
||||||
|
|
||||||
QString name = settings.value("name", idString).toString();
|
QString name = settings.value("name", idString).toString();
|
||||||
bool enabled = settings.value("enabled", true).toBool();
|
bool enabled = settings.value("enabled", true).toBool();
|
||||||
|
|
||||||
|
qDebug() << "found rule" << name << idString;
|
||||||
|
|
||||||
QList<EventDescriptor> eventDescriptorList;
|
QList<EventDescriptor> eventDescriptorList;
|
||||||
settings.beginGroup("events");
|
settings.beginGroup("events");
|
||||||
|
|
||||||
@ -132,37 +132,46 @@ RuleEngine::RuleEngine(QObject *parent) :
|
|||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
StateEvaluator stateEvaluator = StateEvaluator::loadFromSettings(settings, "stateEvaluator");
|
StateEvaluator stateEvaluator = StateEvaluator::loadFromSettings(settings, "stateEvaluator");
|
||||||
|
|
||||||
settings.beginGroup("ruleActions");
|
|
||||||
QList<RuleAction> actions;
|
QList<RuleAction> actions;
|
||||||
foreach (const QString &actionIdString, settings.childGroups()) {
|
settings.beginGroup("ruleActions");
|
||||||
settings.beginGroup(actionIdString);
|
foreach (const QString &actionNumber, settings.childGroups()) {
|
||||||
RuleAction action = RuleAction(ActionTypeId(settings.value("actionTypeId").toString()), DeviceId(settings.value("deviceId").toString()));
|
settings.beginGroup(actionNumber);
|
||||||
|
|
||||||
|
RuleAction action = RuleAction(ActionTypeId(settings.value("actionTypeId").toString()),
|
||||||
|
DeviceId(settings.value("deviceId").toString()));
|
||||||
|
|
||||||
RuleActionParamList params;
|
RuleActionParamList params;
|
||||||
foreach (QString paramNameString, settings.childGroups()) {
|
foreach (QString paramNameString, settings.childGroups()) {
|
||||||
if (paramNameString.startsWith("RuleActionParam-")) {
|
if (paramNameString.startsWith("RuleActionParam-")) {
|
||||||
settings.beginGroup(paramNameString);
|
settings.beginGroup(paramNameString);
|
||||||
RuleActionParam param(paramNameString.remove(QRegExp("^RuleActionParam-")), settings.value("value",QVariant()), EventTypeId(settings.value("eventTypeId", EventTypeId()).toString()), settings.value("eventParamName", QString()).toString());
|
RuleActionParam param(paramNameString.remove(QRegExp("^RuleActionParam-")),
|
||||||
|
settings.value("value",QVariant()),
|
||||||
|
EventTypeId(settings.value("eventTypeId", EventTypeId()).toString()),
|
||||||
|
settings.value("eventParamName", QString()).toString());
|
||||||
params.append(param);
|
params.append(param);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
action.setRuleActionParams(params);
|
action.setRuleActionParams(params);
|
||||||
|
actions.append(action);
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
actions.append(action);
|
|
||||||
}
|
}
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup("ruleExitActions");
|
|
||||||
QList<RuleAction> exitActions;
|
QList<RuleAction> exitActions;
|
||||||
foreach (const QString &actionIdString, settings.childGroups()) {
|
settings.beginGroup("ruleExitActions");
|
||||||
settings.beginGroup(actionIdString);
|
foreach (const QString &actionNumber, settings.childGroups()) {
|
||||||
RuleAction action = RuleAction(ActionTypeId(settings.value("actionTypeId").toString()), DeviceId(settings.value("deviceId").toString()));
|
settings.beginGroup(actionNumber);
|
||||||
|
|
||||||
|
RuleAction action = RuleAction(ActionTypeId(settings.value("actionTypeId").toString()),
|
||||||
|
DeviceId(settings.value("deviceId").toString()));
|
||||||
|
|
||||||
RuleActionParamList params;
|
RuleActionParamList params;
|
||||||
foreach (QString paramNameString, settings.childGroups()) {
|
foreach (QString paramNameString, settings.childGroups()) {
|
||||||
if (paramNameString.startsWith("RuleActionParam-")) {
|
if (paramNameString.startsWith("RuleActionParam-")) {
|
||||||
@ -173,17 +182,15 @@ RuleEngine::RuleEngine(QObject *parent) :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
action.setRuleActionParams(params);
|
action.setRuleActionParams(params);
|
||||||
|
|
||||||
settings.endGroup();
|
|
||||||
exitActions.append(action);
|
exitActions.append(action);
|
||||||
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.endGroup();
|
|
||||||
|
|
||||||
Rule rule = Rule(RuleId(idString), name, eventDescriptorList, stateEvaluator, actions, exitActions);
|
Rule rule = Rule(RuleId(idString), name, eventDescriptorList, stateEvaluator, actions, exitActions);
|
||||||
rule.setEnabled(enabled);
|
rule.setEnabled(enabled);
|
||||||
appendRule(rule);
|
appendRule(rule);
|
||||||
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,7 +348,7 @@ RuleEngine::RuleError RuleEngine::addRule(const RuleId &ruleId, const QString &n
|
|||||||
const EventDescriptor &eventDescriptor = eventDescriptorList.at(i);
|
const EventDescriptor &eventDescriptor = eventDescriptorList.at(i);
|
||||||
settings.beginGroup("EventDescriptor-" + QString::number(i));
|
settings.beginGroup("EventDescriptor-" + QString::number(i));
|
||||||
settings.setValue("deviceId", eventDescriptor.deviceId().toString());
|
settings.setValue("deviceId", eventDescriptor.deviceId().toString());
|
||||||
settings.setValue("eventTypeId", eventDescriptor.eventTypeId());
|
settings.setValue("eventTypeId", eventDescriptor.eventTypeId().toString());
|
||||||
|
|
||||||
foreach (const ParamDescriptor ¶mDescriptor, eventDescriptor.paramDescriptors()) {
|
foreach (const ParamDescriptor ¶mDescriptor, eventDescriptor.paramDescriptors()) {
|
||||||
settings.beginGroup("ParamDescriptor-" + paramDescriptor.name());
|
settings.beginGroup("ParamDescriptor-" + paramDescriptor.name());
|
||||||
@ -357,37 +364,41 @@ RuleEngine::RuleError RuleEngine::addRule(const RuleId &ruleId, const QString &n
|
|||||||
stateEvaluator.dumpToSettings(settings, "stateEvaluator");
|
stateEvaluator.dumpToSettings(settings, "stateEvaluator");
|
||||||
|
|
||||||
// Save ruleActions
|
// Save ruleActions
|
||||||
|
int i = 0;
|
||||||
settings.beginGroup("ruleActions");
|
settings.beginGroup("ruleActions");
|
||||||
foreach (const RuleAction &action, rule.actions()) {
|
foreach (const RuleAction &action, rule.actions()) {
|
||||||
settings.beginGroup(action.actionTypeId().toString());
|
settings.beginGroup(QString::number(i));
|
||||||
settings.setValue("deviceId", action.deviceId());
|
settings.setValue("deviceId", action.deviceId().toString());
|
||||||
settings.setValue("actionTypeId", action.actionTypeId());
|
settings.setValue("actionTypeId", action.actionTypeId().toString());
|
||||||
foreach (const RuleActionParam ¶m, action.ruleActionParams()) {
|
foreach (const RuleActionParam ¶m, action.ruleActionParams()) {
|
||||||
settings.beginGroup("RuleActionParam-" + param.name());
|
settings.beginGroup("RuleActionParam-" + param.name());
|
||||||
settings.setValue("eventTypeId", param.eventTypeId());
|
|
||||||
settings.setValue("eventParamName", param.eventParamName());
|
|
||||||
settings.setValue("value", param.value());
|
settings.setValue("value", param.value());
|
||||||
|
if (param.eventTypeId() != EventTypeId()) {
|
||||||
|
settings.setValue("eventTypeId", param.eventTypeId().toString());
|
||||||
|
settings.setValue("eventParamName", param.eventParamName());
|
||||||
|
}
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
i++;
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
// Save ruleExitActions
|
// Save ruleExitActions
|
||||||
settings.beginGroup("ruleExitActions");
|
settings.beginGroup("ruleExitActions");
|
||||||
|
i = 0;
|
||||||
foreach (const RuleAction &action, rule.exitActions()) {
|
foreach (const RuleAction &action, rule.exitActions()) {
|
||||||
settings.beginGroup(action.actionTypeId().toString());
|
settings.beginGroup(QString::number(i));
|
||||||
settings.setValue("deviceId", action.deviceId());
|
settings.setValue("deviceId", action.deviceId().toString());
|
||||||
settings.setValue("actionTypeId", action.actionTypeId());
|
settings.setValue("actionTypeId", action.actionTypeId().toString());
|
||||||
foreach (const RuleActionParam ¶m, action.ruleActionParams()) {
|
foreach (const RuleActionParam ¶m, action.ruleActionParams()) {
|
||||||
settings.beginGroup("RuleActionParam-" + param.name());
|
settings.beginGroup("RuleActionParam-" + param.name());
|
||||||
settings.setValue("value", param.value());
|
settings.setValue("value", param.value());
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
i++;
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
return RuleErrorNoError;
|
return RuleErrorNoError;
|
||||||
|
|||||||
Reference in New Issue
Block a user