1 /*******************************************************************************
2 * ============LICENSE_START========================================================================
3 * ONAP : ccsdk feature sdnr wt
4 * =================================================================================================
5 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6 * =================================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software distributed under the License
13 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14 * or implied. See the License for the specific language governing permissions and limitations under
16 * ============LICENSE_END==========================================================================
17 ******************************************************************************/
18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.base.toggleAlarmFilter;
20 import java.util.HashMap;
21 import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.HtDevicemanagerConfiguration;
22 import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.IConfigChangedListener;
23 import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.ToggleAlarmConfig;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
27 public class NotificationDelayService<T> implements AutoCloseable {
28 private static final Logger LOG = LoggerFactory.getLogger(NotificationDelayService.class);
30 private final HashMap<String, NotificationDelayFilter<T>> filters;
32 public NotificationDelayFilter<T> getInstance(String nodeName, NotificationDelayedListener<T> eventListener) {
33 NotificationDelayFilter<T> filter = filters.getOrDefault(nodeName, null);
35 LOG.trace("nodeName={}, filter!=null? {}", nodeName, filter != null);
37 filter = new NotificationDelayFilter<>(nodeName, eventListener);
38 this.filters.put(nodeName, filter);
43 public NotificationDelayService(HtDevicemanagerConfiguration htconfig) {
44 this.filters = new HashMap<>();
45 htconfig.registerConfigChangedListener(configChangedListener);
46 NotificationDelayFilter.setDelay(htconfig.getToggleAlarm().getDelay());
47 NotificationDelayFilter.setEnabled(htconfig.getToggleAlarm().isEnabled());
50 private final IConfigChangedListener configChangedListener = () -> {
51 ToggleAlarmConfig cfg = ToggleAlarmConfig.reload();
52 NotificationDelayFilter.setDelay(cfg.getDelay());
53 NotificationDelayFilter.setEnabled(cfg.isEnabled());
57 public void close() throws Exception {
59 for (NotificationDelayFilter<T> filter : this.filters.values()) {