-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathIntervalConfiguration.java
More file actions
36 lines (31 loc) · 1.03 KB
/
Copy pathIntervalConfiguration.java
File metadata and controls
36 lines (31 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package devices.configuration.communication;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
@AllArgsConstructor
class IntervalConfiguration {
private final List<IntervalRule.DeviceIdRule> deviceIdRules;
private final List<IntervalRule.ModelRule> modelRules;
private final IntervalRule.DefaultRule defaultRule;
static IntervalConfiguration create(
List<IntervalRule.DeviceIdRule> deviceIdRules,
List<IntervalRule.ModelRule> modelRules,
IntervalRule.DefaultRule defaultRule) {
return new IntervalConfiguration(
new ArrayList<>(deviceIdRules), new ArrayList<>(modelRules), defaultRule);
}
Duration calculateInterval(BootNotification boot) {
for (IntervalRule.DeviceIdRule rule : deviceIdRules) {
if (rule.matches(boot)) {
return rule.interval();
}
}
for (IntervalRule.ModelRule rule : modelRules) {
if (rule.matches(boot)) {
return rule.interval();
}
}
return defaultRule.interval();
}
}