package com.megatim.fdxconsultation.model.stats; import com.megatim.fdxconsultation.model.enums.TypeConfigurationTableauBord; import com.megatim.fdxcommons.model.referentiel.Referentiel; import com.megatim.fdxcommons.model.referentiel.TypeFichier; import com.megatim.fdxconsultation.model.administration.User; import com.megatim.fdxconsultation.model.base.BaseEntity; import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import com.megatim.fdxcommons.model.search.CriteriaEntitySearch; import java.util.HashSet; import java.util.Set; /** * * @author ASUS */ @Getter @Setter @Entity @NoArgsConstructor public class TableauBord extends BaseEntity implements Serializable { @Id @SequenceGenerator(name = "SEQ_TABLEAU_BORD", sequenceName = "SEQ_TABLEAU_BORD", allocationSize = 1, initialValue = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_TABLEAU_BORD") private Long id; @ManyToOne @CriteriaEntitySearch(libelle = "Utilisateur", fieldName = "user.userName") private User user; @ManyToOne @NotNull(message = "Le type de fichier associé au tableau de bord est obligatoire") @CriteriaEntitySearch(libelle = "TypeFichier", fieldName = "typeFichier.code") private TypeFichier typeFichier; @ManyToOne @NotNull(message = "Le référentiel associé au tableau de bord est obligatoire") @CriteriaEntitySearch(libelle = "Référentiel", fieldName = "referentiel.version") private Referentiel referentiel; @NotEmpty(message = "La description du tableau de bord de bord est obligatoire") private String description; @Enumerated(EnumType.STRING) @NotNull(message = "Le type de configuration est obligatoire") @CriteriaEntitySearch(libelle = "Type de Configuration") private TypeConfigurationTableauBord typeConfiguration = TypeConfigurationTableauBord.USER_SPECIFIC; @OneToMany(mappedBy = "tableauBord", cascade = CascadeType.ALL, orphanRemoval = true) private Set tableConfigurations = new HashSet<>(); public void addTableConfiguration(TableConfiguration tableConfiguration) { tableConfigurations.add(tableConfiguration); tableConfiguration.setTableauBord(this); } public void removeTableConfiguration(TableConfiguration tableConfiguration) { tableConfigurations.remove(tableConfiguration); tableConfiguration.setTableauBord(null); } }