X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fakraino%2Fvalidation%2Fui%2Fentity%2FBlueprintInstance.java;h=9024b38604c0672df621e3a3aa924d42a7c4fc73;hb=3ff5d7028b19a649f6b80c476ff45ced1fdd67dc;hp=93206db1522de89836e92441f15d3ee3b3c2a34a;hpb=b21eff6b17f5aa5208510bf92e600744e270cd65;p=validation.git diff --git a/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java b/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java index 93206db..9024b38 100644 --- a/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java +++ b/ui/src/main/java/org/akraino/validation/ui/entity/BlueprintInstance.java @@ -15,35 +15,45 @@ */ 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.CascadeType; 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.JoinTable; +import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; -import javax.persistence.OneToOne; -import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import org.akraino.validation.ui.data.BlueprintLayer; +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.blueprint_instance") +@Table(name = "blueprint_instance") public class BlueprintInstance implements Serializable { + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(BlueprintInstance.class); + /** * */ private static final long serialVersionUID = 1L; @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "blueprint_instance_id_generator") - @SequenceGenerator(name = "blueprint_instance_id_generator", sequenceName = "akraino.seq_blueprint_instance", - allocationSize = 1) - @Column(name = "blueprint_instance_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") private int blueprintInstId; @ManyToOne @@ -53,15 +63,17 @@ public class BlueprintInstance implements Serializable { @Column(name = "version") private String version; - @Column(name = "layer") - private BlueprintLayer layer; - - @Column(name = "layer_description") - private String layerDescription; + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinTable(name = "blueprint_instance_blueprint_layer", joinColumns = { + @JoinColumn(name = "blueprint_instance_id") }, inverseJoinColumns = { + @JoinColumn(name = "blueprint_layer_id") }) + private Set blueprintLayers = new HashSet<>(); - @OneToOne - @JoinColumn(name = "timeslot_id") - private Timeslot timeslot; + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinTable(name = "blueprint_instance_timeslot", joinColumns = { + @JoinColumn(name = "blueprint_instance_id") }, inverseJoinColumns = { @JoinColumn(name = "timeslot_id") }) + @JsonSerialize(using = TimeslotsSerializer.class) + private Set timeslots = new HashSet<>(); public int getBlueprintInstanceId() { return blueprintInstId; @@ -87,28 +99,51 @@ public class BlueprintInstance implements Serializable { return version; } - public BlueprintLayer getLayer() { - return layer; - } - - public void setLayer(BlueprintLayer layer) { - this.layer = layer; + public Set getBlueprintLayers() { + return blueprintLayers; } - public void setLayerDescription(String layerDescription) { - this.layerDescription = layerDescription; + public void setBlueprintLayers(Set blueprintLayers) { + this.blueprintLayers = blueprintLayers; } - public String getLayerDescription() { - return layerDescription; + public Set getTimeslots() { + return timeslots; } - public void setTimeslot(Timeslot timeslot) { - this.timeslot = timeslot; + public void setTimeslots(Set timeslots) { + this.timeslots = timeslots; } - public Timeslot getTimeslot() { - return this.timeslot; + static class TimeslotsSerializer extends StdSerializer> { + + public TimeslotsSerializer() { + this(null); + } + + public TimeslotsSerializer(Class> tclass) { + super(tclass); + } + + @Override + public void serialize(Set timeslots, com.fasterxml.jackson.core.JsonGenerator gen, + SerializerProvider provider) throws IOException { + Set results = new HashSet<>(); + for (Timeslot timeslot : timeslots) { + try { + Timeslot result = new Timeslot(); + result.setDuration(timeslot.getDuration()); + result.setLabInfo(timeslot.getLabInfo()); + result.setStartDateTime(timeslot.getStartDateTime()); + result.setTimeslotId(timeslot.getTimeslotId()); + results.add(result); + } catch (Exception ex) { + LOGGER.error(EELFLoggerDelegate.errorLogger, + "Error when serializing." + UserUtils.getStackTrace(ex)); + } + } + gen.writeObject(results); + } } }