private Optional<MetricValue> apply_(MetricValue val) { return val.asBool() .map((Boolean x) -> !x) .map(MetricValue::fromBoolean); }
public Stream<Alert> create_alert_(Context ctx) { final TimeSeriesCollectionPair ts_data = ctx.getTSData(); final Map<String, Any2<TimeSeriesMetricDeltaSet, List<TimeSeriesMetricDeltaSet>>> attr_map = calculate_attributes_(ctx); return alert_defn_.getName().apply(ctx) .map(path -> SimpleGroupPath.valueOf(path.getPath())) .map((name) -> { return alert_defn_.getPredicate().apply(ctx) .streamAsMap() .map((tag_val) -> SimpleMapEntry.create(tag_val.getKey(), tag_val.getValue().asBool())) .map((tag_bool) -> { final GroupName alert_name = GroupName.valueOf(name, tag_bool.getKey()); final Optional<Boolean> triggering = tag_bool.getValue(); Map<String, Any2<MetricValue, List<MetricValue>>> attrs = lookup_attributes_(alert_name.getTags(), attr_map); return new Alert(ts_data.getCurrentCollection().getTimestamp(), alert_name, alert_defn_::configString, triggering, alert_defn_.getFireDuration(), alert_defn_.getMessage(), attrs); }); }) .orElseGet(Stream::empty); }