♻️ Move output generation to state
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / engine / ReactionRunner.java
index 63711b9..a4006d8 100644 (file)
@@ -48,7 +48,7 @@ public class ReactionRunner implements Runnable {
                State state = runQuery();
                state = runStateThroughFilters(state);
                if (!state.success()) {
-                       logger.info(format("Reaction %s failed.", reaction.name()));
+                       logger.info(format("Reaction %s failed in %s.", reaction.name(), state));
                        saveStateWithIncreasedFailCount(state);
                        errorEmailAction.execute(createErrorOutput(reaction, state));
                        return;
@@ -64,7 +64,7 @@ public class ReactionRunner implements Runnable {
                reactionState.saveState(newState);
                if (trigger.triggers()) {
                        logger.info(format("Trigger was hit for %s, executing action...", reaction.name()));
-                       reaction.action().execute(trigger.output(reaction));
+                       reaction.action().execute(newState.output(reaction));
                }
                logger.info(format("Reaction %s finished.", reaction.name()));
        }
@@ -84,7 +84,7 @@ public class ReactionRunner implements Runnable {
 
        private String createErrorEmailText(Reaction reaction, State state) {
                StringBuilder emailText = new StringBuilder();
-               emailText.append(String.format("An error occured while processing “.”\n\n", reaction.name()));
+               emailText.append(String.format("An error occured while processing “%s.”\n\n", reaction.name()));
                appendExceptionToEmailText(state.exception(), emailText);
                return emailText.toString();
        }
@@ -119,9 +119,6 @@ public class ReactionRunner implements Runnable {
                                logger.debug(format("Filtering state through %s...", filter.getClass().getSimpleName()));
                                try {
                                        currentState = filter.filter(currentState);
-                                       if (currentState.success() && currentState.isEmpty()) {
-                                               errorEmailAction.execute(createEmptyStateOutput(reaction, state));
-                                       }
                                } catch (Throwable t1) {
                                        logger.warn(format("Error during filter %s for %s.", filter.getClass().getSimpleName(), reaction.name()), t1);
                                        return new FailedState(t1);
@@ -131,10 +128,4 @@ public class ReactionRunner implements Runnable {
                return currentState;
        }
 
-       private Output createEmptyStateOutput(Reaction reaction, State state) {
-               DefaultOutput defaultOutput = new DefaultOutput(String.format("Reached Empty State for “%s!”", reaction.name()));
-               defaultOutput.addText("text/plain", String.format("The %s for %s was empty.", state.getClass().getSimpleName(), reaction.name()));
-               return defaultOutput;
-       }
-
 }