Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-requests-db / src / main / java / org / openecomp / mso / requestsdb / OperationalEnvDistributionStatusDb.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 OperationalEnvDistributionStatusDb {\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                 OPERATIONAL_ENV_ID                    = "operationalEnvId";\r
41     protected static final String         REQUEST_ID                            = "requestId";\r
42     protected static final String         SERVICE_MODEL_VERSION_ID      = "serviceModelVersionId";\r
43     protected static final String         DISTRIBUTION_ID_STATUS                = "distributionIdStatus";\r
44     protected static final String         CREATE_TIME                   = "startTime";\r
45     protected static final String         MODIFY_TIME                   = "modifyTime";\r
46     \r
47 \r
48     public static OperationalEnvDistributionStatusDb getInstance() {\r
49         return new OperationalEnvDistributionStatusDb(new RequestsDbSessionFactoryManager ());\r
50     }\r
51 \r
52     protected OperationalEnvDistributionStatusDb (AbstractSessionFactoryManager sessionFactoryRequest) {\r
53         sessionFactoryRequestDB = sessionFactoryRequest;\r
54     }\r
55 \r
56 \r
57     /**\r
58      * Retrieve OperationalEnvDistributionStatus from getSecgiven distributionId
59      * @param distributionId\r
60      * @return\r
61      */\r
62         public OperationalEnvDistributionStatus getOperationalEnvDistributionStatus(String distributionId) {\r
63                 long startTime = System.currentTimeMillis ();\r
64                 msoLogger.debug ("Retrieve Operational Environment Distribution Status with distributionId: " + distributionId);\r
65 \r
66                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
67                 OperationalEnvDistributionStatus request = null;\r
68                 try {\r
69                         session.beginTransaction ();\r
70                         Query query = session.createQuery ("from OperationalEnvDistributionStatus where distributionId = :distributionId");\r
71                         query.setParameter (DISTRIBUTION_ID, distributionId);\r
72                         request = (OperationalEnvDistributionStatus) query.uniqueResult ();\r
73                 } finally {\r
74                         if (session != null && session.isOpen ()) {\r
75                                 session.close ();\r
76                         }\r
77                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, \r
78                                                                                 "Successfully", "OperationalEnvDistributionStatus", "getOperationalEnvDistributionStatus", null);\r
79                 }\r
80                 return request;\r
81         }\r
82         \r
83     /**\r
84      * Retrieve OperationalEnvDistributionStatus from given distributionId and requestId\r
85      * @param distributionId\r
86      * @param requestId\r
87      * @return OperationalEnvDistributionStatus
88      */\r
89         public OperationalEnvDistributionStatus getOperationalEnvDistributionStatusPerReqId(String distributionId, String requestId) {\r
90                 long startTime = System.currentTimeMillis ();\r
91                 msoLogger.debug ("Retrieve Operational Environment Distribution Status with distributionId: " + distributionId + ", requestId: " + requestId);\r
92 \r
93                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
94                 OperationalEnvDistributionStatus request = null;\r
95                 try {\r
96                         session.beginTransaction ();\r
97                         Query query = session.createQuery ("from OperationalEnvDistributionStatus where distributionId = :distributionId AND requestId = :requestId");\r
98                         query.setParameter (DISTRIBUTION_ID, distributionId);\r
99                         query.setParameter (REQUEST_ID, requestId);\r
100                         request = (OperationalEnvDistributionStatus) query.uniqueResult ();\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, \r
106                                                                                 "Successfully", "OperationalEnvDistributionStatus", "getOperationalEnvDistributionStatusPerReqId", null);\r
107                 }\r
108                 return request;\r
109         }\r
110         \r
111     /**\r
112      * Update OperationalEnvDistributionStatus with distributionIdStatus for given distributionId, serviceModelVersionId, serviceModelVersionId\r
113      * @param asdcStatus\r
114      * @param distributionId\r
115      * @param operationalEnvId\r
116      * @param serviceModelVersionId\r
117      */\r
118         public int updateOperationalEnvDistributionStatus(String asdcStatus, String distributionId, \r
119                                                                                         String operationalEnvId, String serviceModelVersionId) {\r
120                 long startTime = System.currentTimeMillis ();\r
121                 msoLogger.debug ("Update OperationalEnvDistributionStatus DISTRIBUTION_ID_STATUS with asdcStatus: " + asdcStatus);\r
122                  \r
123                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
124                 int result = 0;\r
125         try {\r
126             session.beginTransaction ();\r
127             Query query = session.createQuery ("update OperationalEnvDistributionStatus set distributionIdStatus = :distributionIdStatus, modifyTime = :modifyTime where distributionId = :distributionId and "\r
128                         + "operationalEnvId = :operationalEnvId and serviceModelVersionId = :serviceModelVersionId ");\r
129             query.setParameter (DISTRIBUTION_ID_STATUS, asdcStatus);\r
130             query.setParameter ("distributionId", distributionId);\r
131             query.setParameter ("operationalEnvId", operationalEnvId);\r
132             query.setParameter ("serviceModelVersionId", serviceModelVersionId);\r
133             Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());\r
134             query.setParameter ("modifyTime", modifyTimeStamp);\r
135             result = query.executeUpdate ();\r
136             session.getTransaction ().commit ();\r
137         } finally {\r
138             if (session != null && session.isOpen ()) {\r
139                 session.close ();\r
140             }\r
141             msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "updateOperationalEnvDistributionStatus", null);\r
142         }\r
143                 return result;\r
144         }\r
145         \r
146     /**\r
147      * Insert into OperationalEnvDistributionStatus with distributionId, operationalEnvId, serviceModelVersionId, distributionIdStatus\r
148      * @param distributionId\r
149      * @param operationalEnvId\r
150      * @param serviceModelVersionId\r
151      * @param distributionIdStatus\r
152      */\r
153         public void insertOperationalEnvDistributionStatus(String distributionId, String operationalEnvId, String serviceModelVersionId, \r
154                                 String distributionIdStatus, String requestId) {\r
155                 long startTime = System.currentTimeMillis ();\r
156                 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());\r
157                 msoLogger.debug ("Insert into OperationalEnvDistributionStatus " );\r
158 \r
159                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();\r
160                 OperationalEnvDistributionStatus oed = new OperationalEnvDistributionStatus ();\r
161                 \r
162                 try {\r
163                         session.beginTransaction ();\r
164                         \r
165                         oed.setDistributionId (distributionId);\r
166                         oed.setOperationalEnvId (operationalEnvId);\r
167                         oed.setServiceModelVersionId (serviceModelVersionId);\r
168                         oed.setDistributionIdStatus (distributionIdStatus);\r
169                         oed.setRequestId(requestId);\r
170                         oed.setCreateTime (startTimeStamp);\r
171                         Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());\r
172                         oed.setModifyTime (modifyTimeStamp);\r
173                         \r
174                         msoLogger.debug ("About to insert a record into OperationalEnvDistributionStatus");\r
175                         \r
176             session.save (oed);\r
177                         session.getTransaction ().commit ();\r
178                 }               catch (Exception e) {\r
179                 msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception in insertOperationalEnvDistributionStatus", e);\r
180             msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, e.getMessage (), "OperationalEnvDistributionStatusDB", "saveRequest", null);\r
181             if (session != null) {\r
182                 session.close ();\r
183             }\r
184             // throw an Exception in the event of a DB insert failure so that the calling routine can exit\r
185             throw e;\r
186         }\r
187                 finally {\r
188                         if (session != null && session.isOpen ()) {\r
189                                 session.close ();\r
190                         }\r
191                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvDistributionStatusDB", "insertOperationalEnvDistributionStatus", null);\r
192                 }\r
193         }\r
194         \r
195         \r
196 }