package org.activiti.crystalball.simulator.delegate.event.impl; import org.activiti.crystalball.simulator.SimulationEvent; import org.activiti.crystalball.simulator.delegate.event.Function; import org.activiti.engine.event.EventLogEntry; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * This class transforms event log events into simulation events */ public class EventLogTransformer { protected List<Function<EventLogEntry, SimulationEvent>> transformers; public EventLogTransformer(List<Function<EventLogEntry, SimulationEvent>> transformers) {this.transformers = transformers;} public List<SimulationEvent> transform(List<EventLogEntry> eventLog) { List<SimulationEvent> simulationEvents = new ArrayList<SimulationEvent>(); for (EventLogEntry logEntry : eventLog) { simulationEvents.addAll(transformEntry(logEntry)); } return simulationEvents; } protected Collection<SimulationEvent> transformEntry(EventLogEntry event) { List<SimulationEvent> simEvents = new ArrayList<SimulationEvent>(); for (Function<EventLogEntry, SimulationEvent> t : transformers) { SimulationEvent simEvent = t.apply(event); if (simEvent != null) simEvents.add(simEvent); } return simEvents; } }