[UI] Common class for results
[validation.git] / ui / src / main / java / org / akraino / validation / ui / entity / Submission.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.entity;
17
18 import java.io.IOException;
19 import java.io.Serializable;
20 import java.util.HashSet;
21 import java.util.Set;
22
23 import javax.persistence.Column;
24 import javax.persistence.Entity;
25 import javax.persistence.FetchType;
26 import javax.persistence.GeneratedValue;
27 import javax.persistence.GenerationType;
28 import javax.persistence.Id;
29 import javax.persistence.JoinColumn;
30 import javax.persistence.ManyToOne;
31 import javax.persistence.OneToOne;
32 import javax.persistence.Table;
33
34 import org.akraino.validation.ui.data.SubmissionStatus;
35 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
36 import org.onap.portalsdk.core.web.support.UserUtils;
37
38 import com.fasterxml.jackson.databind.SerializerProvider;
39 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
40 import com.fasterxml.jackson.databind.ser.std.StdSerializer;
41
42 @Entity
43 @Table(name = "submission")
44 public class Submission implements Serializable {
45
46     private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(Submission.class);
47
48     /**
49      *
50      */
51     private static final long serialVersionUID = 1L;
52
53     @Id
54     @GeneratedValue(strategy = GenerationType.IDENTITY)
55     @Column(name = "id")
56     private int submissionId;
57
58     @Column(name = "status")
59     private SubmissionStatus status;
60
61     @ManyToOne
62     @JoinColumn(name = "timeslot_id")
63     private Timeslot timeslot;
64
65     @OneToOne(mappedBy = "submission", targetEntity = ValidationDbTestResult.class, fetch = FetchType.EAGER)
66     @JsonSerialize(using = ValidationDbTestResultSerializer.class)
67     private ValidationDbTestResult validationDbTestResult;
68
69     public void setSubmissionId(int submissionId) {
70         this.submissionId = submissionId;
71     }
72
73     public int getSubmissionId() {
74         return submissionId;
75     }
76
77     public SubmissionStatus getSubmissionStatus() {
78         return this.status;
79     }
80
81     public void setSubmissionStatus(SubmissionStatus submissionStatus) {
82         this.status = submissionStatus;
83     }
84
85     public void setTimeslot(Timeslot timeslot) {
86         this.timeslot = timeslot;
87     }
88
89     public Timeslot getTimeslot() {
90         return this.timeslot;
91     }
92
93     public void setValidationDbTestResult(ValidationDbTestResult validationDbTestResult) {
94         this.validationDbTestResult = validationDbTestResult;
95     }
96
97     public ValidationDbTestResult getValidationDbTestResult() {
98         return validationDbTestResult;
99     }
100
101     static class ValidationDbTestResultSerializer extends StdSerializer<ValidationDbTestResult> {
102
103         public ValidationDbTestResultSerializer() {
104             this(null);
105         }
106
107         public ValidationDbTestResultSerializer(Class<ValidationDbTestResult> t) {
108             super(t);
109         }
110
111         @Override
112         public void serialize(ValidationDbTestResult validationDbTestResult,
113                 com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider provider) throws IOException {
114             ValidationDbTestResult result = new ValidationDbTestResult();
115             try {
116                 result.setResultId(validationDbTestResult.getResultId());
117                 result.setAllLayers(validationDbTestResult.getAllLayers());
118                 result.setBlueprintInstance(validationDbTestResult.getBlueprintInstance());
119                 result.setDateStorage(validationDbTestResult.getDateStorage());
120                 result.setLab(validationDbTestResult.getLab());
121                 result.setOptional(validationDbTestResult.getOptional());
122                 result.setResult(validationDbTestResult.getResult());
123                 result.setTimestamp(validationDbTestResult.getTimestamp());
124                 Set<WRobotDbTestResult> wRobotDbTestResults = new HashSet<WRobotDbTestResult>();
125                 if (validationDbTestResult.getWRobotDbTestResults() != null
126                         && validationDbTestResult.getWRobotDbTestResults().size() > 0) {
127                     for (WRobotDbTestResult wRobotDbTestResult : validationDbTestResult.getWRobotDbTestResults()) {
128                         WRobotDbTestResult temp = new WRobotDbTestResult();
129                         temp.setLayer(wRobotDbTestResult.getLayer());
130                         // No need for robot results when fetching submissions
131                         // temp.setRobotTestResults(wRobotDbTestResult.getRobotTestResults());
132                         temp.setWRobotResultId(wRobotDbTestResult.getWRobotResultId());
133                         wRobotDbTestResults.add(temp);
134                     }
135                 }
136                 result.setWRobotDbTestResults(wRobotDbTestResults);
137             } catch (Exception ex) {
138                 LOGGER.error(EELFLoggerDelegate.errorLogger, "Error when serializing." + UserUtils.getStackTrace(ex));
139             }
140             gen.writeObject(result);
141         }
142     }
143
144 }