[UI] Common class for results
[validation.git] / ui / src / main / java / org / akraino / validation / ui / entity / Submission.java
index 1d5d157..a4c797c 100644 (file)
  */
 package org.akraino.validation.ui.entity;
 
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
-import javax.persistence.SequenceGenerator;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 
 import org.akraino.validation.ui.data.SubmissionStatus;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.portalsdk.core.web.support.UserUtils;
+
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
 
 @Entity
-@Table(name = "akraino.submission")
-public class Submission {
+@Table(name = "submission")
+public class Submission implements Serializable {
+
+    private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(Submission.class);
 
     /**
      *
@@ -37,23 +51,20 @@ public class Submission {
     private static final long serialVersionUID = 1L;
 
     @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "submission_id_generator")
-    @SequenceGenerator(name = "submission_id_generator", sequenceName = "akraino.seq_submission", allocationSize = 1)
-    @Column(name = "submission_id")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
     private int submissionId;
 
     @Column(name = "status")
     private SubmissionStatus status;
 
-    @Column(name = "jenkins_queue_job_item_url")
-    private String jnksJobUrl;
-
-    @Column(name = "nexus_result_url")
-    private String nexusResultUrl;
-
     @ManyToOne
-    @JoinColumn(name = "blueprint_instance_id")
-    private BlueprintInstance blueprintInstance;
+    @JoinColumn(name = "timeslot_id")
+    private Timeslot timeslot;
+
+    @OneToOne(mappedBy = "submission", targetEntity = ValidationDbTestResult.class, fetch = FetchType.EAGER)
+    @JsonSerialize(using = ValidationDbTestResultSerializer.class)
+    private ValidationDbTestResult validationDbTestResult;
 
     public void setSubmissionId(int submissionId) {
         this.submissionId = submissionId;
@@ -71,28 +82,63 @@ public class Submission {
         this.status = submissionStatus;
     }
 
-    public String getJenkinsQueueJobItemUrl() {
-        return this.jnksJobUrl;
-    }
-
-    public void setJnksQueueJobItemUrl(String url) {
-        this.jnksJobUrl = url;
+    public void setTimeslot(Timeslot timeslot) {
+        this.timeslot = timeslot;
     }
 
-    public String getNexusResultUrl() {
-        return this.nexusResultUrl;
+    public Timeslot getTimeslot() {
+        return this.timeslot;
     }
 
-    public void setNexusResultUrl(String nexusResultUrl) {
-        this.nexusResultUrl = nexusResultUrl;
+    public void setValidationDbTestResult(ValidationDbTestResult validationDbTestResult) {
+        this.validationDbTestResult = validationDbTestResult;
     }
 
-    public void setBlueprintInstance(BlueprintInstance blueprintInstance) {
-        this.blueprintInstance = blueprintInstance;
+    public ValidationDbTestResult getValidationDbTestResult() {
+        return validationDbTestResult;
     }
 
-    public BlueprintInstance getBlueprintInstance() {
-        return this.blueprintInstance;
+    static class ValidationDbTestResultSerializer extends StdSerializer<ValidationDbTestResult> {
+
+        public ValidationDbTestResultSerializer() {
+            this(null);
+        }
+
+        public ValidationDbTestResultSerializer(Class<ValidationDbTestResult> t) {
+            super(t);
+        }
+
+        @Override
+        public void serialize(ValidationDbTestResult validationDbTestResult,
+                com.fasterxml.jackson.core.JsonGenerator gen, SerializerProvider provider) throws IOException {
+            ValidationDbTestResult result = new ValidationDbTestResult();
+            try {
+                result.setResultId(validationDbTestResult.getResultId());
+                result.setAllLayers(validationDbTestResult.getAllLayers());
+                result.setBlueprintInstance(validationDbTestResult.getBlueprintInstance());
+                result.setDateStorage(validationDbTestResult.getDateStorage());
+                result.setLab(validationDbTestResult.getLab());
+                result.setOptional(validationDbTestResult.getOptional());
+                result.setResult(validationDbTestResult.getResult());
+                result.setTimestamp(validationDbTestResult.getTimestamp());
+                Set<WRobotDbTestResult> wRobotDbTestResults = new HashSet<WRobotDbTestResult>();
+                if (validationDbTestResult.getWRobotDbTestResults() != null
+                        && validationDbTestResult.getWRobotDbTestResults().size() > 0) {
+                    for (WRobotDbTestResult wRobotDbTestResult : validationDbTestResult.getWRobotDbTestResults()) {
+                        WRobotDbTestResult temp = new WRobotDbTestResult();
+                        temp.setLayer(wRobotDbTestResult.getLayer());
+                        // No need for robot results when fetching submissions
+                        // temp.setRobotTestResults(wRobotDbTestResult.getRobotTestResults());
+                        temp.setWRobotResultId(wRobotDbTestResult.getWRobotResultId());
+                        wRobotDbTestResults.add(temp);
+                    }
+                }
+                result.setWRobotDbTestResults(wRobotDbTestResults);
+            } catch (Exception ex) {
+                LOGGER.error(EELFLoggerDelegate.errorLogger, "Error when serializing." + UserUtils.getStackTrace(ex));
+            }
+            gen.writeObject(result);
+        }
     }
 
 }