package com.aol.micro.server.async.data.cleaner; import java.util.concurrent.ScheduledExecutorService; import com.google.common.eventbus.EventBus; import cyclops.collections.ListX; import cyclops.stream.ReactiveSeq; import lombok.AllArgsConstructor; @AllArgsConstructor public class CleanerSchedular { private final ListX<DataCleaner> cleaner; private final ScheduledExecutorService executor; private final EventBus bus; private final ConditionallyClean condition; public void schedule() { cleaner.forEach(cl -> { ReactiveSeq.generate(() -> 1) .filter(in -> condition.shouldClean()) .map(i -> cl.scheduleAndLog()) .peek(sd -> bus.post(sd)) .schedule(cl.getCron(), executor); }); } }