- return !newComics.isEmpty();
- }
-
- @Override
- public Output output(Reaction reaction) {
- DefaultOutput output = new DefaultOutput(String.format("New Comic found for “%s!”", reaction.name()));
-
- output.addText("text/plain", generatePlainText());
- output.addText("text/html", generateHtmlText());
-
- return output;
- }
-
- //
- // PRIVATE METHODS
- //
-
- /**
- * Generates a list of the new comics in plain text format.
- *
- * @return The list of new comics in plain text format
- */
- private String generatePlainText() {
- StringBuilder text = new StringBuilder();
-
- for (Comic newComic : newComics) {
- text.append("Comic Found: ").append(newComic.title()).append("\n\n");
- for (Strip strip : newComic) {
- text.append("Image: ").append(strip.imageUrl()).append("\n");
- if (!StringUtils.isBlank(strip.comment())) {
- text.append("Comment: ").append(strip.comment()).append("\n");
- }
- }
- text.append("\n\n");
- }
-
- return text.toString();
- }
-
- /**
- * Generates a list of new comics in HTML format.
- *
- * @return The list of new comics in HTML format
- */
- private String generateHtmlText() {
- StringBuilder html = new StringBuilder();
- html.append("<body>");
-
- for (Comic newComic : newComics) {
- generateComicHtml(html, newComic);
- }
-
- List<Comic> latestComics = new ArrayList<Comic>(mergedComicState.comics());
- Collections.reverse(latestComics);
- int comicCount = 0;
- for (Comic comic : latestComics) {
- if (newComics.contains(comic)) {
- continue;
- }
- generateComicHtml(html, comic);
- if (++comicCount == 7) {
- break;
- }
- }
-
- return html.append("</body>").toString();
- }
-
- /**
- * Generates the HTML for a single comic.
- *
- * @param html
- * The string builder to append the HTML to
- * @param comic
- * The comic to render
- */
- private void generateComicHtml(StringBuilder html, Comic comic) {
- html.append("<h1>").append(StringEscapeUtils.escapeHtml4(comic.title())).append("</h1>\n");
- for (Strip strip : comic) {
- html.append("<div><img src=\"").append(StringEscapeUtils.escapeHtml4(strip.imageUrl()));
- html.append("\" alt=\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
- html.append("\" title=\"").append(StringEscapeUtils.escapeHtml4(strip.comment()));
- html.append("\"></div>\n");
- html.append("<div>").append(StringEscapeUtils.escapeHtml4(strip.comment())).append("</div>\n");
- }