package com.megatim.fdxcommons.model.referentiel; import com.fasterxml.jackson.annotation.JsonIgnore; 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.ManyToMany; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; 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 @Getter @Setter @XmlRootElement(name = "participants") @XmlAccessorType(XmlAccessType.FIELD) @NoArgsConstructor public class Participant implements Serializable { @Id @NotEmpty(message = "Code obligatoire") @Size(min = 3, message = "Le champ code doit avoir 3 caractères") @Size(max = 3, message = "Le champ code doit avoir 3 caractères") @CriteriaEntitySearch(libelle = "Code", fieldName = "code", rang = 1) private String code; @NotEmpty(message = "Libellé obligatoire") @CriteriaEntitySearch(libelle = "Libellé", fieldName = "code", rang = 2) private String libelle; private String description; private String rue; private String adresse; private String ville; private String email; @NotNull(message = "Le participant doit être associé à un référentiel en préparation") @ManyToOne @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version", rang = 3) private Referentiel referentiel; @NotNull(message = "Pays obligatoire") @ManyToOne @CriteriaEntitySearch(libelle = "Pays", fieldName = "pays.code", rang = 4) private Pays pays; @XmlTransient @OneToMany(mappedBy = "participant") @JsonIgnore private Set noeuds; @XmlTransient @ManyToMany(mappedBy = "participants") @JsonIgnore private Set groupeParticipants; @XmlTransient @ManyToMany(mappedBy = "participantsEnvoi") @JsonIgnore private Set routageEnvois = new HashSet<>(); @XmlTransient @ManyToMany(mappedBy = "participantsReception") @JsonIgnore private Set routageReceptions = new HashSet<>(); @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) private LocalDateTime dateCreation; @XmlJavaTypeAdapter(LocalDateTimeAdapter.class) private LocalDateTime dateMiseAjour; private String createBy; private String lastModifiedBy; @Override public String toString() { return this.getCode() + " - " + this.getLibelle(); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Participant other = (Participant) obj; if (this.getCode() != null && !this.getCode().equals(other.getCode())) { return false; } return true; } @Override public int hashCode() { int hash = 7; hash = 13 * hash + Objects.hashCode(this.code); return hash; } }