Updated jackson as suggested.
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / utils / DbDaoUtil.java
1 /**\r
2  * Copyright 2017-2020 ZTE Corporation.\r
3  * <p>\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  * <p>\r
8  * http://www.apache.org/licenses/LICENSE-2.0\r
9  * <p>\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 package org.onap.holmes.common.utils;\r
17 \r
18 import io.dropwizard.db.DataSourceFactory;\r
19 import io.dropwizard.jdbi.DBIFactory;\r
20 import io.dropwizard.setup.Environment;\r
21 import org.jvnet.hk2.annotations.Service;\r
22 import org.skife.jdbi.v2.DBI;\r
23 import org.skife.jdbi.v2.Handle;\r
24 import org.slf4j.Logger;\r
25 import org.slf4j.LoggerFactory;\r
26 \r
27 import javax.annotation.PostConstruct;\r
28 import javax.inject.Inject;\r
29 import javax.inject.Singleton;\r
30 \r
31 @Singleton\r
32 @Service\r
33 public class DbDaoUtil {\r
34 \r
35     private Logger log = LoggerFactory.getLogger(DbDaoUtil.class);\r
36 \r
37     private DBI jdbi;\r
38     @Inject\r
39     private Environment environmentProvider;\r
40     @Inject\r
41     private DataSourceFactory dataSourceFactoryProvider;\r
42 \r
43     private DBIFactory factory = new DBIFactory();\r
44 \r
45     @PostConstruct\r
46     public synchronized void init() {\r
47         if (jdbi == null) {\r
48             jdbi = factory.build(environmentProvider, dataSourceFactoryProvider, "postgres");\r
49         }\r
50     }\r
51 \r
52     public <K> K getDao(Class<K> clazz) {\r
53         try {\r
54             return jdbi.open(clazz);\r
55         } catch (Exception e) {\r
56             log.warn("get object instance of Dao error.", e);\r
57         }\r
58         return null;\r
59     }\r
60 \r
61     public Handle getHandle() {\r
62         try {\r
63             return jdbi.open();\r
64         } catch (Exception e) {\r
65             log.warn("get object instance of Dao error.", e);\r
66         }\r
67         return null;\r
68     }\r
69 \r
70     public void close(Object obj) {\r
71         if (obj != null) {\r
72             try {\r
73                 jdbi.close(obj);\r
74             } catch (Exception e) {\r
75                 log.warn("close jdbi connection error.", e);\r
76             }\r
77         }\r
78     }\r
79 \r
80     public <T> T getJdbiDaoByOnDemand(Class<T> daoClazz) {\r
81 \r
82         return jdbi.onDemand(daoClazz);\r
83 \r
84     }\r
85 \r
86     public <T> T getJdbiDaoByOpen(Class<T> daoClazz) {\r
87 \r
88         return jdbi.open(daoClazz);\r
89 \r
90     }\r
91 }\r