76e11ba2c5cf31ac2509e75a94479f3cb0f74c37
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / utils / DbDaoUtil.java
1 /**\r
2  * Copyright 2017 ZTE Corporation.\r
3  *\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  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\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 javax.annotation.PostConstruct;\r
22 import javax.inject.Inject;\r
23 import javax.inject.Singleton;\r
24 import lombok.extern.slf4j.Slf4j;\r
25 import org.jvnet.hk2.annotations.Service;\r
26 import org.skife.jdbi.v2.DBI;\r
27 import org.skife.jdbi.v2.Handle;\r
28 \r
29 @Singleton\r
30 @Service\r
31 @Slf4j\r
32 public class DbDaoUtil {\r
33 \r
34     private DBI jdbi;\r
35     @Inject\r
36     private Environment environmentProvider;\r
37     @Inject\r
38     private DataSourceFactory dataSourceFactoryProvider;\r
39 \r
40     private DBIFactory factory = new DBIFactory();\r
41 \r
42     @PostConstruct\r
43     public void init() {\r
44         if (jdbi == null) {\r
45             synchronized (DbDaoUtil.class) {\r
46                 if (jdbi == null) {\r
47                     jdbi = factory.build(environmentProvider, dataSourceFactoryProvider, "mysql");\r
48                 }\r
49             }\r
50         }\r
51     }\r
52 \r
53     public <K> K getDao(Class<K> clazz) {\r
54         try {\r
55             return jdbi.open(clazz);\r
56         } catch (Exception e) {\r
57             log.warn("get object instance of Dao error.", e);\r
58         }\r
59         return null;\r
60     }\r
61 \r
62     public Handle getHandle() {\r
63         try {\r
64             return jdbi.open();\r
65         } catch (Exception e) {\r
66             log.warn("get object instance of Dao error.", e);\r
67         }\r
68         return null;\r
69     }\r
70 \r
71     public void close(Object obj) {\r
72         if (obj != null) {\r
73             try {\r
74                 jdbi.close(obj);\r
75             } catch (Exception e) {\r
76                 log.warn("close jdbi connection error.", e);\r
77             }\r
78         }\r
79     }\r
80 \r
81     public <T> T getJdbiDaoByOnDemand(Class<T> daoClazz) {\r
82 \r
83         return jdbi.onDemand(daoClazz);\r
84 \r
85     }\r
86 \r
87     public <T> T getJdbiDaoByOpen(Class<T> daoClazz) {\r
88 \r
89         return jdbi.open(daoClazz);\r
90 \r
91     }\r
92 }\r