X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Floader%2FReactionLoader.java;h=10608d942c204afc12d92e64074974c818d08bcd;hb=586ba9394f2ca5206c03181fa0b16f974352d96e;hp=2cf1d21814bfd58fef5f276b772a78a531287866;hpb=6f69aff66ba5617d0bb27874014b4274bc551ab8;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/loader/ReactionLoader.java b/src/main/java/net/pterodactylus/rhynodge/loader/ReactionLoader.java index 2cf1d21..10608d9 100644 --- a/src/main/java/net/pterodactylus/rhynodge/loader/ReactionLoader.java +++ b/src/main/java/net/pterodactylus/rhynodge/loader/ReactionLoader.java @@ -28,6 +28,7 @@ import net.pterodactylus.rhynodge.Filter; import net.pterodactylus.rhynodge.Query; import net.pterodactylus.rhynodge.Reaction; import net.pterodactylus.rhynodge.Trigger; +import net.pterodactylus.rhynodge.Watcher; import net.pterodactylus.rhynodge.loader.Chain.Parameter; import net.pterodactylus.rhynodge.loader.Chain.Part; @@ -55,22 +56,40 @@ public class ReactionLoader { throw new IllegalArgumentException("Chain is not enabled."); } - /* create query. */ - Query query = createObject(chain.query().name(), "net.pterodactylus.rhynodge.queries", extractParameters(chain.query().parameters())); - - /* create filters. */ - List filters = new ArrayList(); - for (Part filterPart : chain.filters()) { - filters.add(ReactionLoader. createObject(filterPart.name(), "net.pterodactylus.rhynodge.filters", extractParameters(filterPart.parameters()))); - } - - /* create trigger. */ - Trigger trigger = createObject(chain.trigger().name(), "net.pterodactylus.rhynodge.triggers", extractParameters(chain.trigger().parameters())); + Reaction reaction; /* create action. */ Action action = createObject(chain.action().name(), "net.pterodactylus.rhynodge.actions", extractParameters(chain.action().parameters())); - return new Reaction(chain.name(), query, filters, trigger, action).setUpdateInterval(TimeUnit.SECONDS.toMillis(chain.updateInterval())); + /* do we have a reaction defined? */ + if (chain.watcher() != null) { + + /* create watcher. */ + Watcher watcher = createObject(chain.watcher().name(), "net.pterodactylus.rhynodge.watchers", extractParameters(chain.watcher().parameters())); + + /* create reaction. */ + reaction = new Reaction(chain.name(), watcher.query(), watcher.filters(), watcher.trigger(), action); + + } else { + + /* create query. */ + Query query = createObject(chain.query().name(), "net.pterodactylus.rhynodge.queries", extractParameters(chain.query().parameters())); + + /* create filters. */ + List filters = new ArrayList(); + for (Part filterPart : chain.filters()) { + filters.add(ReactionLoader. createObject(filterPart.name(), "net.pterodactylus.rhynodge.filters", extractParameters(filterPart.parameters()))); + } + + /* create trigger. */ + Trigger trigger = createObject(chain.trigger().name(), "net.pterodactylus.rhynodge.triggers", extractParameters(chain.trigger().parameters())); + + /* create reaction. */ + reaction = new Reaction(chain.name(), query, filters, trigger, action); + } + + reaction.setUpdateInterval(TimeUnit.SECONDS.toMillis(chain.updateInterval())); + return reaction; } //