/** * */ package net.conselldemallorca.helium.core.model.hibernate; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Transient; import javax.persistence.UniqueConstraint; import net.conselldemallorca.helium.core.model.hibernate.Persona.Sexe; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.ForeignKey; import org.hibernate.annotations.Index; import org.springmodules.validation.bean.conf.loader.annotation.handler.MaxLength; import org.springmodules.validation.bean.conf.loader.annotation.handler.NotBlank; import org.springmodules.validation.bean.conf.loader.annotation.handler.NotNull; /** * Objecte de domini que representa un cĂ rrec de l'organigrama. * * @author Limit Tecnologies <limit@limit.es> */ @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @Table( name="hel_carrec", uniqueConstraints={@UniqueConstraint(columnNames={"codi", "entorn_id"})}) @org.hibernate.annotations.Table( appliesTo = "hel_carrec", indexes = { @Index(name = "hel_carrec_area_i", columnNames = {"area_id"}), @Index(name = "hel_carrec_entorn_i", columnNames = {"entorn_id"})}) public class Carrec implements Serializable, GenericEntity<Long> { private Long id; @NotBlank @MaxLength(64) private String codi; @NotBlank @MaxLength(255) private String nomHome; @NotBlank @MaxLength(255) private String nomDona; @NotBlank @MaxLength(255) private String tractamentHome; @NotBlank @MaxLength(255) private String tractamentDona; @MaxLength(255) private String descripcio; @MaxLength(64) private String personaCodi; private Sexe personaSexe; @NotNull private Area area; @NotNull private Entorn entorn; public Carrec() {} public Carrec(String codi, String nomHome, String nomDona, String tractamentHome, String tractamentDona, Entorn entorn) { this.codi = codi; this.nomHome = nomHome; this.nomDona = nomDona; this.tractamentHome = tractamentHome; this.tractamentDona = tractamentDona; this.entorn = entorn; } @Id @GeneratedValue(strategy = GenerationType.TABLE, generator="gen_carrec") @TableGenerator(name="gen_carrec", table="hel_idgen", pkColumnName="taula", valueColumnName="valor") @Column(name="id") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="codi", length=64, nullable=false) public String getCodi() { return codi; } public void setCodi(String codi) { this.codi = codi; } @Column(name="nom_home", length=255, nullable=false) public String getNomHome() { return nomHome; } public void setNomHome(String nomHome) { this.nomHome = nomHome; } @Column(name="nom_dona", length=255, nullable=false) public String getNomDona() { return nomDona; } public void setNomDona(String nomDona) { this.nomDona = nomDona; } @Column(name="tractament_home", length=255, nullable=false) public String getTractamentHome() { return tractamentHome; } public void setTractamentHome(String tractamentHome) { this.tractamentHome = tractamentHome; } @Column(name="carrec_dona", length=255, nullable=false) public String getTractamentDona() { return tractamentDona; } public void setTractamentDona(String tractamentDona) { this.tractamentDona = tractamentDona; } @Column(name="descripcio", length=255) public String getDescripcio() { return descripcio; } public void setDescripcio(String descripcio) { this.descripcio = descripcio; } @Column(name="persona_codi", length=64) public String getPersonaCodi() { return personaCodi; } public void setPersonaCodi(String personaCodi) { this.personaCodi = personaCodi; } @Column(name="persona_sexe") public Sexe getPersonaSexe() { return personaSexe; } public void setPersonaSexe(Sexe personaSexe) { this.personaSexe = personaSexe; } @ManyToOne(optional=false) @JoinColumn(name="area_id") @ForeignKey(name="hel_area_carrec_fk") public Area getArea() { return area; } public void setArea(Area area) { this.area = area; } @ManyToOne(optional=false) @JoinColumn(name="entorn_id") @ForeignKey(name="hel_entorn_carrec_fk") public Entorn getEntorn() { return entorn; } public void setEntorn(Entorn entorn) { this.entorn = entorn; } @Transient public String getNomHomeDona() { return nomHome + "/" + nomDona; } @Transient public String getTractamentPerSexe() { if (personaSexe == null) return tractamentHome; return (personaSexe.equals(Sexe.SEXE_HOME)) ? tractamentHome.trim() : tractamentDona.trim(); } @Transient public String getNomPerSexe() { if (personaSexe == null) return tractamentHome; return (personaSexe.equals(Sexe.SEXE_HOME)) ? nomHome.trim() : nomDona.trim(); } @Transient public String getNomAmbTractamentPerSexe() { if (personaSexe == null) return tractamentHome; if (personaSexe.equals(Sexe.SEXE_HOME)) return tractamentHome.trim() + " " + nomHome.trim(); else return tractamentDona.trim() + " " + nomDona.trim(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((codi == null) ? 0 : codi.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Carrec other = (Carrec) obj; if (codi == null) { if (other.codi != null) return false; } else if (!codi.equals(other.codi)) return false; return true; } private static final long serialVersionUID = 1L; }