[UI] Common class for results
[validation.git] / ui / src / main / java / org / akraino / validation / ui / daoimpl / ValidationTestResultDAOImpl.java
1 /*
2  * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may
5  * not use this file except in compliance with the License. You may obtain
6  * a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13  * implied. See the License for the specific language governing
14  * permissions and limitations under the License.
15  */
16 package org.akraino.validation.ui.daoimpl;
17
18 import java.util.List;
19
20 import javax.annotation.Nonnull;
21
22 import org.akraino.validation.ui.dao.ValidationTestResultDAO;
23 import org.akraino.validation.ui.entity.BlueprintInstance;
24 import org.akraino.validation.ui.entity.LabInfo;
25 import org.akraino.validation.ui.entity.Submission;
26 import org.akraino.validation.ui.entity.ValidationDbTestResult;
27 import org.hibernate.Criteria;
28 import org.hibernate.Session;
29 import org.hibernate.SessionFactory;
30 import org.hibernate.criterion.Restrictions;
31 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
32 import org.springframework.beans.factory.annotation.Autowired;
33 import org.springframework.stereotype.Repository;
34
35 @Repository
36 public class ValidationTestResultDAOImpl implements ValidationTestResultDAO {
37
38     private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(ValidationTestResultDAOImpl.class);
39
40     @Autowired
41     private SessionFactory sessionFactory;
42
43     protected Session getSession() {
44         return sessionFactory.getCurrentSession();
45     }
46
47     @Override
48     public List<ValidationDbTestResult> getValidationTestResults() {
49         Criteria criteria = getSession().createCriteria(ValidationDbTestResult.class);
50         criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
51         return criteria.list();
52     }
53
54     @Override
55     public ValidationDbTestResult getValidationTestResult(@Nonnull Integer resultId) {
56         Criteria criteria = getSession().createCriteria(ValidationDbTestResult.class);
57         criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
58         criteria.add(Restrictions.eq("id", resultId));
59         return (criteria.list() == null || criteria.list().size() < 1) ? null
60                 : (ValidationDbTestResult) criteria.list().get(0);
61     }
62
63     @Override
64     public List<ValidationDbTestResult> getValidationTestResults(BlueprintInstance bluInst, LabInfo labInfo,
65             Boolean allLayers, Boolean optional, Boolean outcome) {
66         Criteria criteria = getSession().createCriteria(ValidationDbTestResult.class);
67         criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
68         if (bluInst != null) {
69             criteria.add(Restrictions.eq("blueprintInstance", bluInst));
70         }
71         if (labInfo != null) {
72             criteria.add(Restrictions.eq("lab", labInfo));
73         }
74         if (allLayers != null) {
75             criteria.add(Restrictions.eq("allLayers", allLayers));
76         }
77         if (optional != null) {
78             criteria.add(Restrictions.eq("optional", optional));
79         }
80         if (outcome != null) {
81             criteria.add(Restrictions.eq("result", outcome));
82         }
83         return criteria.list() == null || criteria.list().size() == 0 ? null
84                 : (List<ValidationDbTestResult>) criteria.list();
85     }
86
87     @Override
88     public ValidationDbTestResult getValidationTestResult(LabInfo labInfo, String timestamp) {
89         Criteria criteria = getSession().createCriteria(ValidationDbTestResult.class);
90         criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
91         if (labInfo != null) {
92             criteria.add(Restrictions.eq("lab", labInfo));
93         }
94         if (timestamp != null) {
95             criteria.add(Restrictions.eq("timestamp", timestamp));
96         }
97         return criteria.list() == null || criteria.list().size() == 0 ? null
98                 : (ValidationDbTestResult) criteria.list().get(0);
99     }
100
101     @Override
102     public ValidationDbTestResult getValidationTestResult(@Nonnull Submission submission) {
103         Criteria criteria = getSession().createCriteria(ValidationDbTestResult.class);
104         criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
105         criteria.add(Restrictions.eq("submission", submission));
106         return criteria.list() == null || criteria.list().size() == 0 ? null
107                 : (ValidationDbTestResult) criteria.list().get(0);
108     }
109
110     @Override
111     public void saveOrUpdate(@Nonnull ValidationDbTestResult vResult) {
112         getSession().saveOrUpdate(vResult);
113         getSession().flush();
114     }
115
116     @Override
117     public void merge(@Nonnull ValidationDbTestResult vResult) {
118         getSession().merge(vResult);
119         getSession().flush();
120     }
121
122     @Override
123     public void deleteValidationTestResult(@Nonnull ValidationDbTestResult vResult) {
124         getSession().delete(vResult);
125         getSession().flush();
126     }
127
128     @Override
129     public void deleteValidationTestResult(@Nonnull LabInfo labInfo, @Nonnull String timestamp) {
130         Criteria criteria = getSession().createCriteria(ValidationDbTestResult.class);
131         criteria.add(Restrictions.eq("lab", labInfo));
132         criteria.add(Restrictions.eq("timestamp", timestamp));
133         if (criteria.list() == null || criteria.list().size() == 0) {
134             return;
135         }
136         getSession().delete(criteria.list().get(0));
137         getSession().flush();
138     }
139
140     @Override
141     public void deleteAll() {
142         if (getSession().createQuery("delete from ValidationTestResult").executeUpdate() > 0) {
143             LOGGER.info(EELFLoggerDelegate.applicationLogger, "All validation test results are cleaned up");
144             getSession().flush();
145         }
146     }
147
148 }