package org.jboss.windup.exec;
import java.util.ArrayList;
import java.util.List;
/**
* Passes the calls to all nested monitors.
*
* @author <a href="mailto:zizka@seznam.cz">Ondrej Zizka</a>
*/
public class CombinedWindupProgressMonitor implements WindupProgressMonitor
{
private List<WindupProgressMonitor> monitors = new ArrayList<>();
public CombinedWindupProgressMonitor addMonitor(WindupProgressMonitor monitor)
{
this.monitors.add(monitor);
return this;
}
@Override
public void beginTask(String name, int totalWork)
{
monitors.forEach(m -> m.beginTask(name, totalWork));
}
@Override
public void done()
{
monitors.forEach(m -> m.done());
}
@Override
public boolean isCancelled()
{
return monitors.stream().anyMatch(m -> m.isCancelled());
}
@Override
public void setCancelled(boolean value)
{
monitors.forEach(m -> m.setCancelled(value));
}
@Override
public void setTaskName(String name)
{
monitors.forEach(m -> m.setTaskName(name));
}
@Override
public void subTask(String name)
{
monitors.forEach(m -> m.subTask(name));
}
@Override
public void worked(int work)
{
monitors.forEach(m -> m.worked(work));
}
}