Fix OSGi wiring issues
[ccsdk/features.git] / blueprints-processor / adaptors / data-adaptor-provider / src / main / java / org / onap / ccsdk / config / data / adaptor / dao / ConfigPropertyMapDaoImpl.java
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * Modifications Copyright © 2018 IBM.\r
4  * \r
5  * Licensed under the Apache License, Version 2.0 (the "License");\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  * \r
9  * http://www.apache.org/licenses/LICENSE-2.0\r
10  * \r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an "AS IS" BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  */\r
17 \r
18 package org.onap.ccsdk.config.data.adaptor.dao;\r
19 \r
20 import java.util.Map;\r
21 import java.util.concurrent.ConcurrentHashMap;\r
22 import java.util.concurrent.Executors;\r
23 import java.util.concurrent.ScheduledExecutorService;\r
24 import java.util.concurrent.TimeUnit;\r
25 import org.apache.commons.lang3.StringUtils;\r
26 import org.onap.ccsdk.config.data.adaptor.DataAdaptorConstants;\r
27 import org.onap.ccsdk.sli.core.sli.SvcLogicException;\r
28 import org.springframework.jdbc.CannotGetJdbcConnectionException;\r
29 import org.springframework.jdbc.core.JdbcTemplate;\r
30 import com.att.eelf.configuration.EELFLogger;\r
31 import com.att.eelf.configuration.EELFManager;\r
32 import com.google.common.base.Preconditions;\r
33 \r
34 public class ConfigPropertyMapDaoImpl implements ConfigPropertyMapDao {\r
35 \r
36     private static EELFLogger logger = EELFManager.getInstance().getLogger(ConfigPropertyMapDaoImpl.class);\r
37 \r
38     private JdbcTemplate jdbcTemplate;\r
39     private Map<String, String> configPropertyMap = new ConcurrentHashMap<>();\r
40 \r
41     public ConfigPropertyMapDaoImpl(JdbcTemplate jdbcTemplate) {\r
42         this.jdbcTemplate = jdbcTemplate;\r
43         initializeMap();\r
44 \r
45         String envType = configPropertyMap.get(DataAdaptorConstants.PROPERTY_ENV_TYPE);\r
46         if (!(DataAdaptorConstants.PROPERTY_ENV_PROD.equalsIgnoreCase(envType)\r
47                 || DataAdaptorConstants.PROPERTY_ENV_SOLO.equalsIgnoreCase(envType))) {\r
48             ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);\r
49             Runnable task = this::initializeMap;\r
50             executor.scheduleWithFixedDelay(task, 60, 15, TimeUnit.MINUTES);\r
51         }\r
52     }\r
53 \r
54     private void initializeMap() {\r
55         try {\r
56             String getPropQuery = "SELECT * FROM CONFIG_PROPERTY_MAP";\r
57             jdbcTemplate.queryForList(getPropQuery).forEach(rows -> {\r
58                 String key = StringUtils.trimToEmpty((String) rows.get("reference_key"));\r
59                 String value = StringUtils.trimToEmpty((String) rows.get("reference_value"));\r
60                 configPropertyMap.put(key, value);\r
61             });\r
62             logger.trace("loaded configPropertyMap : ({})", configPropertyMap);\r
63         } catch (CannotGetJdbcConnectionException e) {\r
64             // WHAT TO DO?\r
65         }\r
66     }\r
67 \r
68     @Override\r
69     public String getConfigPropertyByKey(String key) throws SvcLogicException {\r
70         Preconditions.checkArgument(StringUtils.isNotBlank(key), "missing property key");\r
71         return configPropertyMap.get(key);\r
72     }\r
73 \r
74 }\r