Action.java

package emissary.core.sentinel.protocols.actions;

import emissary.core.sentinel.Sentinel;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.invoke.MethodHandles;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public abstract class Action {

    protected static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

    /**
     * Take action when rule conditions are met
     *
     * @param trackers the listing of agents, places, and filenames that's currently processing
     */
    public abstract void trigger(Map<String, Sentinel.Tracker> trackers);

    public List<Sentinel.Tracker> format(Map<String, Sentinel.Tracker> trackers) {
        return trackers.values().stream().sorted().collect(Collectors.toList());
    }

    @Override
    public String toString() {
        return "\"" + getClass().getSimpleName() + "\"";
    }

}