Update of EI Data Producer API
[nonrtric.git] / enrichment-coordinator-service / src / main / java / org / oransc / enrichment / BeanFactory.java
index f4cf9dc..f5aca7e 100644 (file)
@@ -22,11 +22,15 @@ package org.oransc.enrichment;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import java.lang.invoke.MethodHandles;
+
 import org.apache.catalina.connector.Connector;
 import org.oransc.enrichment.configuration.ApplicationConfig;
+import org.oransc.enrichment.controllers.producer.ProducerCallbacks;
 import org.oransc.enrichment.repository.EiJobs;
-import org.oransc.enrichment.repository.EiProducers;
 import org.oransc.enrichment.repository.EiTypes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
 import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
@@ -40,6 +44,11 @@ class BeanFactory {
     private int httpPort = 0;
 
     private final ApplicationConfig applicationConfig = new ApplicationConfig();
+    private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+    private ProducerCallbacks producerCallbacks;
+    private EiTypes eiTypes;
+    private EiJobs eiJobs;
 
     @Bean
     public ObjectMapper mapper() {
@@ -57,17 +66,36 @@ class BeanFactory {
 
     @Bean
     public EiJobs eiJobs() {
-        return new EiJobs();
+        if (eiJobs == null) {
+            eiJobs = new EiJobs(getApplicationConfig(), producerCallbacks());
+            try {
+                eiJobs.restoreJobsFromDatabase();
+            } catch (Exception e) {
+                logger.error("Could not restore jobs from database: {}", e.getMessage());
+            }
+        }
+        return eiJobs;
     }
 
     @Bean
     public EiTypes eiTypes() {
-        return new EiTypes();
+        if (this.eiTypes == null) {
+            eiTypes = new EiTypes(getApplicationConfig());
+            try {
+                eiTypes.restoreTypesFromDatabase();
+            } catch (Exception e) {
+                logger.error("Could not restore EI types from database: {}", e.getMessage());
+            }
+        }
+        return eiTypes;
     }
 
     @Bean
-    public EiProducers eiProducers() {
-        return new EiProducers();
+    public ProducerCallbacks producerCallbacks() {
+        if (this.producerCallbacks == null) {
+            producerCallbacks = new ProducerCallbacks(getApplicationConfig());
+        }
+        return this.producerCallbacks;
     }
 
     @Bean