AT&T 1712 and 1802 release code
[so.git] / mso-api-handlers / mso-requests-db / src / main / java / org / openecomp / mso / requestsdb / WatchdogDistributionStatusDb.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 package org.openecomp.mso.requestsdb;\r
22 \r
23 \r
24 import java.sql.Timestamp;\r
25 \r
26 import org.hibernate.Query;\r
27 import org.hibernate.Session;\r
28 import org.openecomp.mso.db.AbstractSessionFactoryManager;\r
29 import org.openecomp.mso.logger.MessageEnum;\r
30 import org.openecomp.mso.logger.MsoLogger;\r
31 \r
32 public class WatchdogDistributionStatusDb {\r
33 \r
34     protected final AbstractSessionFactoryManager sessionFactoryRequestDB;\r
35     \r
36     protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);\r
37 \r
38     \r
39     protected static final String         DISTRIBUTION_ID               = "distributionId";\r
40     protected static final String         DISTRIBUTION_ID_STATUS                = "distributionIdStatus";\r
41     protected static final String         CREATE_TIME                   = "startTime";\r
42     protected static final String         MODIFY_TIME                   = "modifyTime";\r
43     \r
44 \r
45     public static WatchdogDistributionStatusDb getInstance() {\r
46         return new WatchdogDistributionStatusDb(new RequestsDbSessionFactoryManager ());\r
47     }\r
48 \r
49     protected WatchdogDistributionStatusDb (AbstractSessionFactoryManager sessionFactoryRequest) {\r
50         sessionFactoryRequestDB = sessionFactoryRequest;\r
51     }\r
52 \r
53 \r
54     /**\r
55      * Insert into WATCHDOG_DISTRIBUTIONID_STATUS.\r
56      *\r
57      * @param distributionId\r
58      * @return void\r
59      */\r
60         public void insertWatchdogDistributionId(String distributionId ) {\r
61                 long startTime = System.currentTimeMillis ();\r
62                 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());\r
63                 msoLogger.debug ("Insert into WatchdogDistributionStatus - DistributionId: " + distributionId);\r
64                 \r
65                 if(getWatchdogDistributionId(distributionId) == null){\r
66 \r
67                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
68                 WatchdogDistributionStatus wds = new WatchdogDistributionStatus ();\r
69         \r
70                 try {\r
71                         session.beginTransaction ();\r
72                 \r
73                         wds.setDistributionId (distributionId);\r
74                         wds.setCreateTime (startTimeStamp);\r
75                         Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());\r
76                         wds.setModifyTime (modifyTimeStamp);\r
77                 \r
78                         msoLogger.debug ("About to insert a record into WatchdogDistributionStatus ");\r
79                 \r
80                         session.save (wds);\r
81                         session.getTransaction ().commit ();\r
82                 } catch (Exception e) {\r
83                         msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception in insertWatchdogDistributionId", e);\r
84                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, e.getMessage (), "WatchdogDistributionStatusDB", "saveRequest", null);\r
85                         if (session != null) {\r
86                                 session.close ();\r
87                         }\r
88                         // throw an Exception in the event of a DB insert failure so that the calling routine can exit\r
89                         throw e;\r
90                 } finally {\r
91                         if (session != null && session.isOpen ()) {\r
92                                 session.close ();\r
93                         }\r
94                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "WatchdogDistributionStatusDB", "insertWatchdogDistributionId", null);\r
95                 }\r
96                 \r
97                 }\r
98                 \r
99         }\r
100         \r
101         \r
102     /**\r
103      * Update WATCHDOG_DISTRIBUTIONID_STATUS with new status for a given distributionid.\r
104      *\r
105      * @param distributionId\r
106      * @param distributionStatus\r
107      * @return void\r
108      */\r
109         public void updateWatchdogDistributionIdStatus(String distributionId, String distributionIdStatus ) {\r
110                 long startTime = System.currentTimeMillis ();\r
111                 msoLogger.debug ("Update WatchdogDistributionStatus status with distributionId: " + distributionId + " and distributionStatus: " + distributionIdStatus );\r
112 \r
113                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
114         \r
115                 try {\r
116                         session.beginTransaction ();\r
117                         Query query = session.createQuery ("update WatchdogDistributionStatus set distributionIdStatus = :distributionIdStatus where "\r
118                                         + "distributionId = :distributionId ");\r
119 \r
120                         query.setParameter ("distributionId", distributionId);\r
121                         query.setParameter ("distributionIdStatus", distributionIdStatus);\r
122 \r
123                         //Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());\r
124                         //query.setParameter ("modifyTime", modifyTimeStamp);\r
125                         query.executeUpdate ();\r
126                         session.getTransaction ().commit ();                    \r
127                         \r
128                 } catch (Exception e) {\r
129                         msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception in updateWatchdogDistributionStatus", e);\r
130                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, e.getMessage (), "WatchdogDistributionStatusDB", "saveRequest", null);\r
131                         if (session != null) {\r
132                                 session.close ();\r
133                         }\r
134                         // throw an Exception in the event of a DB insert failure so that the calling routine can exit\r
135                         throw e;\r
136                 } finally {\r
137                         if (session != null && session.isOpen ()) {\r
138                                 session.close ();\r
139                         }\r
140                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "WatchdogDistributionStatusDB", "insertWatchdogDistributionStatus", null);\r
141                 }\r
142         }\r
143         \r
144     /**\r
145      * Retrieve records from WatchdogDistributionIdStatus.\r
146      *\r
147      * @param distributionId\r
148      * @return WatchdogDistributionIdStatus\r
149      */\r
150         public String getWatchdogDistributionIdStatus(String distributionId) {\r
151                 long startTime = System.currentTimeMillis ();\r
152                 msoLogger.debug ("Retrieve records from WatchdogDistributionStatus for distributionId : " + distributionId );\r
153 \r
154                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
155                 String distributionStatus = null;\r
156                 try {\r
157                         session.beginTransaction ();\r
158                         Query query = session.createQuery ("SELECT distributionIdStatus FROM WatchdogDistributionStatus WHERE distributionId = :distributionId ");\r
159                         query.setParameter ("distributionId", distributionId);\r
160                         distributionStatus = (String) query.uniqueResult();\r
161                 } finally {\r
162                         if (session != null && session.isOpen ()) {\r
163                                 session.close ();\r
164                         }\r
165                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, \r
166                                                                                 "Successfully", "WatchdogDistributionStatusDB", "getWatchdogDistributionIdStatus", null);\r
167                 }\r
168                 return distributionStatus;\r
169         }\r
170         \r
171     /**\r
172      * Retrieve records from WatchdogDistributionId.\r
173      *\r
174      * @param distributionId\r
175      * @return WatchdogDistributionIdStatus\r
176      */\r
177         public String getWatchdogDistributionId(String distributionId) {\r
178                 long startTime = System.currentTimeMillis ();\r
179                 msoLogger.debug ("Retrieve distributionId from WatchdogDistributionStatus for distributionId : " + distributionId );\r
180 \r
181                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
182                 String existingDistributionId = null;\r
183                 try {\r
184                         session.beginTransaction ();\r
185                         Query query = session.createQuery ("SELECT distributionId FROM WatchdogDistributionStatus WHERE distributionId = :distributionId ");\r
186                         query.setParameter ("distributionId", distributionId);\r
187                         existingDistributionId = (String) query.uniqueResult();\r
188                 } finally {\r
189                         if (session != null && session.isOpen ()) {\r
190                                 session.close ();\r
191                         }\r
192                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, \r
193                                                                                 "Successfully", "WatchdogDistributionStatusDB", "getWatchdogDistributionIdStatus", null);\r
194                 }\r
195                 return existingDistributionId;\r
196         }\r
197 }\r