fix notNull checking for schedule in ProfileState, rename variables and fix logic for parsing dynamicValues in AlarmRuleState
This commit is contained in:
parent
3351ced60a
commit
2b203bfdd5
@ -140,26 +140,30 @@ class AlarmRuleState {
|
|||||||
case ANY_TIME:
|
case ANY_TIME:
|
||||||
return true;
|
return true;
|
||||||
case SPECIFIC_TIME: {
|
case SPECIFIC_TIME: {
|
||||||
SpecificTimeSchedule originalSchedule = (SpecificTimeSchedule) alarmRule.getSchedule();
|
SpecificTimeSchedule defaultSchedule = (SpecificTimeSchedule) alarmRule.getSchedule();
|
||||||
EntityKeyValue dynamicValue = getDynamicValue(data, originalSchedule.getDynamicValue());
|
EntityKeyValue dynamicValue = getDynamicValue(data, defaultSchedule.getDynamicValue());
|
||||||
|
|
||||||
if (dynamicValue != null) {
|
SpecificTimeSchedule schedule;
|
||||||
SpecificTimeSchedule schedule = JsonConverter.parse(dynamicValue.getJsonValue(), SpecificTimeSchedule.class);
|
try {
|
||||||
originalSchedule = schedule == null ? originalSchedule : schedule;
|
schedule = JsonConverter.parse(dynamicValue.getJsonValue(), SpecificTimeSchedule.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
schedule = defaultSchedule;
|
||||||
}
|
}
|
||||||
|
|
||||||
return isActiveSpecific(originalSchedule, eventTs);
|
return isActiveSpecific(schedule, eventTs);
|
||||||
}
|
}
|
||||||
case CUSTOM: {
|
case CUSTOM: {
|
||||||
CustomTimeSchedule originalSchedule = (CustomTimeSchedule) alarmRule.getSchedule();
|
CustomTimeSchedule defaultSchedule = (CustomTimeSchedule) alarmRule.getSchedule();
|
||||||
EntityKeyValue dynamicValue = getDynamicValue(data, originalSchedule.getDynamicValue());
|
EntityKeyValue dynamicValue = getDynamicValue(data, defaultSchedule.getDynamicValue());
|
||||||
|
|
||||||
if (dynamicValue != null) {
|
CustomTimeSchedule schedule;
|
||||||
CustomTimeSchedule schedule = JsonConverter.parse(dynamicValue.getJsonValue(), CustomTimeSchedule.class);
|
try {
|
||||||
originalSchedule = schedule == null ? originalSchedule : schedule;
|
schedule = JsonConverter.parse(dynamicValue.getJsonValue(), CustomTimeSchedule.class);
|
||||||
|
} catch (Exception e) {
|
||||||
|
schedule = defaultSchedule;
|
||||||
}
|
}
|
||||||
|
|
||||||
return isActiveCustom(originalSchedule, eventTs);
|
return isActiveCustom(schedule, eventTs);
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unsupported schedule type: " + alarmRule.getSchedule().getType());
|
throw new RuntimeException("Unsupported schedule type: " + alarmRule.getSchedule().getType());
|
||||||
|
|||||||
@ -80,7 +80,10 @@ class ProfileState {
|
|||||||
addDynamicValuesRecursively(keyFilter.getPredicate(), entityKeys, ruleKeys);
|
addDynamicValuesRecursively(keyFilter.getPredicate(), entityKeys, ruleKeys);
|
||||||
}
|
}
|
||||||
addEntityKeysFromAlarmConditionSpec(alarmRule);
|
addEntityKeysFromAlarmConditionSpec(alarmRule);
|
||||||
addScheduleDynamicValues(alarmRule.getSchedule());
|
AlarmSchedule schedule = alarmRule.getSchedule();
|
||||||
|
if (schedule != null) {
|
||||||
|
addScheduleDynamicValues(schedule);
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
if (alarm.getClearRule() != null) {
|
if (alarm.getClearRule() != null) {
|
||||||
var clearAlarmKeys = alarmClearKeys.computeIfAbsent(alarm.getId(), id -> new HashSet<>());
|
var clearAlarmKeys = alarmClearKeys.computeIfAbsent(alarm.getId(), id -> new HashSet<>());
|
||||||
@ -99,12 +102,13 @@ class ProfileState {
|
|||||||
DynamicValue<String> dynamicValue = null;
|
DynamicValue<String> dynamicValue = null;
|
||||||
switch (schedule.getType()) {
|
switch (schedule.getType()) {
|
||||||
case SPECIFIC_TIME:
|
case SPECIFIC_TIME:
|
||||||
SpecificTimeSchedule specSchedule = (SpecificTimeSchedule) schedule;
|
SpecificTimeSchedule specificTimeSchedule = (SpecificTimeSchedule) schedule;
|
||||||
dynamicValue = specSchedule.getDynamicValue();
|
dynamicValue = specificTimeSchedule.getDynamicValue();
|
||||||
break;
|
break;
|
||||||
case CUSTOM:
|
case CUSTOM:
|
||||||
CustomTimeSchedule custSchedule = (CustomTimeSchedule) schedule;
|
CustomTimeSchedule customTimeSchedule = (CustomTimeSchedule) schedule;
|
||||||
dynamicValue = custSchedule.getDynamicValue();
|
dynamicValue = customTimeSchedule.getDynamicValue();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dynamicValue != null) {
|
if (dynamicValue != null) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user