NONRTRIC - ECS Persistent storage of EI Jobs
[nonrtric.git] / enrichment-coordinator-service / src / main / java / org / oransc / enrichment / repository / EiProducer.java
index 30e62de..d8b2015 100644 (file)
 package org.oransc.enrichment.repository;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
-import org.immutables.gson.Gson;
-import org.immutables.value.Value;
+import lombok.Getter;
 
-@Value.Immutable
-@Gson.TypeAdapters
-public interface EiProducer {
-    public String id();
+public class EiProducer {
+    @Getter
+    private final String id;
 
-    public Collection<EiType> eiTypes();
+    @Getter
+    private final Collection<EiType> eiTypes;
 
-    public String jobCreationCallbackUrl();
+    @Getter
+    private final String jobCallbackUrl;
 
-    public String jobDeletionCallbackUrl();
+    @Getter
+    private final String producerSupervisionCallbackUrl;
+
+    private final Set<String> enabledJobs = new HashSet<>();
+
+    private int unresponsiveCounter = 0;
+
+    public EiProducer(String id, Collection<EiType> eiTypes, String jobCallbackUrl,
+        String producerSupervisionCallbackUrl) {
+        this.id = id;
+        this.eiTypes = eiTypes;
+        this.jobCallbackUrl = jobCallbackUrl;
+        this.producerSupervisionCallbackUrl = producerSupervisionCallbackUrl;
+    }
+
+    public synchronized void setAliveStatus(boolean isAlive) {
+        if (isAlive) {
+            unresponsiveCounter = 0;
+        } else {
+            unresponsiveCounter++;
+        }
+    }
+
+    public synchronized boolean isDead() {
+        return this.unresponsiveCounter >= 3;
+    }
+
+    public synchronized boolean isAvailable() {
+        return this.unresponsiveCounter == 0;
+    }
+
+    public synchronized void setJobEnabled(EiJob job) {
+        this.enabledJobs.add(job.getId());
+    }
+
+    public synchronized void setJobDisabled(EiJob job) {
+        this.enabledJobs.remove(job.getId());
+    }
+
+    /**
+     * Is the job enabled for this producer?
+     */
+    public synchronized boolean isJobEnabled(EiJob job) {
+        return this.enabledJobs.contains(job.getId());
+    }
 
 }