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==========================================================================
18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.toggleAlarmFilter;
20 import java.util.HashMap;
22 import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
23 import org.onap.ccsdk.features.sdnr.wt.common.configuration.filechange.IConfigChangedListener;
24 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerService;
25 import org.onap.ccsdk.features.sdnr.wt.devicemanager.toggleAlarmFilter.conf.ToggleAlarmConfig;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
29 public class NotificationDelayService<T extends ToggleAlarmFilterable>
30 implements DeviceManagerService, AutoCloseable, IConfigChangedListener {
31 private static final Logger LOG = LoggerFactory.getLogger(NotificationDelayService.class);
33 private final HashMap<String, NotificationDelayFilter<T>> filters;
34 private final ToggleAlarmConfig config;
36 public NotificationDelayService(ConfigurationFileRepresentation htconfig) {
37 this.filters = new HashMap<>();
38 htconfig.registerConfigChangedListener(this);
39 config = new ToggleAlarmConfig(htconfig);
43 public NotificationDelayFilter<T> getInstance(String nodeName, NotificationDelayedListener<T> eventListener) {
44 NotificationDelayFilter<T> filter = filters.getOrDefault(nodeName, null);
46 LOG.trace("nodeName={}, filter!=null? {}", nodeName, filter != null);
48 filter = new NotificationDelayFilter<>(nodeName, eventListener);
49 this.filters.put(nodeName, filter);
55 public void onConfigChanged() {
56 NotificationDelayFilter.setDelay(config.getDelay());
57 NotificationDelayFilter.setEnabled(config.isEnabled());
61 public void close() throws Exception {
63 for (NotificationDelayFilter<T> filter : this.filters.values()) {