23 lines
830 B
Java
23 lines
830 B
Java
package observer;
|
|
|
|
/** Fires an alert when the price changes by more than a threshold % */
|
|
public class AlertObserver implements StockObserver {
|
|
private final String name;
|
|
private final double thresholdPercent;
|
|
|
|
public AlertObserver(String name, double thresholdPercent) {
|
|
this.name = name;
|
|
this.thresholdPercent = thresholdPercent;
|
|
}
|
|
|
|
@Override
|
|
public void onPriceChanged(String ticker, double oldPrice, double newPrice) {
|
|
double change = Math.abs((newPrice - oldPrice) / oldPrice * 100);
|
|
if (change >= thresholdPercent) {
|
|
System.out.printf(" [ALERT:%s] %s moved %.1f%% — ALERT TRIGGERED%n", name, ticker, change);
|
|
} else {
|
|
System.out.printf(" [Alert:%s] %s moved %.1f%% — within threshold%n", name, ticker, change);
|
|
}
|
|
}
|
|
}
|