⬆️ Update a bunch of dependencies
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / loader / ChainWatcher.java
index 52b3fa4..2dc071d 100644 (file)
@@ -27,6 +27,9 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
+import jakarta.inject.Inject;
+import jakarta.inject.Singleton;
+
 import net.pterodactylus.rhynodge.Reaction;
 import net.pterodactylus.rhynodge.engine.Engine;
 import net.pterodactylus.rhynodge.loader.Chain.Parameter;
@@ -48,6 +51,7 @@ import com.google.common.util.concurrent.Uninterruptibles;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
+@Singleton
 public class ChainWatcher extends AbstractExecutionThreadService {
 
        /** The logger. */
@@ -73,9 +77,10 @@ public class ChainWatcher extends AbstractExecutionThreadService {
         * @param directory
         *            The directory to watch
         */
-       public ChainWatcher(Engine engine, String directory) {
+       @Inject
+       public ChainWatcher(Engine engine, ChainDirectory directory) {
                this.engine = engine;
-               this.directory = directory;
+               this.directory = directory.getDirectory();
        }
 
        //
@@ -125,19 +130,23 @@ public class ChainWatcher extends AbstractExecutionThreadService {
                                /* dump chain */
                                logger.debug(String.format(" Enabled: %s", chain.enabled()));
 
-                               logger.debug(String.format(" Query: %s", chain.query().name()));
-                               for (Parameter parameter : chain.query().parameters()) {
-                                       logger.debug(String.format("  Parameter: %s=%s", parameter.name(), parameter.value()));
-                               }
-                               for (Part filter : chain.filters()) {
-                                       logger.debug(String.format(" Filter: %s", filter.name()));
-                                       for (Parameter parameter : filter.parameters()) {
+                               if (chain.watcher() != null) {
+                                       logger.debug(String.format("Reaction: %s", chain.watcher().name()));
+                               } else {
+                                       logger.debug(String.format(" Query: %s", chain.query().name()));
+                                       for (Parameter parameter : chain.query().parameters()) {
+                                               logger.debug(String.format("  Parameter: %s=%s", parameter.name(), parameter.value()));
+                                       }
+                                       for (Part filter : chain.filters()) {
+                                               logger.debug(String.format(" Filter: %s", filter.name()));
+                                               for (Parameter parameter : filter.parameters()) {
+                                                       logger.debug(String.format("  Parameter: %s=%s", parameter.name(), parameter.value()));
+                                               }
+                                       }
+                                       logger.debug(String.format(" Trigger: %s", chain.merger().name()));
+                                       for (Parameter parameter : chain.merger().parameters()) {
                                                logger.debug(String.format("  Parameter: %s=%s", parameter.name(), parameter.value()));
                                        }
-                               }
-                               logger.debug(String.format(" Trigger: %s", chain.trigger().name()));
-                               for (Parameter parameter : chain.trigger().parameters()) {
-                                       logger.debug(String.format("  Parameter: %s=%s", parameter.name(), parameter.value()));
                                }
                                logger.debug(String.format(" Action: %s", chain.action().name()));
                                for (Parameter parameter : chain.action().parameters()) {
@@ -162,7 +171,7 @@ public class ChainWatcher extends AbstractExecutionThreadService {
                        for (Entry<String, Chain> loadedChain : loadedChains.entrySet()) {
 
                                /* skip chains that still exist. */
-                               if (enabledChains.containsKey(loadedChain.getKey())) {
+                               if (loadedChains.containsValue(loadedChain.getValue())) {
                                        continue;
                                }
 
@@ -231,4 +240,22 @@ public class ChainWatcher extends AbstractExecutionThreadService {
                return (filename.lastIndexOf(".") > -1) ? filename.substring(0, filename.lastIndexOf(".")) : filename;
        }
 
+       public static class ChainDirectory {
+
+               private final String directory;
+
+               private ChainDirectory(String directory) {
+                       this.directory = directory;
+               }
+
+               public String getDirectory() {
+                       return directory;
+               }
+
+               public static ChainDirectory of(String directory) {
+                       return new ChainDirectory(directory);
+               }
+
+       }
+
 }