X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Freactor%2FReaction.java;h=65a637bf468faef2471224e3e9e64efb44d7e6e1;hb=7e26f1544aef6721b74c7f479b8c103de4deef8b;hp=0e0b3590c2d0025bb7d038babab04212597fd464;hpb=ed9b0797c5dcc85c57a93fde0ee6ad1156f0ffe2;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/reactor/Reaction.java b/src/main/java/net/pterodactylus/reactor/Reaction.java index 0e0b359..65a637b 100644 --- a/src/main/java/net/pterodactylus/reactor/Reaction.java +++ b/src/main/java/net/pterodactylus/reactor/Reaction.java @@ -17,43 +17,71 @@ package net.pterodactylus.reactor; +import java.util.Collections; +import java.util.List; + +import com.google.common.collect.Lists; + /** * A {@code Reaction} binds together {@link Query}s, {@link Trigger}s, and * {@link Action}s, and it stores the intermediary {@link State}s. * - * @param - * The type of the state * @author David ‘Bombe’ Roden */ -public class Reaction { +public class Reaction { + + /** The name of this reaction. */ + private final String name; /** The query to run. */ - private final Query query; + private final Query query; + + /** The filters to run. */ + private final List filters = Lists.newArrayList(); /** The trigger to detect changes. */ - private final Trigger trigger; + private final Trigger trigger; /** The action to perform. */ - private final Action action; + private final Action action; - /** The current state of the query. */ - private S currentState; + /** The interval in which to run queries (in milliseconds). */ + private long updateInterval; - /** The previous state of the query. */ - private S previousState; + /** + * Creates a new reaction. + * + * @param name + * The name of the reaction + * @param query + * The query to run + * @param trigger + * The trigger to detect changes + * @param action + * The action to perform + */ + public Reaction(String name, Query query, Trigger trigger, Action action) { + this(name, query, Collections. emptyList(), trigger, action); + } /** * Creates a new reaction. * + * @param name + * The name of the reaction * @param query * The query to run + * @param filters + * The filters to run * @param trigger * The trigger to detect changes * @param action * The action to perform */ - public Reaction(Query query, Trigger trigger, Action action) { + public Reaction(String name, Query query, List filters, Trigger trigger, Action action) { + this.name = name; this.query = query; + this.filters.addAll(filters); this.trigger = trigger; this.action = action; } @@ -63,20 +91,39 @@ public class Reaction { // /** + * Returns the name of this reaction. This name is solely used for display + * purposes and does not need to be unique. + * + * @return The name of this reaction + */ + public String name() { + return name; + } + + /** * Returns the query to run. * * @return The query to run */ - public Query query() { + public Query query() { return query; } /** + * Returns the filters to run. + * + * @return The filters to run + */ + public Iterable filters() { + return filters; + } + + /** * Returns the trigger to detect changes. * * @return The trigger to detect changes */ - public Trigger trigger() { + public Trigger trigger() { return trigger; } @@ -85,26 +132,29 @@ public class Reaction { * * @return The action to perform */ - public Action action() { + public Action action() { return action; } /** - * Returns the current state of the query. + * Returns the update interval of this reaction. * - * @return The current state of the query + * @return The update interval of this reaction (in milliseconds) */ - public S currentState() { - return currentState; + public long updateInterval() { + return updateInterval; } /** - * Returns the previous state of the query. + * Sets the update interval of this reaction. * - * @return The previous state of the query + * @param updateInterval + * The update interval of this reaction (in milliseconds) + * @return This reaction */ - public S previousState() { - return previousState; + public Reaction setUpdateInterval(long updateInterval) { + this.updateInterval = updateInterval; + return this; } }