import java.util.Set;
import java.util.concurrent.TimeUnit;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
import net.pterodactylus.rhynodge.Reaction;
import net.pterodactylus.rhynodge.engine.Engine;
import net.pterodactylus.rhynodge.loader.Chain.Parameter;
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
+@Singleton
public class ChainWatcher extends AbstractExecutionThreadService {
/** The logger. */
* @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();
}
//
/* 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.trigger().name()));
+ for (Parameter parameter : chain.trigger().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()) {
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);
+ }
+
+ }
+
}