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;
+import net.pterodactylus.rhynodge.Merger;
/**
* Creates {@link Reaction}s from {@link Chain}s.
throw new IllegalArgumentException("Chain is not enabled.");
}
+ Reaction reaction;
+
/* create action. */
Action action = createObject(chain.action().name(), "net.pterodactylus.rhynodge.actions", extractParameters(chain.action().parameters()));
/* 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()));
- return new Reaction(chain.name(), watcher.query(), watcher.filters(), watcher.trigger(), action);
- }
- /* create query. */
- Query query = createObject(chain.query().name(), "net.pterodactylus.rhynodge.queries", extractParameters(chain.query().parameters()));
+ /* create reaction. */
+ reaction = new Reaction(chain.name(), watcher.query(), watcher.filters(), watcher.merger(), action);
- /* create filters. */
- List<Filter> filters = new ArrayList<Filter>();
- for (Part filterPart : chain.filters()) {
- filters.add(ReactionLoader.<Filter> createObject(filterPart.name(), "net.pterodactylus.rhynodge.filters", extractParameters(filterPart.parameters())));
- }
+ } else {
+
+ /* create query. */
+ Query query = createObject(chain.query().name(), "net.pterodactylus.rhynodge.queries", extractParameters(chain.query().parameters()));
- /* create trigger. */
- Trigger trigger = createObject(chain.trigger().name(), "net.pterodactylus.rhynodge.triggers", extractParameters(chain.trigger().parameters()));
+ /* create filters. */
+ List<Filter> filters = new ArrayList<Filter>();
+ for (Part filterPart : chain.filters()) {
+ filters.add(ReactionLoader.<Filter> createObject(filterPart.name(), "net.pterodactylus.rhynodge.filters", extractParameters(filterPart.parameters())));
+ }
+
+ /* create merger. */
+ Merger merger = createObject(chain.merger().name(), "net.pterodactylus.rhynodge.mergers", extractParameters(chain.merger().parameters()));
+
+ /* create reaction. */
+ reaction = new Reaction(chain.name(), query, filters, merger, action);
+ }
- return new Reaction(chain.name(), query, filters, trigger, action).setUpdateInterval(TimeUnit.SECONDS.toMillis(chain.updateInterval()));
+ reaction.setUpdateInterval(TimeUnit.SECONDS.toMillis(chain.updateInterval()));
+ return reaction;
}
//