/** * */ package net.conselldemallorca.helium.core.model.hibernate; import java.io.Serializable; import java.util.HashSet; import java.util.Set; 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.OneToMany; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Transient; import javax.persistence.UniqueConstraint; 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 domini per fer consultes. * * @author Limit Tecnologies <limit@limit.es> */ @Entity @Table( name="hel_domini", uniqueConstraints={@UniqueConstraint(columnNames={"codi", "entorn_id"})}) @org.hibernate.annotations.Table( appliesTo = "hel_domini", indexes = { @Index(name = "hel_domini_entorn_i", columnNames = {"entorn_id"}), @Index(name = "hel_domini_exptip_i", columnNames = {"expedient_tipus_id"})}) public class Domini implements Serializable, GenericEntity<Long> { public enum TipusDomini { CONSULTA_SQL, CONSULTA_WS } public enum TipusAuthDomini { NONE, HTTP_BASIC, USERNAMETOKEN } public enum OrigenCredencials { ATRIBUTS, PROPERTIES } private Long id; @NotBlank @MaxLength(64) private String codi; @NotBlank @MaxLength(255) private String nom; @NotNull private TipusDomini tipus; @MaxLength(255) private String url; private TipusAuthDomini tipusAuth; private OrigenCredencials origenCredencials; @MaxLength(255) private String usuari; @MaxLength(255) private String contrasenya; @MaxLength(1024) private String sql; @MaxLength(255) private String jndiDatasource; @MaxLength(255) private String descripcio; private int cacheSegons = 0; private Integer timeout = 0; @MaxLength(255) private String ordreParams; @NotNull private Entorn entorn; private ExpedientTipus expedientTipus; private Set<Camp> camps = new HashSet<Camp>(); public Domini() {} public Domini(String codi, String nom) { this.codi = codi; this.nom = nom; } public Domini(String codi, String nom, Entorn entorn) { this.codi = codi; this.nom = nom; this.entorn = entorn; } @Id @GeneratedValue(strategy = GenerationType.TABLE, generator="gen_domini") @TableGenerator(name="gen_domini", 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", length=255, nullable=false) public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } @Column(name="tipus", nullable=false) public TipusDomini getTipus() { return tipus; } public void setTipus(TipusDomini tipus) { this.tipus = tipus; } @Column(name="url", length=255) public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } @Column(name="tipus_auth") public TipusAuthDomini getTipusAuth() { return tipusAuth; } public void setTipusAuth(TipusAuthDomini tipusAuth) { this.tipusAuth = tipusAuth; } @Column(name="origen_creds") public OrigenCredencials getOrigenCredencials() { return origenCredencials; } public void setOrigenCredencials(OrigenCredencials origenCredencials) { this.origenCredencials = origenCredencials; } @Column(name="usuari") public String getUsuari() { return usuari; } public void setUsuari(String usuari) { this.usuari = usuari; } @Column(name="contrasenya") public String getContrasenya() { return contrasenya; } public void setContrasenya(String contrasenya) { this.contrasenya = contrasenya; } @Column(name="sqlexpr", length=1024) public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } @Column(name="jndi_datasource", length=255) public String getJndiDatasource() { return jndiDatasource; } public void setJndiDatasource(String jndiDatasource) { this.jndiDatasource = jndiDatasource; } @Column(name="descripcio", length=255) public String getDescripcio() { return descripcio; } public void setDescripcio(String descripcio) { this.descripcio = descripcio; } @Column(name="cache_segons") public int getCacheSegons() { return cacheSegons; } public void setCacheSegons(int cacheSegons) { this.cacheSegons = cacheSegons; } public Integer getTimeout() { return timeout; } public void setTimeout(Integer timeout) { this.timeout = timeout; } @Column(name="ordre_params", length=255) public String getOrdreParams() { return ordreParams; } public void setOrdreParams(String ordreParams) { this.ordreParams = ordreParams; } @ManyToOne(optional=false) @JoinColumn(name="entorn_id") @ForeignKey(name="hel_entorn_domini_fk") public Entorn getEntorn() { return entorn; } public void setEntorn(Entorn entorn) { this.entorn = entorn; } @ManyToOne @JoinColumn(name="expedient_tipus_id") @ForeignKey(name="hel_exptip_domini_fk") public ExpedientTipus getExpedientTipus() { return expedientTipus; } public void setExpedientTipus(ExpedientTipus expedientTipus) { this.expedientTipus = expedientTipus; } @OneToMany(mappedBy="domini") public Set<Camp> getCamps() { return this.camps; } public void setCamps(Set<Camp> camps) { this.camps= camps; } public void addCamp(Camp camp) { getCamps().add(camp); } public void removeCamp(Camp camp) { getCamps().remove(camp); } @Transient public boolean isDominiIntern() { return id == null || id.equals(0L); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((codi == null) ? 0 : codi.hashCode()); result = prime * result + ((entorn == null) ? 0 : entorn.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; Domini other = (Domini) obj; if (codi == null) { if (other.codi != null) return false; } else if (!codi.equals(other.codi)) return false; if (entorn == null) { if (other.entorn != null) return false; } else if (!entorn.equals(other.entorn)) return false; return true; } private static final long serialVersionUID = 1L; }