Fix no transaction is in progress bug
[usecase-ui/server.git] / server / src / main / java / org / onap / usecaseui / server / service / impl / PerformanceHeaderServiceImpl.java
1 /**\r
2  * Copyright (C) 2017 CMCC, Inc. and others. All rights reserved.\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.usecaseui.server.service.impl;\r
17 \r
18 \r
19 import java.util.ArrayList;\r
20 import java.util.List;\r
21 \r
22 import javax.persistence.EntityManagerFactory;\r
23 import javax.transaction.Transactional;\r
24 \r
25 import org.hibernate.Query;\r
26 import org.hibernate.Session;\r
27 import org.hibernate.SessionFactory;\r
28 import org.hibernate.Transaction;\r
29 import org.onap.usecaseui.server.bean.PerformanceHeader;\r
30 import org.onap.usecaseui.server.service.PerformanceHeaderService;\r
31 import org.onap.usecaseui.server.util.Page;\r
32 import org.onap.usecaseui.server.util.UuiCommonUtil;\r
33 import org.slf4j.Logger;\r
34 import org.slf4j.LoggerFactory;\r
35 import org.springframework.beans.factory.annotation.Autowired;\r
36 import org.springframework.context.annotation.EnableAspectJAutoProxy;\r
37 import org.springframework.stereotype.Service;\r
38 \r
39 \r
40 @Service("PerformanceHeaderService")\r
41 @Transactional\r
42 @org.springframework.context.annotation.Configuration\r
43 @EnableAspectJAutoProxy\r
44 public class PerformanceHeaderServiceImpl implements PerformanceHeaderService {\r
45 \r
46         private static final Logger logger = LoggerFactory.getLogger(PerformanceHeaderServiceImpl.class);\r
47 \r
48         @Autowired\r
49         private EntityManagerFactory entityManagerFactory;\r
50 \r
51         public Session getSession() {\r
52                 return entityManagerFactory.unwrap(SessionFactory.class).getCurrentSession();}\r
53 \r
54         @Override\r
55         public String savePerformanceHeader(PerformanceHeader performanceHeder) {\r
56                 Session session = getSession();\r
57                 try{\r
58                         if (null == performanceHeder){\r
59                                 logger.error("PerformanceHeaderServiceImpl savePerformanceHeader performanceHeder is null!");\r
60                                 return "0";\r
61                         }\r
62                         session.save(performanceHeder);\r
63                         session.flush();\r
64                         return "1";\r
65                 } catch (Exception e) {\r
66                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl savePerformanceHeader. Details:" + e.getMessage());\r
67                         return "0";\r
68                 }\r
69         }\r
70 \r
71         @Override\r
72         public String updatePerformanceHeader(PerformanceHeader performanceHeder) {\r
73                 Session session = getSession();\r
74                 try{\r
75                         if (null == performanceHeder){\r
76                                 logger.error("PerformanceHeaderServiceImpl updatePerformanceHeader performanceHeder is null!");\r
77                                 return "0";\r
78                         }\r
79                         session.update(performanceHeder);\r
80                         session.flush();\r
81                         return "1";\r
82                 } catch (Exception e) {\r
83                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl updatePerformanceHeader. Details:" + e.getMessage());\r
84                         return "0";\r
85                 }\r
86         }\r
87 \r
88         public int getAllCount(PerformanceHeader performanceHeder, int currentPage, int pageSize) {\r
89                 Session session = getSession();\r
90                 try{\r
91                         StringBuffer hql = new StringBuffer("select count(*) from PerformanceHeader a where 1=1");\r
92                         if (null == performanceHeder) {\r
93                                 return 0;\r
94                         }else {\r
95                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getSourceName())) {\r
96                                         String ver =performanceHeder.getSourceName();\r
97                                         hql.append(" and a.sourceName like '%"+ver+"%'");\r
98                                 }\r
99                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getStartEpochMicrosec())&& UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getLastEpochMicroSec())) {\r
100                                         hql.append(" and (CASE WHEN a.startEpochMicrosec=0 THEN a.lastEpochMicroSec ELSE a.startEpochMicrosec END) between :startTime and :endTime ");\r
101                                 }\r
102                         }\r
103                         Query query = session.createQuery(hql.toString());\r
104                         if(null!=performanceHeder.getStartEpochMicrosec() && null!=performanceHeder.getLastEpochMicroSec()) {\r
105                                 query.setString("startTime",performanceHeder.getStartEpochMicrosec()).setString("endTime",performanceHeder.getLastEpochMicroSec());\r
106                         }\r
107                         long q=(long)query.uniqueResult();\r
108                         session.flush();\r
109                         return (int)q;\r
110                 } catch (Exception e) {\r
111                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl getAllCount. Details:" + e.getMessage());\r
112                         return 0;\r
113                 }\r
114         }\r
115 \r
116         @SuppressWarnings("unchecked")\r
117         @Override\r
118         public Page<PerformanceHeader> queryPerformanceHeader(PerformanceHeader performanceHeder, int currentPage, int pageSize) {\r
119                 Page<PerformanceHeader> page = new Page<PerformanceHeader>();\r
120                 int allRow =this.getAllCount(performanceHeder,currentPage,pageSize);\r
121                 int offset = page.countOffset(currentPage, pageSize);\r
122                 Session session = getSession();\r
123                 try{\r
124                         StringBuffer hql =new StringBuffer("from PerformanceHeader a where 1=1");\r
125                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getSourceName())) {\r
126                                         String ver =performanceHeder.getSourceName();\r
127                                         hql.append(" and a.sourceName like '%"+ver+"%'");\r
128                                 }\r
129                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getStartEpochMicrosec())&& UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getLastEpochMicroSec())) {\r
130                                         hql.append(" and (CASE WHEN a.startEpochMicrosec=0 THEN a.lastEpochMicroSec ELSE a.startEpochMicrosec END) between :startTime and :endTime ");\r
131                                 }\r
132                         Query query = session.createQuery(hql.toString());\r
133                         if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getStartEpochMicrosec())&& UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getLastEpochMicroSec())) {\r
134                                 query.setString("startTime",performanceHeder.getStartEpochMicrosec()).setString("endTime",performanceHeder.getLastEpochMicroSec());\r
135                         }\r
136                         query.setFirstResult(offset);\r
137                         query.setMaxResults(pageSize);\r
138                         List<PerformanceHeader> list= query.list();\r
139                         page.setPageNo(currentPage);\r
140                         page.setPageSize(pageSize);\r
141                         page.setTotalRecords(allRow);\r
142                         page.setList(list);\r
143                         session.flush();\r
144                         return page;\r
145                 } catch (Exception e) {\r
146                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl queryPerformanceHeader. Details:" + e.getMessage());\r
147                         return null;\r
148                 }\r
149         }\r
150 \r
151         @SuppressWarnings("unchecked")\r
152         @Override\r
153         public List<PerformanceHeader> queryId(String[] id) {\r
154                 Session session = getSession();\r
155                 try {\r
156                         List<PerformanceHeader> list = new ArrayList<PerformanceHeader>();\r
157                         if(id.length==0) {\r
158                                 return list;\r
159                         }\r
160                         Query query = session.createQuery("from PerformanceHeader a where a.eventName IN (:alist)");\r
161                         list = query.setParameterList("alist", id).list();\r
162                         return list;\r
163                 } catch (Exception e) {\r
164                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl queryId. Details:" + e.getMessage());\r
165                         return null;\r
166                 }\r
167         }\r
168 \r
169         @Override\r
170         public List<String> queryAllSourceNames() {\r
171                 Session session = getSession();\r
172                 try {\r
173                         Query query = session.createQuery("select distinct a.sourceName from PerformanceHeader a");\r
174                         return query.list();\r
175                 } catch (Exception e) {\r
176                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl queryAllSourceId. Details:" + e.getMessage());\r
177                         return null;\r
178                 }\r
179         }\r
180         \r
181         @Override\r
182         public PerformanceHeader getPerformanceHeaderById(String id) {\r
183                 Session session = getSession();\r
184                 try {\r
185 \r
186                         String string = "from PerformanceHeader a where 1=1 and a.id=:id";\r
187                         Query q = session.createQuery(string);\r
188                         q.setString("id",id);\r
189                         PerformanceHeader performanceHeader =(PerformanceHeader)q.uniqueResult();\r
190                         session.flush();\r
191                         return performanceHeader;\r
192 \r
193                 }catch (Exception e){\r
194                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl getPerformanceHeaderById."+e.getMessage());\r
195                         return null;\r
196                 }\r
197         }\r
198 }\r