Adding UI extensibility
[aai/sparky-be.git] / src / main / java / org / onap / aai / sparky / sync / AbstractEntitySynchronizer.java
  *
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
-package org.onap.aai.sparky.synchronizer;
+package org.onap.aai.sparky.sync;
 
-import java.net.InetAddress;
-import java.net.UnknownHostException;
 import java.util.EnumSet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.onap.aai.sparky.config.oxm.OxmModelLoader;
+import org.onap.aai.cl.api.Logger;
+import org.onap.aai.cl.mdc.MdcContext;
+import org.onap.aai.restclient.client.OperationResult;
+import org.onap.aai.sparky.dal.ActiveInventoryAdapter;
+import org.onap.aai.sparky.dal.ElasticSearchAdapter;
 import org.onap.aai.sparky.dal.NetworkTransaction;
-import org.onap.aai.sparky.dal.aai.ActiveInventoryDataProvider;
 import org.onap.aai.sparky.dal.aai.ActiveInventoryEntityStatistics;
 import org.onap.aai.sparky.dal.aai.ActiveInventoryProcessingExceptionStatistics;
-import org.onap.aai.sparky.dal.aai.config.ActiveInventoryConfig;
-import org.onap.aai.sparky.dal.elasticsearch.ElasticSearchDataProvider;
 import org.onap.aai.sparky.dal.elasticsearch.ElasticSearchEntityStatistics;
 import org.onap.aai.sparky.dal.elasticsearch.config.ElasticSearchConfig;
 import org.onap.aai.sparky.dal.rest.HttpMethod;
-import org.onap.aai.sparky.dal.rest.OperationResult;
 import org.onap.aai.sparky.dal.rest.RestOperationalStatistics;
 import org.onap.aai.sparky.logging.AaiUiMsgs;
+import org.onap.aai.sparky.sync.config.NetworkStatisticsConfig;
 import org.onap.aai.sparky.util.NodeUtils;
-import org.onap.aai.cl.api.Logger;
-import org.onap.aai.cl.mdc.MdcContext;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 /**
@@ -58,7 +56,6 @@ public abstract class AbstractEntitySynchronizer {
 
   protected final Logger logger;
   protected ObjectMapper mapper;
-  protected OxmModelLoader oxmModelLoader;
   protected long syncDurationInMs;
 
   /**
@@ -70,8 +67,8 @@ public abstract class AbstractEntitySynchronizer {
 
   protected EnumSet<StatFlag> enabledStatFlags;
 
-  protected ActiveInventoryDataProvider aaiDataProvider;
-  protected ElasticSearchDataProvider esDataProvider;
+  protected ElasticSearchAdapter elasticSearchAdapter;
+  protected ActiveInventoryAdapter aaiAdapter;
 
   protected ExecutorService synchronizerExecutor;
   protected ExecutorService aaiExecutor;
@@ -87,8 +84,8 @@ public abstract class AbstractEntitySynchronizer {
   private TaskProcessingStats aaiTaskProcessingStats;
   private TaskProcessingStats esTaskProcessingStats;
 
-  private TransactionRateController aaiTransactionRateController;
-  private TransactionRateController esTransactionRateController;
+  private TransactionRateMonitor aaiTransactionRateController;
+  private TransactionRateMonitor esTransactionRateController;
 
   protected AtomicInteger aaiWorkOnHand;
   protected AtomicInteger esWorkOnHand;
@@ -255,7 +252,8 @@ public abstract class AbstractEntitySynchronizer {
    * @throws Exception the exception
    */
   protected AbstractEntitySynchronizer(Logger logger, String syncName, int numSyncWorkers,
-      int numActiveInventoryWorkers, int numElasticsearchWorkers, String indexName)
+      int numActiveInventoryWorkers, int numElasticsearchWorkers, String indexName,
+      NetworkStatisticsConfig aaiStatConfig, NetworkStatisticsConfig esStatConfig)
       throws Exception {
     this.logger = logger;
     this.synchronizerExecutor =
@@ -265,22 +263,19 @@ public abstract class AbstractEntitySynchronizer {
     this.esExecutor =
         NodeUtils.createNamedExecutor(syncName + "-ES", numElasticsearchWorkers, logger);
     this.mapper = new ObjectMapper();
-    this.oxmModelLoader = OxmModelLoader.getInstance();
     this.indexName = indexName;
     this.esRestStats = new RestOperationalStatistics();
-    this.esEntityStats = new ElasticSearchEntityStatistics(oxmModelLoader);
+    this.esEntityStats = new ElasticSearchEntityStatistics();
     this.aaiRestStats = new RestOperationalStatistics();
-    this.aaiEntityStats = new ActiveInventoryEntityStatistics(oxmModelLoader);
+    this.aaiEntityStats = new ActiveInventoryEntityStatistics();
     this.aaiProcessingExceptionStats = new ActiveInventoryProcessingExceptionStatistics();
-    this.aaiTaskProcessingStats =
-        new TaskProcessingStats(ActiveInventoryConfig.getConfig().getTaskProcessorConfig());
-    this.esTaskProcessingStats =
-        new TaskProcessingStats(ElasticSearchConfig.getConfig().getProcessorConfig());
+    this.aaiTaskProcessingStats = new TaskProcessingStats(aaiStatConfig);
+    this.esTaskProcessingStats = new TaskProcessingStats(esStatConfig);
 
     this.aaiTransactionRateController =
-        new TransactionRateController(ActiveInventoryConfig.getConfig().getTaskProcessorConfig());
+        new TransactionRateMonitor(numActiveInventoryWorkers, aaiStatConfig);
     this.esTransactionRateController =
-        new TransactionRateController(ElasticSearchConfig.getConfig().getProcessorConfig());
+        new TransactionRateMonitor(numElasticsearchWorkers, esStatConfig);
 
     this.aaiWorkOnHand = new AtomicInteger(0);
     this.esWorkOnHand = new AtomicInteger(0);
@@ -338,11 +333,19 @@ public abstract class AbstractEntitySynchronizer {
    */
   protected void shutdownExecutors() {
     try {
-      synchronizerExecutor.shutdown();
-      aaiExecutor.shutdown();
-      esExecutor.shutdown();
-      aaiDataProvider.shutdown();
-      esDataProvider.shutdown();
+
+      if (synchronizerExecutor != null) {
+        synchronizerExecutor.shutdown();
+      }
+
+      if (aaiExecutor != null) {
+        aaiExecutor.shutdown();
+      }
+
+      if (esExecutor != null) {
+        esExecutor.shutdown();
+      }
+
     } catch (Exception exc) {
       logger.error(AaiUiMsgs.ERROR_SHUTDOWN_EXECUTORS, exc);
     }
@@ -351,26 +354,22 @@ public abstract class AbstractEntitySynchronizer {
   /**
    * Clear cache.
    */
-  public void clearCache() {
-    if (aaiDataProvider != null) {
-      aaiDataProvider.clearCache();
-    }
-  }
+  public void clearCache() {}
 
-  protected ActiveInventoryDataProvider getAaiDataProvider() {
-    return aaiDataProvider;
+  public ElasticSearchAdapter getElasticSearchAdapter() {
+    return elasticSearchAdapter;
   }
 
-  public void setAaiDataProvider(ActiveInventoryDataProvider aaiDataProvider) {
-    this.aaiDataProvider = aaiDataProvider;
+  public void setElasticSearchAdapter(ElasticSearchAdapter elasticSearchAdapter) {
+    this.elasticSearchAdapter = elasticSearchAdapter;
   }
 
-  protected ElasticSearchDataProvider getEsDataProvider() {
-    return esDataProvider;
+  public ActiveInventoryAdapter getAaiAdapter() {
+    return aaiAdapter;
   }
 
-  public void setEsDataProvider(ElasticSearchDataProvider provider) {
-    this.esDataProvider = provider;
+  public void setAaiAdapter(ActiveInventoryAdapter aaiAdapter) {
+    this.aaiAdapter = aaiAdapter;
   }
 
   /**
@@ -472,10 +471,9 @@ public abstract class AbstractEntitySynchronizer {
 
     if (enabledStatFlags.contains(StatFlag.ES_TASK_PROCESSING_STATS)) {
 
-      esTransactionRateController.trackResponseTime(txn.getOperationResult().getResponseTimeInMs());
+      esTransactionRateController.trackResponseTime(txn.getOpTimeInMs());
 
-      esTaskProcessingStats
-          .updateTaskResponseStatsHistogram(txn.getOperationResult().getResponseTimeInMs());
+      esTaskProcessingStats.updateTaskResponseStatsHistogram(txn.getOpTimeInMs());
       esTaskProcessingStats.updateTaskAgeStatsHistogram(txn.getTaskAgeInMs());
 
       // don't know the cost of the lengh calc, we'll see if it causes a
@@ -533,11 +531,9 @@ public abstract class AbstractEntitySynchronizer {
     }
 
     if (enabledStatFlags.contains(StatFlag.AAI_TASK_PROCESSING_STATS)) {
-      aaiTransactionRateController
-          .trackResponseTime(txn.getOperationResult().getResponseTimeInMs());
+      aaiTransactionRateController.trackResponseTime(txn.getOpTimeInMs());
 
-      aaiTaskProcessingStats
-          .updateTaskResponseStatsHistogram(txn.getOperationResult().getResponseTimeInMs());
+      aaiTaskProcessingStats.updateTaskResponseStatsHistogram(txn.getOpTimeInMs());
       aaiTaskProcessingStats.updateTaskAgeStatsHistogram(txn.getTaskAgeInMs());
 
       // don't know the cost of the lengh calc, we'll see if it causes a