38 lines
1.2 KiB
Java
38 lines
1.2 KiB
Java
package eu.dnetlib.broker.common.metrics;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.StreamSupport;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import eu.dnetlib.broker.common.subscriptions.ConditionOperator;
|
|
import eu.dnetlib.broker.common.subscriptions.MapCondition;
|
|
import eu.dnetlib.broker.common.subscriptions.Subscription;
|
|
import eu.dnetlib.broker.common.subscriptions.SubscriptionRepository;
|
|
import eu.dnetlib.common.metrics.MetricInfo;
|
|
|
|
@Component("provide_broker_datasources_with_subscriptions")
|
|
public class TotalDatasourcesWithSubscriptionsMetric extends MetricInfo {
|
|
|
|
@Autowired
|
|
private SubscriptionRepository subscriptionRepository;
|
|
|
|
@Override
|
|
public double obtainValue(final MetricInfo info) {
|
|
return StreamSupport.stream(subscriptionRepository.findAll().spliterator(), false)
|
|
.map(Subscription::getConditionsAsList)
|
|
.flatMap(List::stream)
|
|
.filter(c -> c.getField().equals("targetDatasourceName"))
|
|
.filter(c -> c.getOperator() == ConditionOperator.EXACT)
|
|
.map(MapCondition::getListParams)
|
|
.filter(l -> !l.isEmpty())
|
|
.map(l -> l.get(0).getValue())
|
|
.filter(StringUtils::isNotBlank)
|
|
.distinct()
|
|
.count();
|
|
}
|
|
|
|
}
|