37: Add re-armable CROSSING alarm trigger
This commit is contained in:
@@ -94,6 +94,10 @@ public final class AlarmConfigurationParser {
|
||||
return new TriggerConfiguration(AlarmTrigger.ONETIME, 0);
|
||||
}
|
||||
|
||||
if (normalized.equals("CROSSING")) {
|
||||
return new TriggerConfiguration(AlarmTrigger.CROSSING, 0);
|
||||
}
|
||||
|
||||
if (normalized.equals("PERSISTENT")) {
|
||||
return new TriggerConfiguration(AlarmTrigger.PERSISTENT, 0);
|
||||
}
|
||||
@@ -128,6 +132,10 @@ public final class AlarmConfigurationParser {
|
||||
throw new IllegalArgumentException("ONETIME cannot have a grace period: " + triggerText);
|
||||
}
|
||||
|
||||
if (normalized.startsWith("CROSSING:")) {
|
||||
throw new IllegalArgumentException("CROSSING cannot have a grace period: " + triggerText);
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException("Unknown trigger: " + triggerText);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,5 +2,6 @@ package com.r35157.jupiterperpsalarm.impl.ref;
|
||||
|
||||
public enum AlarmTrigger {
|
||||
ONETIME,
|
||||
CROSSING,
|
||||
PERSISTENT
|
||||
}
|
||||
|
||||
@@ -41,6 +41,10 @@ public final class PriceAlarm {
|
||||
? reached
|
||||
: reached && !previousReached;
|
||||
|
||||
boolean crossedIntoTriggeredSide = previousReached != null
|
||||
&& reached
|
||||
&& !previousReached;
|
||||
|
||||
previousReached = reached;
|
||||
|
||||
if (!reached) {
|
||||
@@ -57,6 +61,13 @@ public final class PriceAlarm {
|
||||
return;
|
||||
}
|
||||
|
||||
if (definition.trigger() == AlarmTrigger.CROSSING) {
|
||||
if (crossedIntoTriggeredSide) {
|
||||
trigger(price, condition);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (definition.trigger() == AlarmTrigger.PERSISTENT) {
|
||||
if (lastTriggeredAt == null || persistentGracePeriodHasPassed()) {
|
||||
trigger(price, condition);
|
||||
|
||||
Reference in New Issue
Block a user