Error of "no transaction is in progress" at Service Creation from UUI
[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                         Transaction tx = session.beginTransaction();\r
63                         session.save(performanceHeder);\r
64                         tx.commit();\r
65                         session.flush();\r
66                         return "1";\r
67                 } catch (Exception e) {\r
68                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl savePerformanceHeader. Details:" + e.getMessage());\r
69                         return "0";\r
70                 }\r
71         }\r
72 \r
73         @Override\r
74         public String updatePerformanceHeader(PerformanceHeader performanceHeder) {\r
75                 Session session = getSession();\r
76                 try{\r
77                         if (null == performanceHeder){\r
78                                 logger.error("PerformanceHeaderServiceImpl updatePerformanceHeader performanceHeder is null!");\r
79                                 return "0";\r
80                         }\r
81                         Transaction tx = session.beginTransaction();\r
82                         session.update(performanceHeder);\r
83                         tx.commit();\r
84                         session.flush();\r
85                         return "1";\r
86                 } catch (Exception e) {\r
87                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl updatePerformanceHeader. Details:" + e.getMessage());\r
88                         return "0";\r
89                 }\r
90         }\r
91 \r
92         public int getAllCount(PerformanceHeader performanceHeder, int currentPage, int pageSize) {\r
93                 Session session = getSession();\r
94                 try{\r
95                         StringBuffer hql = new StringBuffer("select count(*) from PerformanceHeader a where 1=1");\r
96                         if (null == performanceHeder) {\r
97                                 return 0;\r
98                         }else {\r
99                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getSourceName())) {\r
100                                         String ver =performanceHeder.getSourceName();\r
101                                         hql.append(" and a.sourceName like '%"+ver+"%'");\r
102                                 }\r
103                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getStartEpochMicrosec())&& UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getLastEpochMicroSec())) {\r
104                                         hql.append(" and (CASE WHEN a.startEpochMicrosec=0 THEN a.lastEpochMicroSec ELSE a.startEpochMicrosec END) between :startTime and :endTime ");\r
105                                 }\r
106                         }\r
107                         Query query = session.createQuery(hql.toString());\r
108                         if(null!=performanceHeder.getStartEpochMicrosec() && null!=performanceHeder.getLastEpochMicroSec()) {\r
109                                 query.setString("startTime",performanceHeder.getStartEpochMicrosec()).setString("endTime",performanceHeder.getLastEpochMicroSec());\r
110                         }\r
111                         long q=(long)query.uniqueResult();\r
112                         session.flush();\r
113                         return (int)q;\r
114                 } catch (Exception e) {\r
115                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl getAllCount. Details:" + e.getMessage());\r
116                         return 0;\r
117                 }\r
118         }\r
119 \r
120         @SuppressWarnings("unchecked")\r
121         @Override\r
122         public Page<PerformanceHeader> queryPerformanceHeader(PerformanceHeader performanceHeder, int currentPage, int pageSize) {\r
123                 Page<PerformanceHeader> page = new Page<PerformanceHeader>();\r
124                 int allRow =this.getAllCount(performanceHeder,currentPage,pageSize);\r
125                 int offset = page.countOffset(currentPage, pageSize);\r
126                 Session session = getSession();\r
127                 try{\r
128                         StringBuffer hql =new StringBuffer("from PerformanceHeader a where 1=1");\r
129                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getSourceName())) {\r
130                                         String ver =performanceHeder.getSourceName();\r
131                                         hql.append(" and a.sourceName like '%"+ver+"%'");\r
132                                 }\r
133                                 if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getStartEpochMicrosec())&& UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getLastEpochMicroSec())) {\r
134                                         hql.append(" and (CASE WHEN a.startEpochMicrosec=0 THEN a.lastEpochMicroSec ELSE a.startEpochMicrosec END) between :startTime and :endTime ");\r
135                                 }\r
136                         Query query = session.createQuery(hql.toString());\r
137                         if(UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getStartEpochMicrosec())&& UuiCommonUtil.isNotNullOrEmpty(performanceHeder.getLastEpochMicroSec())) {\r
138                                 query.setString("startTime",performanceHeder.getStartEpochMicrosec()).setString("endTime",performanceHeder.getLastEpochMicroSec());\r
139                         }\r
140                         query.setFirstResult(offset);\r
141                         query.setMaxResults(pageSize);\r
142                         List<PerformanceHeader> list= query.list();\r
143                         page.setPageNo(currentPage);\r
144                         page.setPageSize(pageSize);\r
145                         page.setTotalRecords(allRow);\r
146                         page.setList(list);\r
147                         session.flush();\r
148                         return page;\r
149                 } catch (Exception e) {\r
150                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl queryPerformanceHeader. Details:" + e.getMessage());\r
151                         return null;\r
152                 }\r
153         }\r
154 \r
155         @SuppressWarnings("unchecked")\r
156         @Override\r
157         public List<PerformanceHeader> queryId(String[] id) {\r
158                 Session session = getSession();\r
159                 try {\r
160                         List<PerformanceHeader> list = new ArrayList<PerformanceHeader>();\r
161                         if(id.length==0) {\r
162                                 return list;\r
163                         }\r
164                         Query query = session.createQuery("from PerformanceHeader a where a.eventName IN (:alist)");\r
165                         list = query.setParameterList("alist", id).list();\r
166                         return list;\r
167                 } catch (Exception e) {\r
168                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl queryId. Details:" + e.getMessage());\r
169                         return null;\r
170                 }\r
171         }\r
172 \r
173         @Override\r
174         public List<String> queryAllSourceNames() {\r
175                 Session session = getSession();\r
176                 try {\r
177                         Query query = session.createQuery("select distinct a.sourceName from PerformanceHeader a");\r
178                         return query.list();\r
179                 } catch (Exception e) {\r
180                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl queryAllSourceId. Details:" + e.getMessage());\r
181                         return null;\r
182                 }\r
183         }\r
184         \r
185         @Override\r
186         public PerformanceHeader getPerformanceHeaderById(String id) {\r
187                 Session session = getSession();\r
188                 try {\r
189 \r
190                         String string = "from PerformanceHeader a where 1=1 and a.id=:id";\r
191                         Query q = session.createQuery(string);\r
192                         q.setString("id",id);\r
193                         PerformanceHeader performanceHeader =(PerformanceHeader)q.uniqueResult();\r
194                         session.flush();\r
195                         return performanceHeader;\r
196 \r
197                 }catch (Exception e){\r
198                         logger.error("exception occurred while performing PerformanceHeaderServiceImpl getPerformanceHeaderById."+e.getMessage());\r
199                         return null;\r
200                 }\r
201         }\r
202 }\r