use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class DefaultAlertCriteria method orFilter.
protected BooleanBuilder orFilter(QJpaAlert alert) {
BooleanBuilder globalFilter = new BooleanBuilder();
if (StringUtils.isNotBlank(getOrFilter())) {
Lists.newArrayList(StringUtils.split(getOrFilter(), ",")).stream().forEach(filter -> {
filter = StringUtils.trim(filter);
if (filter != null) {
BooleanBuilder booleanBuilder = new BooleanBuilder();
List<Predicate> preds = new ArrayList<>();
try {
Alert.State state = Alert.State.valueOf(filter.toUpperCase());
preds.add(alert.state.eq(state));
} catch (IllegalArgumentException e) {
}
preds.add(alert.typeString.like(filter.concat("%")));
preds.add(alert.subtype.like(filter.concat("%")));
booleanBuilder.andAnyOf(preds.toArray(new Predicate[preds.size()]));
globalFilter.and(booleanBuilder);
}
});
}
return globalFilter;
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class DefaultAlertManager method changeAlert.
protected <C extends Serializable> Alert changeAlert(JpaAlert.AlertId id, State state, String descr, C content) {
final Principal user = SecurityContextHolder.getContext().getAuthentication() != null ? SecurityContextHolder.getContext().getAuthentication() : null;
Alert changed = this.metadataAccess.commit(() -> {
JpaAlert alert = findAlert(id).orElseThrow(() -> new AlertNotfoundException(id));
JpaAlertChangeEvent event = new JpaAlertChangeEvent(state, user, descr, content);
alert.addEvent(event);
// need to save it
repository.save(alert);
return asValue(alert);
}, MetadataAccess.SERVICE);
updateLastUpdatedTime();
notifyReceivers(1);
return changed;
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class KyloEntityAwareAlertManager method entityDeleted.
public Iterator<Alert> entityDeleted(AlertCriteria criteria, String message) {
log.info("Query for Entity Alerts data");
List<Alert> handledAlerts = this.metadataAccess.commit(() -> {
List<Alert> alerts = new ArrayList<>();
criteria.state(Alert.State.UNHANDLED);
KyloEntityAwareAlertCriteria critImpl = ensureAlertCriteriaType(criteria);
critImpl.createEntityQuery().fetch().stream().forEach(jpaAlert -> {
JpaAlertChangeEvent event = new JpaAlertChangeEvent(Alert.State.HANDLED, MetadataAccess.SERVICE, message, null);
jpaAlert.addEvent(event);
// hide it
jpaAlert.setCleared(true);
alerts.add(asValue(jpaAlert));
});
return alerts;
}, MetadataAccess.SERVICE);
return handledAlerts.iterator();
}
use of com.thinkbiganalytics.alerts.api.Alert in project kylo by Teradata.
the class DefaultAlertManagerTest method testClear.
@Test(dependsOnGroups = "read2", groups = "update2")
public void testClear() {
Alert alert = this.manager.getAlertAsServiceAccount(id1).get();
AlertResponse resp = this.manager.getResponse(alert);
resp.clear();
alert = this.manager.getAlertAsServiceAccount(id1).get();
Assertions.assertThat(alert).isNotNull();
Assertions.assertThat(alert.isCleared()).isTrue();
Mockito.verify(this.alertReceiver, Mockito.times(0)).alertsAvailable(Matchers.anyInt());
}
Aggregations