Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-requests-db / src / main / java / org / openecomp / mso / requestsdb / OperationalEnvServiceModelStatusDb.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.mso.requestsdb;
22
23 import java.sql.Timestamp;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.hibernate.Query;
28 import org.hibernate.Session;
29 import org.openecomp.mso.db.AbstractSessionFactoryManager;
30 import org.openecomp.mso.logger.MessageEnum;
31 import org.openecomp.mso.logger.MsoLogger;
32
33 public class OperationalEnvServiceModelStatusDb {
34
35     protected final AbstractSessionFactoryManager sessionFactoryRequestDB;
36     
37     protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
38
39     
40     protected static final String                       REQUEST_ID                              = "requestId";
41     protected static final String                       OPERATIONAL_ENV_ID                      = "operationalEnvId";
42     protected static final String                       SERVICE_MODEL_VERSION_ID        = "serviceModelVersionId";
43     protected static final String                       SERVICE_MOD_VER_DISTR_STATUS    = "serviceModelVersionDistrStatus";
44     protected static final String                       RECOVERY_ACTION                         = "recoveryAction";
45     protected static final int                          RETRY_COUNT_LEFT                        = 0;
46     protected static final String                       CREATE_TIME                     = "startTime";
47     protected static final String                       MODIFY_TIME                     = "modifyTime";
48     
49
50     public static OperationalEnvServiceModelStatusDb getInstance() {
51         return new OperationalEnvServiceModelStatusDb(new RequestsDbSessionFactoryManager ());
52     }
53
54     protected OperationalEnvServiceModelStatusDb (AbstractSessionFactoryManager sessionFactoryRequest) {
55         sessionFactoryRequestDB = sessionFactoryRequest;
56     }
57     
58
59     /**
60      * Retrieve OperationalEnvServiceModelStatus from given OperationalEnvironmentId and serviceModelVersionId
61      * @param operationalEnvId
62      * @param serviceModelVersionId
63      * @return
64      */
65         public OperationalEnvServiceModelStatus getOperationalEnvServiceModelStatus(String operationalEnvId, String serviceModelVersionId) {
66                 long startTime = System.currentTimeMillis ();
67                 msoLogger.debug ("Retrieve OperationalEnvironmentServiceModel with operationalEnvironmentId: " + operationalEnvId + ", serviceModelVersionId: " + serviceModelVersionId);
68
69                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
70                 OperationalEnvServiceModelStatus request = null;
71                 try {
72                         session.beginTransaction ();
73                         Query query = session.createQuery ("FROM OperationalEnvServiceModelStatus WHERE operationalEnvId = :operationalEnvId AND serviceModelVersionId = :serviceModelVersionId");
74                         query.setParameter ("operationalEnvId", operationalEnvId);
75                         query.setParameter ("serviceModelVersionId", serviceModelVersionId);
76                         request = (OperationalEnvServiceModelStatus) query.uniqueResult ();
77                 } finally {
78                         if (session != null && session.isOpen ()) {
79                                 session.close ();
80                         }
81                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, 
82                                                                                 "Successfully", "OperationalEnvServiceModelStatus", "getOperationalEnvServiceModelStatus", null);
83                 }
84                 return request;
85         }
86         
87         
88     /**
89      * Retrieve OperationalEnvServiceModelStatus from given OperationalEnvironmentId and serviceModelVersionId
90      * @param operationalEnvId
91      * @param serviceModelVersionId
92      * @return
93      */
94         @SuppressWarnings("unchecked")
95         public List<OperationalEnvServiceModelStatus> getOperationalEnvIdStatus(String operationalEnvId, String requestId) {
96                 long startTime = System.currentTimeMillis ();
97                 msoLogger.debug ("Retrieve OperationalEnvironmentServiceModel with operationalEnvironmentId: " + operationalEnvId + ", requestId: " + requestId);
98
99                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
100                 List<OperationalEnvServiceModelStatus> requests = new ArrayList<OperationalEnvServiceModelStatus>();
101                 
102                 try {
103                         session.beginTransaction ();
104                         Query query = session.createQuery ("FROM OperationalEnvServiceModelStatus WHERE operationalEnvId = :operationalEnvId AND requestId = :requestId");
105                         query.setParameter ("operationalEnvId", operationalEnvId);
106                         query.setParameter ("requestId", requestId);
107                         requests = query.list();
108                 } finally {
109                         if (session != null && session.isOpen ()) {
110                                 session.close ();
111                         }
112                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, 
113                                                                                 "Successfully", "OperationalEnvServiceModelStatus", "getOperationalEnvIdStatus", null);
114                 }
115                 return requests;
116         }
117         
118         
119     /**
120      * Update OperationalEnvServiceModelStatus serviceModelVersionDistrStatus with asdcStatus and retryCount for given operationalEnvId, serviceModelVersionId
121      * @param operationalEnvId
122      * @param serviceModelVersionId
123      * @param asdcStatus
124      * @param retryCount
125      */
126         public int updateOperationalEnvRetryCountStatus(String operationalEnvId, String serviceModelVersionId, String asdcStatus, int retryCount) {
127                 long startTime = System.currentTimeMillis ();
128                 msoLogger.debug ("Update OperationalEnvServiceModelStatus retryCount: " + retryCount + " and serviceModelVersionDistrStatus :" + asdcStatus);
129
130                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
131                 int result = 0;
132                 try {
133                         session.beginTransaction ();
134                         Query query = session.createQuery ("update OperationalEnvServiceModelStatus set serviceModelVersionDistrStatus = :serviceModelVersionDistrStatus, retryCount = :retryCount, modifyTime = :modifyTime where "
135                                         + "operationalEnvId = :operationalEnvId and serviceModelVersionId = :serviceModelVersionId ");
136                         query.setParameter ("retryCount", retryCount);
137                         query.setParameter (SERVICE_MOD_VER_DISTR_STATUS, asdcStatus);
138                         query.setParameter ("operationalEnvId", operationalEnvId);
139                         query.setParameter ("serviceModelVersionId", serviceModelVersionId);
140                         Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());
141                         query.setParameter ("modifyTime", modifyTimeStamp);
142                         result = query.executeUpdate ();
143                         session.getTransaction ().commit ();
144                 } finally {
145                         if (session != null && session.isOpen ()) {
146                                 session.close ();
147                         }
148                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvServiceModelDB", "updateOperationalEnvRetryCountStatus", null);
149                 }
150                 return result;
151         }
152         
153     /**
154      * Update OperationalEnvServiceModelStatus serviceModelVersionDistrStatus with asdcStatus and retryCount for given operationalEnvId, serviceModelVersionId, requestId
155      * @param operationalEnvId
156      * @param serviceModelVersionId
157      * @param asdcStatus
158      * @param retryCount
159      * @param requestId
160      */
161         public int updateOperationalEnvRetryCountStatusPerReqId(String operationalEnvId, String serviceModelVersionId, String asdcStatus, int retryCount, String requestId) {
162                 long startTime = System.currentTimeMillis ();
163                 msoLogger.debug ("Update OperationalEnvServiceModelStatus retryCount: " + retryCount + " and serviceModelVersionDistrStatus :" + asdcStatus);
164
165                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
166                 int result = 0;
167                 try {
168                         session.beginTransaction ();
169                         Query query = session.createQuery ("update OperationalEnvServiceModelStatus set serviceModelVersionDistrStatus = :asdcStatus, retryCount = :retryCount, modifyTime = :modifyTime where "
170                                         + "operationalEnvId = :operationalEnvId and serviceModelVersionId = :serviceModelVersionId and requestId = :requestId ");
171                         query.setParameter ("retryCount", retryCount);
172                         query.setParameter (SERVICE_MOD_VER_DISTR_STATUS, asdcStatus);
173                         query.setParameter ("operationalEnvId", operationalEnvId);
174                         query.setParameter ("serviceModelVersionId", serviceModelVersionId);
175                         query.setParameter ("requestId", requestId);
176                         Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());
177                         query.setParameter ("modifyTime", modifyTimeStamp);
178                         result = query.executeUpdate ();
179                         session.getTransaction ().commit ();
180                 } finally {
181                         if (session != null && session.isOpen ()) {
182                                 session.close ();
183                         }
184                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvServiceModelDB", "updateOperationalEnvRetryCountStatusPerReqId", null);
185                 }
186                 return result;
187         }
188         
189         
190     /**
191      * Insert into OperationalEnvServiceModelStatus with operationalEnvId, serviceModelVersionId, distributionIdStatus, recoveryAction, retryCount 
192      * @param operationalEnvId
193      * @param serviceModelVersionId
194      * @param distributionIdStatus
195      * @param distributionId
196      * @param recoveryAction
197      * @param retryCount
198      */
199         public void insertOperationalEnvServiceModelStatus(String requestId, String operationalEnvId, String serviceModelVersionId, 
200                         String distributionIdStatus, String recoveryAction, int retryCount, String workloadContext) {
201                 long startTime = System.currentTimeMillis ();
202                 Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
203                 msoLogger.debug ("Insert into OperationalEnvServiceModelStatus " );
204
205                 Session session = sessionFactoryRequestDB.getSessionFactory ().openSession ();
206                 OperationalEnvServiceModelStatus oesm = new OperationalEnvServiceModelStatus ();
207         
208                 try {
209                         session.beginTransaction ();
210                 
211                         oesm.setRequestId (requestId);
212                         oesm.setOperationalEnvId (operationalEnvId);
213                         oesm.setServiceModelVersionId (serviceModelVersionId);
214                         oesm.setServiceModelVersionDistrStatus (distributionIdStatus);
215                         oesm.setRecoveryAction (recoveryAction);
216                         oesm.setRetryCount (retryCount);
217                         oesm.setWorkloadContext(workloadContext);
218                         oesm.setCreateTime (startTimeStamp);
219                         Timestamp modifyTimeStamp = new Timestamp (System.currentTimeMillis());
220                         oesm.setModifyTime (modifyTimeStamp);
221                 
222                         msoLogger.debug ("About to insert a record into OperationalEnvServiceModelStatus");
223                 
224                         session.save (oesm);
225                         session.getTransaction ().commit ();
226                 } catch (Exception e) {
227                         msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception in insertOperationalEnvServiceModelStatus", e);
228                         msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, e.getMessage (), "OperationalEnvServiceModelStatusDB", "saveRequest", null);
229                         if (session != null) {
230                                 session.close ();
231                         }
232                         // throw an Exception in the event of a DB insert failure so that the calling routine can exit
233                         throw e;
234                 } finally {
235                         if (session != null && session.isOpen ()) {
236                                 session.close ();
237                 }
238                 msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "OperationalEnvServiceModelStatusDB", "insertOperationalEnvServiceModelStatus", null);
239         }
240                 
241   }
242
243 }