// Path: rss-2-kindle-camel/src/main/java/org/roag/camel/PollingException.java
// public class PollingException extends Exception {
// 
//     public PollingException(String message) {
//         super(message);
//     }
// 
//     public PollingException(String message, Throwable cause) {
//         super(message, cause);
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/ds/SubscriberRepository.java
// public interface SubscriberRepository {
// 
//     UserRepository getUserRepository() throws Exception;
// 
//     Subscriber getSubscriber(String username, String email) throws Exception;
// 
//     OperationResult updateSubscriber(String username, Subscriber subscriber) throws Exception;
// 
//     OperationResult suspendSubscriber(String username, String email) throws Exception;
// 
//     OperationResult resumeSubscriber(String username, String email) throws Exception;
// 
//     OperationResult addSubscriber(String username, Subscriber subscriber) throws Exception;
// 
//     OperationResult removeSubscriber(String username, String email) throws Exception;
// 
//     OperationResult removeSubscriber(String username, Subscriber subscriber) throws Exception;
// 
//     List<Subscriber> findAllSubscribersByUser(String username) throws Exception;
// 
//     List<Subscriber> findAllSubscribersByUser(String username, Map condition) throws Exception;
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/Rss.java
// @Generated("net.hexar.json2pojo")
// @SuppressWarnings("unused")
// public class Rss implements Serializable {
//     @SerializedName("rss")
//     private String rss;
//     @SerializedName("status")
//     private String status;
//     @SerializedName("lastPollingDate")
//     private String lastPollingDate;
//     @SerializedName("errorMessage")
//     private String errorMessage;
//     @SerializedName("retryCount")
//     private short retryCount = 0;
// 
//     public String getRss() {
//         return rss;
//     }
// 
//     public void setRss(String rss) {
//         this.rss = rss;
//     }
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public String getLastPollingDate() {
//         return lastPollingDate;
//     }
// 
//     public void setLastPollingDate(String lastPollingDate) {
//         this.lastPollingDate = lastPollingDate;
//     }
// 
//     public String getErrorMessage() {
//         return errorMessage;
//     }
// 
//     public void setErrorMessage(String errorMessage) {
//         this.errorMessage = errorMessage;
//     }
// 
//     public short getRetryCount() {
//         return retryCount;
//     }
// 
//     public void setRetryCount(short retryCount) {
//         this.retryCount = retryCount;
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/RssStatus.java
// public enum RssStatus {
//     ACTIVE("active"),
//     OFFLINE("offline"),
//     DEAD("dead");
// 
//     private final String value;
// 
//     RssStatus(String value) {
//         this.value = value;
//     }
// 
// 
//     @Override
//     public String toString() {
//         return value;
//     }
// 
//     public static RssStatus fromValue(String value) {
//         for (RssStatus s : RssStatus.values()) {
//             if (s.toString().equals(value)) {
//                 return s;
//             }
//         }
//         throw new IllegalArgumentException("Illegal value of argument: " + value);
//     }
// 
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/Subscriber.java
// @Generated("net.hexar.json2pojo")
// @SuppressWarnings("unused")
// public class Subscriber implements Serializable {
// 
//     @SerializedName("email")
//     private String email;
//     @SerializedName("name")
//     private String name;
//     @SerializedName("rsslist")
//     private List<Rss> rssList;
//     @SerializedName("settings")
//     private Settings settings;
//     @SerializedName("status")
//     private String status;
//     @SerializedName("dateCreated")
//     private String dateCreated;
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public List<Rss> getRsslist() {
//         return rssList;
//     }
// 
//     public void setRsslist(List<Rss> rsslist) {
//         this.rssList = rsslist;
//     }
// 
//     public Settings getSettings() {
//         return settings;
//     }
// 
//     public void setSettings(Settings settings) {
//         this.settings = settings;
//     }
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public String getDateCreated() {
//         return dateCreated;
//     }
// 
//     public void setDateCreated(String dateCreated) {
//         this.dateCreated = dateCreated;
//     }
// }


import org.roag.camel.PollingException;
import org.roag.ds.SubscriberRepository;
import org.roag.model.Rss;
import org.roag.model.RssStatus;
import org.roag.model.Subscriber;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
package org.roag.camel.polling;



/**
 * Created by eurohlam on 9/08/2019.
 */
public class PollingResultHandler implements Runnable {

    private final Logger logger = LoggerFactory.getLogger(PollingResultHandler.class);

    private SubscriberRepository subscriberRepository;
    private final String username;
    private Subscriber subscriber;
    private Map<Rss, Future<PollingTaskResult>> taskMap;


// Path: rss-2-kindle-camel/src/main/java/org/roag/camel/PollingException.java
// public class PollingException extends Exception {
// 
//     public PollingException(String message) {
//         super(message);
//     }
// 
//     public PollingException(String message, Throwable cause) {
//         super(message, cause);
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/ds/SubscriberRepository.java
// public interface SubscriberRepository {
// 
//     UserRepository getUserRepository() throws Exception;
// 
//     Subscriber getSubscriber(String username, String email) throws Exception;
// 
//     OperationResult updateSubscriber(String username, Subscriber subscriber) throws Exception;
// 
//     OperationResult suspendSubscriber(String username, String email) throws Exception;
// 
//     OperationResult resumeSubscriber(String username, String email) throws Exception;
// 
//     OperationResult addSubscriber(String username, Subscriber subscriber) throws Exception;
// 
//     OperationResult removeSubscriber(String username, String email) throws Exception;
// 
//     OperationResult removeSubscriber(String username, Subscriber subscriber) throws Exception;
// 
//     List<Subscriber> findAllSubscribersByUser(String username) throws Exception;
// 
//     List<Subscriber> findAllSubscribersByUser(String username, Map condition) throws Exception;
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/Rss.java
// @Generated("net.hexar.json2pojo")
// @SuppressWarnings("unused")
// public class Rss implements Serializable {
//     @SerializedName("rss")
//     private String rss;
//     @SerializedName("status")
//     private String status;
//     @SerializedName("lastPollingDate")
//     private String lastPollingDate;
//     @SerializedName("errorMessage")
//     private String errorMessage;
//     @SerializedName("retryCount")
//     private short retryCount = 0;
// 
//     public String getRss() {
//         return rss;
//     }
// 
//     public void setRss(String rss) {
//         this.rss = rss;
//     }
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public String getLastPollingDate() {
//         return lastPollingDate;
//     }
// 
//     public void setLastPollingDate(String lastPollingDate) {
//         this.lastPollingDate = lastPollingDate;
//     }
// 
//     public String getErrorMessage() {
//         return errorMessage;
//     }
// 
//     public void setErrorMessage(String errorMessage) {
//         this.errorMessage = errorMessage;
//     }
// 
//     public short getRetryCount() {
//         return retryCount;
//     }
// 
//     public void setRetryCount(short retryCount) {
//         this.retryCount = retryCount;
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/RssStatus.java
// public enum RssStatus {
//     ACTIVE("active"),
//     OFFLINE("offline"),
//     DEAD("dead");
// 
//     private final String value;
// 
//     RssStatus(String value) {
//         this.value = value;
//     }
// 
// 
//     @Override
//     public String toString() {
//         return value;
//     }
// 
//     public static RssStatus fromValue(String value) {
//         for (RssStatus s : RssStatus.values()) {
//             if (s.toString().equals(value)) {
//                 return s;
//             }
//         }
//         throw new IllegalArgumentException("Illegal value of argument: " + value);
//     }
// 
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/Subscriber.java
// @Generated("net.hexar.json2pojo")
// @SuppressWarnings("unused")
// public class Subscriber implements Serializable {
// 
//     @SerializedName("email")
//     private String email;
//     @SerializedName("name")
//     private String name;
//     @SerializedName("rsslist")
//     private List<Rss> rssList;
//     @SerializedName("settings")
//     private Settings settings;
//     @SerializedName("status")
//     private String status;
//     @SerializedName("dateCreated")
//     private String dateCreated;
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public List<Rss> getRsslist() {
//         return rssList;
//     }
// 
//     public void setRsslist(List<Rss> rsslist) {
//         this.rssList = rsslist;
//     }
// 
//     public Settings getSettings() {
//         return settings;
//     }
// 
//     public void setSettings(Settings settings) {
//         this.settings = settings;
//     }
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public String getDateCreated() {
//         return dateCreated;
//     }
// 
//     public void setDateCreated(String dateCreated) {
//         this.dateCreated = dateCreated;
//     }
// }


// Path: rss-2-kindle-camel/src/main/java/org/roag/camel/polling/PollingResultHandler.java
import org.roag.camel.PollingException;
import org.roag.ds.SubscriberRepository;
import org.roag.model.Rss;
import org.roag.model.RssStatus;
import org.roag.model.Subscriber;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

package org.roag.camel.polling;



/**
 * Created by eurohlam on 9/08/2019.
 */
public class PollingResultHandler implements Runnable {

    private final Logger logger = LoggerFactory.getLogger(PollingResultHandler.class);

    private SubscriberRepository subscriberRepository;
    private final String username;
    private Subscriber subscriber;
    private Map<Rss, Future<PollingTaskResult>> taskMap;


    public PollingResultHandler(SubscriberRepository subscriberRepository, String username, Subscriber subscriber,