package com.megatim.fdxconsultation.model.stats; import com.fasterxml.jackson.annotation.JsonIgnore; import com.megatim.fdxcommons.model.enumeration.CriteriaLogicConnector; import com.megatim.fdxcommons.model.enumeration.Operateur; import com.megatim.fdxconsultation.model.base.BaseEntity; import java.io.Serializable; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; /** * * @author ASUS */ @Entity @Getter @Setter @NoArgsConstructor public class CriteriaEntityPersisted extends BaseEntity implements Serializable { private String nomColonne; private Number criteriaNumericValue; private LocalDateTime criteriaDateValue; private String criteriaStringValue; private Number criteriaNumericLowerBound; private LocalDateTime criteriaDateLowerBound; private String criteriaStringLowerBound; private Number criteriaNumericUpperBound; private LocalDateTime criteriaDateUpperBound; private String criteriaStringUpperBound; @ElementCollection(targetClass = Number.class, fetch = FetchType.EAGER) private Set criteriaNumericListValue = new HashSet<>(); @ElementCollection(targetClass = LocalDateTime.class, fetch = FetchType.EAGER) private Set criteriaDateListValue = new HashSet<>(); @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER) private Set criteriaStringListValue = new HashSet<>(); @Enumerated(EnumType.STRING) private Operateur operateur; @Enumerated(EnumType.STRING) private CriteriaLogicConnector criteriaLogicConnector; @OneToOne(mappedBy = "criterion") private TableConfiguration tableConfiguration; @ManyToOne(fetch = FetchType.LAZY) private CriteriaEntityPersisted parent; @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.LAZY) private List subCriterias = new ArrayList<>(); @JsonIgnore public List getSubCriterias() { return subCriterias; } }