[UI] Common class for results
[validation.git] / ui / src / main / java / org / akraino / validation / ui / entity / Submission.java
index bdbe535..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.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 = "submission")
 public class Submission implements Serializable {
 
+    private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(Submission.class);
+
     /**
      *
      */
@@ -49,6 +62,10 @@ public class Submission implements Serializable {
     @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;
     }
@@ -73,4 +90,55 @@ public class Submission implements Serializable {
         return this.timeslot;
     }
 
+    public void setValidationDbTestResult(ValidationDbTestResult validationDbTestResult) {
+        this.validationDbTestResult = validationDbTestResult;
+    }
+
+    public ValidationDbTestResult getValidationDbTestResult() {
+        return validationDbTestResult;
+    }
+
+    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);
+        }
+    }
+
 }