package com.megatim.fdxcommons.model.referentiel; import java.io.Serializable; import java.time.LocalDateTime; import java.util.HashSet; import java.util.Objects; import java.util.Set; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.ManyToOne; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import com.megatim.fdxcommons.model.search.CriteriaEntitySearch; /** * * @author ASUS */ @Entity @IdClass(RoutageId.class) @Getter @Setter @XmlRootElement(name = "routageList") @XmlAccessorType(XmlAccessType.FIELD) @NoArgsConstructor public class Routage implements Serializable { @Id @NotNull(message = "Le type de fichier est obligatoire") @ManyToOne @CriteriaEntitySearch(libelle = "TypeFichier", fieldName = "typeFichier.code") private TypeFichier typeFichier; @Id @NotNull(message = "Le routage doit être associé à un réfrérentiel en préparation") @ManyToOne @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version") private Referentiel referentiel; @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) private LocalDateTime dateCreation; @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) private LocalDateTime dateMiseAjour; @ManyToMany @JoinTable( name = "rtge_nd", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "noeud_id")) private Set noeudsEnvoi = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_grpe_nd", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "groupe_noeud_id")) private Set groupeNoeudsEnvoi = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_pct", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "participant_id")) private Set participantsEnvoi = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_grpe_pct", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "groupe_participant_id")) private Set groupeParticipantsEnvoi = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_nd_rcpt", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "noeud_id")) private Set noeudsReception = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_grpe_noeud_rcpt", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "groupe_noeud_id")) private Set groupeNoeudsReception = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_pct_rcpt", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "participant_id")) private Set participantsReception = new HashSet<>(); @ManyToMany @JoinTable( name = "rtge_grpe_pct_rcpt", joinColumns = { @JoinColumn(name = "referentiel"), @JoinColumn(name = "typeFichier")}, inverseJoinColumns = @JoinColumn(name = "grpe_pct_id")) private Set groupeParticipantsReception = new HashSet<>(); private String createBy; private String lastModifiedBy; @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Routage routage = (Routage) o; return referentiel != null && referentiel.equals(routage.getReferentiel()) && typeFichier != null && typeFichier.equals(routage.getTypeFichier()); } @Override public int hashCode() { int hash = 3; hash = 79 * hash + Objects.hashCode(this.typeFichier); hash = 79 * hash + Objects.hashCode(this.referentiel); return hash; } }