![JAR search and dependency download from the Maven repository](/logo.png)
com.evasion.entity.Partenaire Maven / Gradle / Ivy
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.evasion.entity;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
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.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Transient;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
/**
* Classe représentant un partenariat entre une personne morale
* et le détenteur du site.
* @author sebastien
*/
@Entity
@NamedQueries({
@NamedQuery(name = Partenaire.FIND_ALL_ACTIF,
query = "SELECT p FROM Partenaire p WHERE "
+ "p.type <> com.evasion.entity.Partenaire.Type.aValider "
+ "OR p.dateFin < CURRENT_DATE "),
@NamedQuery(name = Partenaire.FIND_ALL,
query = "SELECT b FROM Partenaire b"),
@NamedQuery(name = Partenaire.POTENTIAL_PARTENAIRE,
query = "SELECT c FROM Corporation c "
+ "WHERE c.id NOT IN ("
+ "SELECT p.person.id FROM Partenaire p "
+ "WHERE p.type <> com.evasion.entity.Partenaire.Type.permanent "
+ "OR p.dateFin < CURRENT_DATE )")})
@Table(name = "Partenaires")
public class Partenaire implements Serializable {
/***
* serialVersionUID.
*/
private static final long serialVersionUID = 1L;
public static final String FIND_ALL_ACTIF = "FIND_ALL_ACTIF";
public static final String FIND_ALL = "FIND_ALL";
public static final String POTENTIAL_PARTENAIRE = "CORPO_NOT_PARTENAIRE";
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
private Corporation person;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dateEnregistrement;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dateDebut;
@Temporal(javax.persistence.TemporalType.DATE)
private Date dateFin;
public enum Etat {
aVenir,
actif,
inactif;
}
@Transient
private Etat etat;
public enum Type {
aValider,
temporaire,
permanent;
public static List listValues() {
Type[] types = Type.values();
return Arrays.asList(types);
}
;
String toString;
Type(String toString) {
this.toString = toString;
}
Type() {
}
@Override
public String toString() {
return ((toString != null) ? toString : super.toString());
}
}
@Enumerated(EnumType.STRING)
private Type type;
public Partenaire() {
}
public Partenaire(Date dateEnregistrement) {
this.dateEnregistrement = dateEnregistrement;
}
@PrePersist
private void initDateEnregistrement() {
if (dateEnregistrement == null) {
dateEnregistrement = new Date();
}
}
public Date getDateDebut() {
return dateDebut;
}
public void setDateDebut(Date dateDebut) {
this.dateDebut = dateDebut;
}
public Date getDateFin() {
return dateFin;
}
public void setDateFin(Date dateFin) {
this.dateFin = dateFin;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Corporation getPerson() {
return person;
}
public void setPerson(Corporation person) {
this.person = person;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
public Date getDateEnregistrement() {
if (dateEnregistrement == null) {
this.initDateEnregistrement();
}
return dateEnregistrement;
}
/**
* Définit l'état du partenaire.
* Si son type est permanent alors il est à l'état actif;
* Si la date de début est inférieur à la date du jour alors, l'état est à venir;
* Si la date de fin est supérieur à la date du jour alors, l'état est innactif;
* @return
*/
public Etat getEtat() {
final Date actuelle = new Date();
if (dateDebut == null || actuelle.before(dateDebut)) {
etat = Etat.aVenir;
} else if (actuelle.after(dateDebut) && (type == Type.permanent || actuelle.before(dateFin))) {
etat = Etat.actif;
} else {
etat = Etat.inactif;
}
return etat;
}
/**
* {@inheritDoc }
*/
@Override
public boolean equals(final Object obj) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (!(obj instanceof Partenaire)) {
return false;
}
Partenaire rhs = (Partenaire) obj;
return new EqualsBuilder().append(this.person, rhs.person).append(this.dateEnregistrement, rhs.dateEnregistrement).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 37).append(this.person).append(this.dateEnregistrement).toHashCode();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy