Search in sources :

Example 26 with Alert

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;
}
Also used : BooleanBuilder(com.querydsl.core.BooleanBuilder) ArrayList(java.util.ArrayList) JpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert) Alert(com.thinkbiganalytics.alerts.api.Alert) QJpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.QJpaAlert) Predicate(com.querydsl.core.types.Predicate)

Example 27 with Alert

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;
}
Also used : AlertNotfoundException(com.thinkbiganalytics.alerts.api.AlertNotfoundException) JpaAlertChangeEvent(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlertChangeEvent) Alert(com.thinkbiganalytics.alerts.api.Alert) JpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert) JpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert) Principal(java.security.Principal)

Example 28 with Alert

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();
}
Also used : KyloEntityAwareAlertCriteria(com.thinkbiganalytics.alerts.spi.defaults.KyloEntityAwareAlertCriteria) ArrayList(java.util.ArrayList) JpaAlertChangeEvent(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlertChangeEvent) Alert(com.thinkbiganalytics.alerts.api.Alert) JpaAlert(com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert) EntityAlert(com.thinkbiganalytics.alerts.api.EntityAlert)

Example 29 with Alert

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());
}
Also used : AlertResponse(com.thinkbiganalytics.alerts.api.AlertResponse) Alert(com.thinkbiganalytics.alerts.api.Alert) Test(org.testng.annotations.Test)

Aggregations

Alert (com.thinkbiganalytics.alerts.api.Alert)29 ArrayList (java.util.ArrayList)9 Test (org.junit.Test)9 AlertCriteria (com.thinkbiganalytics.alerts.api.AlertCriteria)8 JpaAlert (com.thinkbiganalytics.metadata.jpa.alerts.JpaAlert)8 AlertResponse (com.thinkbiganalytics.alerts.api.AlertResponse)7 DateTime (org.joda.time.DateTime)6 AlertSummary (com.thinkbiganalytics.alerts.api.AlertSummary)5 AlertManager (com.thinkbiganalytics.alerts.spi.AlertManager)5 List (java.util.List)5 BooleanBuilder (com.querydsl.core.BooleanBuilder)4 AlertResponder (com.thinkbiganalytics.alerts.api.AlertResponder)4 JpaAlertChangeEvent (com.thinkbiganalytics.metadata.jpa.alerts.JpaAlertChangeEvent)4 Serializable (java.io.Serializable)4 Predicate (com.querydsl.core.types.Predicate)3 JPAQueryFactory (com.querydsl.jpa.impl.JPAQueryFactory)3 AlertNotfoundException (com.thinkbiganalytics.alerts.api.AlertNotfoundException)3 AlertProvider (com.thinkbiganalytics.alerts.api.AlertProvider)3 URI (java.net.URI)3 Principal (java.security.Principal)3