Add state that stores a single String value.
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / filters / ComicSiteFilter.java
index 5f6a11e..9b3dfcd 100644 (file)
@@ -25,6 +25,7 @@ import net.pterodactylus.rhynodge.Filter;
 import net.pterodactylus.rhynodge.State;
 import net.pterodactylus.rhynodge.states.ComicState;
 import net.pterodactylus.rhynodge.states.ComicState.Comic;
+import net.pterodactylus.rhynodge.states.ComicState.Strip;
 import net.pterodactylus.rhynodge.states.HtmlState;
 
 import com.google.common.base.Optional;
@@ -49,13 +50,19 @@ public abstract class ComicSiteFilter implements Filter {
                /* extract comics. */
                Optional<String> title = extractTitle(htmlState.document());
                List<String> imageUrls = extractImageUrls(htmlState.document());
+               List<String> imageComments = extractImageComments(htmlState.document());
 
                /* store comic, if found, into state. */
                if (title.isPresent() && !imageUrls.isEmpty()) {
                        Comic comic = new Comic(title.get());
+                       int imageCounter = 0;
                        for (String imageUrl : imageUrls) {
-                               comic.addImageUrl(imageUrl);
+                               String imageComment = (imageCounter < imageComments.size()) ? imageComments.get(imageCounter) : "";
+                               Strip strip = new Strip(imageUrl, imageComment);
+                               imageCounter++;
+                               comic.add(strip);
                        }
+                       comicState.add(comic);
                }
 
                return comicState;
@@ -85,4 +92,16 @@ public abstract class ComicSiteFilter implements Filter {
         */
        protected abstract List<String> extractImageUrls(Document document);
 
+       /**
+        * Extracts the image comments from the given document. The elements of this
+        * last and of the list returned by {@link #extractImageUrls(org.jsoup.nodes.Document)}
+        * are paired up and added as {@link Strip}s. If the list returned by this
+        * method has less elements, an empty string is used for the remaining images.
+        *
+        * @param document
+        *              The document to extract the image comments from
+        * @return The extracted image comments
+        */
+       protected abstract List<String> extractImageComments(Document document);
+
 }