package org.dcache.webadmin.model.dataaccess.communication.collectors;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
import org.springframework.beans.factory.annotation.Required;
import java.util.Collection;
import java.util.concurrent.ExecutionException;
import dmg.cells.services.login.LoginBrokerInfo;
import org.dcache.util.TransferCollector;
import org.dcache.util.backoff.IBackoffAlgorithm.Status;
import org.dcache.webadmin.controller.util.BeanDataMapper;
import org.dcache.webadmin.model.dataaccess.communication.ContextPaths;
import org.dcache.webadmin.view.beans.ActiveTransfersBean;
public class ActiveTransfersCollector extends Collector
{
private TransferCollector collector;
private Collection<LoginBrokerInfo> doors;
@Required
public void setDoors(Collection<LoginBrokerInfo> doors)
{
this.doors = doors;
}
@Override
public void initialize()
{
super.initialize();
collector = new TransferCollector(_cellStub, doors);
}
@Override
public Status call() throws InterruptedException
{
try {
ImmutableList<ActiveTransfersBean> result = ImmutableList.copyOf(
collector.collectTransfers().get().stream().map(BeanDataMapper::moverModelToView).iterator());
_pageCache.put(ContextPaths.MOVER_LIST, result);
return Status.SUCCESS;
} catch (ExecutionException e) {
throw Throwables.propagate(e.getCause());
}
}
}