/** * */ package net.conselldemallorca.helium.core.model.hibernate; import java.io.Serializable; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; 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; import net.conselldemallorca.helium.core.common.JbpmVars; /** * Objecte de domini que representa una entrada al magatzem de documents * de la BBDD * * @author Limit Tecnologies <limit@limit.es> */ @Entity @Table(name="hel_document_store") public class DocumentStore implements Serializable, GenericEntity<Long> { public enum DocumentFont { INTERNA, ALFRESCO } private Long id; @NotNull private DocumentFont font; @NotBlank @MaxLength(64) private String processInstanceId; @NotBlank @MaxLength(255) private String jbpmVariable; @NotNull private Date dataCreacio; private Date dataModificacio; @NotNull private Date dataDocument; @MaxLength(255) private String arxiuNom; private byte[] arxiuContingut; private boolean signat = false; @MaxLength(255) private String referenciaCustodia; @MaxLength(255) private String referenciaFont; @MaxLength(255) private String registreNumero; private Date registreData; @MaxLength(255) private String registreOrganCodi; @MaxLength(255) private String registreOficinaCodi; @MaxLength(255) private String registreOficinaNom; private boolean registreEntrada; private boolean adjunt = false; @MaxLength(255) private String adjuntTitol; public DocumentStore() {} public DocumentStore( DocumentFont font, String processInstanceId, String jbpmVariable, Date dataCreacio, Date dataDocument, String arxiuNom) { this.font = font; this.processInstanceId = processInstanceId; this.jbpmVariable = jbpmVariable; this.dataCreacio = dataCreacio; this.dataModificacio = dataCreacio; this.dataDocument = dataDocument; this.arxiuNom = arxiuNom; } @Id @GeneratedValue(strategy = GenerationType.TABLE, generator="gen_document_store") @TableGenerator(name="gen_document_store", 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="font", nullable=false) public DocumentFont getFont() { return font; } public void setFont(DocumentFont font) { this.font = font; } @Column(name="process_instance_id", length=64, nullable=false) public String getProcessInstanceId() { return processInstanceId; } public void setProcessInstanceId(String processInstanceId) { this.processInstanceId = processInstanceId; } @Column(name="jbpm_variable", length=255, nullable=false) public String getJbpmVariable() { return jbpmVariable; } public void setJbpmVariable(String jbpmVariable) { this.jbpmVariable = jbpmVariable; } @Column(name="data_creacio", nullable=false) @Temporal(TemporalType.TIMESTAMP) public Date getDataCreacio() { return dataCreacio; } public void setDataCreacio(Date dataCreacio) { this.dataCreacio = dataCreacio; } @Column(name="data_modificacio", nullable=false) @Temporal(TemporalType.TIMESTAMP) public Date getDataModificacio() { return dataModificacio; } public void setDataModificacio(Date dataModificacio) { this.dataModificacio = dataModificacio; } @Column(name="data_document", nullable=false) @Temporal(TemporalType.DATE) public Date getDataDocument() { return dataDocument; } public void setDataDocument(Date dataDocument) { this.dataDocument = dataDocument; } @Column(name="arxiu_nom", length=255, nullable=false) public String getArxiuNom() { return arxiuNom; } public void setArxiuNom(String arxiuNom) { this.arxiuNom = arxiuNom; } @Lob @Basic(fetch=FetchType.LAZY) @Column(name="arxiu_contingut") public byte[] getArxiuContingut() { return arxiuContingut; } public void setArxiuContingut(byte[] arxiuContingut) { this.arxiuContingut = arxiuContingut; } @Column(name="signat") public boolean isSignat() { return signat; } public void setSignat(boolean signat) { this.signat = signat; } @Column(name="ref_custodia", length=255) public String getReferenciaCustodia() { return referenciaCustodia; } public void setReferenciaCustodia(String referenciaCustodia) { this.referenciaCustodia = referenciaCustodia; } @Column(name="ref_font", length=255) public String getReferenciaFont() { return referenciaFont; } public void setReferenciaFont(String referenciaFont) { this.referenciaFont = referenciaFont; } @Column(name="registre_num", length=255) public String getRegistreNumero() { return registreNumero; } public void setRegistreNumero(String registreNumero) { this.registreNumero = registreNumero; } @Column(name="registre_data") @Temporal(TemporalType.TIMESTAMP) public Date getRegistreData() { return registreData; } public void setRegistreData(Date registreData) { this.registreData = registreData; } @Column(name="registre_orgcodi", length=255) public String getRegistreOrganCodi() { return registreOrganCodi; } public void setRegistreOrganCodi(String registreOrganCodi) { this.registreOrganCodi = registreOrganCodi; } @Column(name="registre_ofcodi", length=255) public String getRegistreOficinaCodi() { return registreOficinaCodi; } public void setRegistreOficinaCodi(String registreOficinaCodi) { this.registreOficinaCodi = registreOficinaCodi; } @Column(name="registre_ofnom", length=255) public String getRegistreOficinaNom() { return registreOficinaNom; } public void setRegistreOficinaNom(String registreOficinaNom) { this.registreOficinaNom = registreOficinaNom; } @Column(name="registre_entrada") public boolean isRegistreEntrada() { return registreEntrada; } public void setRegistreEntrada(boolean registreEntrada) { this.registreEntrada = registreEntrada; } @Column(name="adjunt") public boolean isAdjunt() { return adjunt; } public void setAdjunt(boolean adjunt) { this.adjunt = adjunt; } @Column(name="adjunt_titol", length=255) public String getAdjuntTitol() { return adjuntTitol; } public void setAdjuntTitol(String adjuntTitol) { this.adjuntTitol = adjuntTitol; } @Transient public String getCodiDocument() { if (getJbpmVariable() == null) return null; return getJbpmVariable().substring(JbpmVars.PREFIX_DOCUMENT.length()); } @Transient public boolean isRegistrat() { return (registreNumero != null) || (registreData != null); } @Transient public boolean isRegistreSortida() { return !isRegistreEntrada(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.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; DocumentStore other = (DocumentStore) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } private static final long serialVersionUID = 1L; }