package org.jvalue.ods.pegelalarm;
import com.codahale.metrics.health.HealthCheck;
import org.jvalue.ods.api.notifications.Client;
import org.jvalue.ods.api.sources.DataSource;
import org.jvalue.ods.data.DataSourceManager;
import org.jvalue.ods.notifications.NotificationManager;
import java.util.List;
import javax.inject.Inject;
/**
* Asserts that the CEPS is registered as a client for the pegel alarm data source.
*/
public class CepsClientHealthCheck extends HealthCheck implements Constants {
private final NotificationManager notificationManager;
private final DataSourceManager dataSourceManager;
@Inject
CepsClientHealthCheck(NotificationManager notificationManager, DataSourceManager dataSourceManager) {
this.notificationManager = notificationManager;
this.dataSourceManager = dataSourceManager;
}
@Override
protected Result check() throws Exception {
final DataSource source = dataSourceManager.findBySourceId(DATA_SOURCE_ID);
List<Client> clients = notificationManager.getAll(source);
Client cepsClient = null;
for (Client client : clients) {
if (client.getId().equals(CEPS_CLIENT_ID)) {
cepsClient = client;
break;
}
}
if (cepsClient == null) return Result.unhealthy("CEPS is not registered as a client for receiving data updates");
return Result.healthy();
}
}