Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-requests-db / src / main / java / org / openecomp / mso / requestsdb / WatchdogComponentDistributionStatusDb.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 import java.util.ArrayList;\r
26 import java.util.List;\r
27 \r
28 import org.hibernate.Query;\r
29 import org.hibernate.Session;\r
30 import org.openecomp.mso.db.AbstractSessionFactoryManager;\r
31 import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;\r
32 import org.openecomp.mso.logger.MessageEnum;\r
33 import org.openecomp.mso.logger.MsoLogger;\r
34 \r
35 public class WatchdogComponentDistributionStatusDb {\r
36 \r
37     protected final AbstractSessionFactoryManager sessionFactoryRequestDB;\r
38     \r
39     protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);\r
40 \r
41     \r
42     protected static final String         DISTRIBUTION_ID                               = "distributionId";\r
43     protected static final String         COMPONENT_NAME                        = "componentName";\r
44     protected static final String         COMPONENT_DISTRIBUTION_STATUS = "componentDistributionIdStatus";\r
45     protected static final String         CREATE_TIME                           = "startTime";\r
46     protected static final String         MODIFY_TIME                           = "modifyTime";\r
47     \r
48 \r
49     public static WatchdogComponentDistributionStatusDb getInstance() {\r
50         return new WatchdogComponentDistributionStatusDb(new RequestsDbSessionFactoryManager ());\r
51     }\r
52 \r
53     protected WatchdogComponentDistributionStatusDb (AbstractSessionFactoryManager sessionFactoryRequest) {\r
54         sessionFactoryRequestDB = sessionFactoryRequest;\r
55     }\r
56 \r
57 \r
58     /**\r
59      * Insert into watchdog_per_component_distribution_status.\r
60      *\r
61      * @param distributionId\r
62      * @param componentName\r
63      * @param componentDistributionStatus\r
64      * @return void\r
65      */\r
66         public void insertWatchdogComponentDistributionStatus(String distributionId, String componentName, String componentDistributionStatus ) {\r
67                 long startTime = System.currentTimeMillis ();\r
68                 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());\r
69                 msoLogger.debug ("Insert into WatchdogPerComponentDistributionStatus for DistributionId: " + distributionId + " ComponentName: " + componentName + " and ComponentDistributionStatus: " + componentDistributionStatus);\r
70                 \r
71                 List<WatchdogComponentDistributionStatus> componentList = getWatchdogComponentDistributionStatus(distributionId, componentName);\r
72                 \r
73                 if((componentList == null) || componentList.isEmpty())\r
74                 {\r
75 \r
76                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
77                 WatchdogComponentDistributionStatus wdcds = new WatchdogComponentDistributionStatus ();\r
78         \r
79                 try {\r
80                         session.beginTransaction ();\r
81                 \r
82                         wdcds.setDistributionId (distributionId);\r
83                         wdcds.setComponentName (componentName);\r
84                         wdcds.setComponentDistributionStatus (componentDistributionStatus);\r
85                         wdcds.setCreateTime (startTimeStamp);\r
86                         Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());\r
87                         wdcds.setModifyTime (modifyTimeStamp);\r
88                 \r
89                         msoLogger.debug ("About to insert a record into WatchdogPerComponentDistributionStatus");\r
90                 \r
91                         session.save (wdcds);\r
92                         session.getTransaction ().commit ();\r
93                 } catch (Exception e) {\r
94                         msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception in insertWatchdogComponentDistributionStatus", e);\r
95                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, e.getMessage (), "WatchdogComponentDistributionStatusDB", "saveRequest", null);\r
96                         if (session != null) {\r
97                                 session.close ();\r
98                         }\r
99                         // throw an Exception in the event of a DB insert failure so that the calling routine can exit\r
100                         throw e;\r
101                 } finally {\r
102                         if (session != null && session.isOpen ()) {\r
103                                 session.close ();\r
104                 }\r
105                 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "WatchdogComponentDistributionStatusDB", "insertWatchdogComponentDistributionStatus", null);\r
106         }\r
107         }\r
108                 \r
109   }\r
110         \r
111     /**\r
112      * Retrieve records from WatchdogComponentDistributionStatus.\r
113      *\r
114      * @param distributionId\r
115      * @return WatchdogComponentDistributionStatus\r
116      */\r
117          @SuppressWarnings("unchecked")\r
118          public List<WatchdogComponentDistributionStatus> getWatchdogComponentDistributionStatus(String distributionId) {\r
119                  Session session = sessionFactoryRequestDB.getSessionFactory().openSession();\r
120                  session.beginTransaction();\r
121 \r
122                  List<WatchdogComponentDistributionStatus> results = new ArrayList<WatchdogComponentDistributionStatus>();\r
123                  msoLogger.debug("Request database - getWatchdogComponentDistributionStatus:" + distributionId);\r
124                  try {\r
125                          String hql = "FROM WatchdogComponentDistributionStatus WHERE distributionId = :distributionId";\r
126                          Query query = session.createQuery(hql);\r
127                          query.setParameter("distributionId", distributionId);\r
128                          results = query.list();\r
129                  } finally {\r
130                          if (session != null && session.isOpen ()) {\r
131                                  session.close ();\r
132                          }\r
133                          msoLogger.debug ("getWatchdogComponentDistributionStatus - Successfully");\r
134                  }\r
135                  return results;\r
136          }\r
137          \r
138             /**\r
139              * Retrieve records from WatchdogComponentDistributionStatus.\r
140              *\r
141              * @param distributionId\r
142              * @param componentName\r
143              * @return WatchdogComponentDistributionStatus\r
144              */\r
145                  @SuppressWarnings("unchecked")\r
146                  public List<WatchdogComponentDistributionStatus> getWatchdogComponentDistributionStatus(String distributionId, String componentName) {\r
147                          Session session = sessionFactoryRequestDB.getSessionFactory().openSession();\r
148                          session.beginTransaction();\r
149 \r
150                          List<WatchdogComponentDistributionStatus> results = new ArrayList<WatchdogComponentDistributionStatus>();\r
151                          msoLogger.debug("Request database - getWatchdogComponentDistributionStatus:" + distributionId + " and componentName:" + componentName);\r
152                          try {\r
153                                  String hql = "FROM WatchdogComponentDistributionStatus WHERE distributionId = :distributionId AND componentName = :componentName";\r
154                                  Query query = session.createQuery(hql);\r
155                                  query.setParameter("distributionId", distributionId);\r
156                                  query.setParameter("componentName", componentName);\r
157                                  results = query.list();\r
158                          } finally {\r
159                                  if (session != null && session.isOpen ()) {\r
160                                          session.close ();\r
161                                  }\r
162                                  msoLogger.debug ("getWatchdogComponentDistributionStatus by ComponentName - Successfully");\r
163                          }\r
164                          return results;\r
165                  }\r
166                  \r
167                    /**\r
168                      * Retrieve records from getWatchdogComponentNames.\r
169                      *\r
170                      * @param distributionId\r
171                      * @return String\r
172                      */\r
173                         @SuppressWarnings("unchecked")\r
174                         public List<String> getWatchdogComponentNames(String distributionId) {\r
175                                  Session session = sessionFactoryRequestDB.getSessionFactory().openSession();\r
176                                  session.beginTransaction();\r
177 \r
178                                  List<String> results = new ArrayList<String>();\r
179                                  msoLogger.debug("Request database - getWatchdogComponentNames:" + distributionId);\r
180                                  try {\r
181                                          String hql = "Select componentName FROM WatchdogComponentDistributionStatus WHERE distributionId = :distributionId";\r
182                                          Query query = session.createQuery(hql);\r
183                                          query.setParameter("distributionId", distributionId);\r
184                                          results = query.list();\r
185                                  } finally {\r
186                                          if (session != null && session.isOpen ()) {\r
187                                                  session.close ();\r
188                                          }\r
189                                          msoLogger.debug ("getWatchdogComponentNames - Successfully");\r
190                                  }\r
191                                  return results;\r
192                          }\r
193         \r
194 }\r