diff options
Diffstat (limited to 'src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java')
-rw-r--r-- | src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java b/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java index a167872..e809b45 100644 --- a/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java +++ b/src/main/java/org/onap/dcaegen2/services/sonhms/MainThreadComponent.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * son-handler * ================================================================================ - * Copyright (C) 2019 Wipro Limited. + * Copyright (C) 2019-2020 Wipro Limited. * ============================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,11 +21,27 @@ package org.onap.dcaegen2.services.sonhms; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; + import javax.annotation.PostConstruct; +import org.onap.dcaegen2.services.sonhms.child.ChildThread; +import org.onap.dcaegen2.services.sonhms.child.Graph; +import org.onap.dcaegen2.services.sonhms.dao.FixedPciCellsRepository; +import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; +import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils; +import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component @@ -42,8 +58,6 @@ public class MainThreadComponent { @Autowired private NewFmNotification newFmNotification; - - /** * main thread initialization. */ @@ -55,4 +69,34 @@ public class MainThreadComponent { Thread pmThread = new Thread(new PmThread(newPmNotification)); pmThread.start(); } + + @Scheduled(fixedRate = 300000, initialDelay = 60000) + public void checkFixedPciTable() { + log.info("Inside checkFixedPciTable method"); + FixedPciCellsRepository fixedPciCellsRepository = BeanUtil.getBean(FixedPciCellsRepository.class); + List<String> fixedPciCellsList = fixedPciCellsRepository.getFixedPciCells(); + if (!fixedPciCellsList.isEmpty()) { + log.info("Fixed Pci table not empty"); + Timestamp lastInvokedOofTimeStamp = ChildThread.getLastInvokedOofTimeStamp(); + Timestamp fixedPciCreatedAt = fixedPciCellsRepository.getTimeStampforFixedPci(); + Long difference = fixedPciCreatedAt.getTime() - lastInvokedOofTimeStamp.getTime(); + Configuration configuration = Configuration.getInstance(); + + if (difference > configuration.getPolicyFixedPciTimeInterval()) { + log.info("Creating new child thread for sending fixedPciCells"); + List<Graph> cluster = new ArrayList<>(); + BlockingQueue<List<String>> childStatusQueue = new LinkedBlockingQueue<>(); + EventHandler eventHandler = new EventHandler(childStatusQueue, + Executors.newFixedThreadPool(Configuration.getInstance().getMaximumClusters()), new HashMap<>(), + new ClusterUtils(), new ThreadUtils()); + ExecutorService pool = Executors.newFixedThreadPool(5); + ThreadUtils threadUtils = new ThreadUtils(); + boolean result = threadUtils.createNewThread(cluster, childStatusQueue, pool, eventHandler, null); + log.info("Child Thread creation result:"+ result); + } + + } else { + log.info("Exiting function fixedPci table empty"); + } + } } |