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;
21 import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
22 import org.onap.ccsdk.features.sdnr.wt.common.configuration.filechange.IConfigChangedListener;
23 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerService;
24 import org.onap.ccsdk.features.sdnr.wt.devicemanager.toggleAlarmFilter.conf.ToggleAlarmConfig;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
28 public class NotificationDelayService<T extends ToggleAlarmFilterable>
29 implements DeviceManagerService, AutoCloseable, IConfigChangedListener {
30 private static final Logger LOG = LoggerFactory.getLogger(NotificationDelayService.class);
32 private final HashMap<String, NotificationDelayFilter<T>> filters;
33 private final ToggleAlarmConfig config;
35 public NotificationDelayService(ConfigurationFileRepresentation htconfig) {
36 this.filters = new HashMap<>();
37 htconfig.registerConfigChangedListener(this);
38 config = new ToggleAlarmConfig(htconfig);
42 public NotificationDelayFilter<T> getInstance(String nodeName, NotificationDelayedListener<T> eventListener) {
43 NotificationDelayFilter<T> filter = filters.getOrDefault(nodeName, null);
45 LOG.trace("nodeName={}, filter!=null? {}", nodeName, filter != null);
47 filter = new NotificationDelayFilter<>(nodeName, eventListener);
48 this.filters.put(nodeName, filter);
54 public void onConfigChanged() {
56 NotificationDelayFilter.setDelay(config.getDelay());
57 NotificationDelayFilter.setEnabled(config.isEnabled());
59 LOG.error("Can not process configuration change");
64 public void close() throws Exception {
66 for (NotificationDelayFilter<T> filter : this.filters.values()) {