/** * */ package net.conselldemallorca.helium.core.model.hibernate; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; 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.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.TableGenerator; 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 una definició de tasca. * * @author Limit Tecnologies <limit@limit.es> */ @Entity @Table( name="hel_tasca", uniqueConstraints={@UniqueConstraint(columnNames={"jbpm_name", "definicio_proces_id"})}) @org.hibernate.annotations.Table( appliesTo = "hel_tasca", indexes = { @Index(name = "hel_tasca_defproc_i", columnNames = {"definicio_proces_id"}), @Index(name = "hel_tasca_jbpmname_i", columnNames = {"jbpm_name"})}) public class Tasca implements Serializable, GenericEntity<Long> { public enum TipusTasca { ESTAT, FORM, SIGNATURA } private Long id; @NotBlank @MaxLength(255) private String nom; @NotNull private TipusTasca tipus; @MaxLength(255) private String missatgeInfo; @MaxLength(255) private String missatgeWarn; @MaxLength(1024) private String nomScript; @MaxLength(255) private String expressioDelegacio; @NotBlank @MaxLength(255) private String jbpmName; @MaxLength(255) private String recursForm; @MaxLength(255) private String formExtern; private boolean tramitacioMassiva = false; private boolean finalitzacioSegonPla = false; @NotNull private DefinicioProces definicioProces; private List<CampTasca> camps = new ArrayList<CampTasca>(); private List<DocumentTasca> documents = new ArrayList<DocumentTasca>(); private List<FirmaTasca> firmes = new ArrayList<FirmaTasca>(); private List<Validacio> validacions = new ArrayList<Validacio>(); public Tasca() {} public Tasca(DefinicioProces definicioProces, String jbpmName, String nom, TipusTasca tipus) { this.definicioProces = definicioProces; this.jbpmName = jbpmName; this.nom = nom; this.tipus = tipus; } @Id @GeneratedValue(strategy = GenerationType.TABLE, generator="gen_tasca") @TableGenerator(name="gen_tasca", 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="nom", length=255) public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } @Column(name="tipus", nullable=false) public TipusTasca getTipus() { return tipus; } public void setTipus(TipusTasca tipus) { this.tipus = tipus; } @Column(name="missatge_info", length=255) public String getMissatgeInfo() { return missatgeInfo; } public void setMissatgeInfo(String missatgeInfo) { this.missatgeInfo = missatgeInfo; } @Column(name="missatge_warn", length=255) public String getMissatgeWarn() { return missatgeWarn; } public void setMissatgeWarn(String missatgeWarn) { this.missatgeWarn = missatgeWarn; } @Column(name="nom_script", length=1024) public String getNomScript() { return nomScript; } public void setNomScript(String nomScript) { this.nomScript = nomScript; } @Column(name="expressio_delegacio", length=255) public String getExpressioDelegacio() { return expressioDelegacio; } public void setExpressioDelegacio(String expressioDelegacio) { this.expressioDelegacio = expressioDelegacio; } @Column(name="jbpm_name", length=255, nullable=false) public String getJbpmName() { return jbpmName; } public void setJbpmName(String jbpmName) { this.jbpmName = jbpmName; } @Column(name="recurs_form", length=255) public String getRecursForm() { return recursForm; } public void setRecursForm(String recursForm) { this.recursForm = recursForm; } @Column(name="form_extern", length=255) public String getFormExtern() { return formExtern; } public void setFormExtern(String formExtern) { this.formExtern = formExtern; } @Column(name="tram_massiva") public boolean isTramitacioMassiva() { return tramitacioMassiva; } public void setTramitacioMassiva(boolean tramitacioMassiva) { this.tramitacioMassiva = tramitacioMassiva; } @Column(name="fin_segon_pla") public boolean isFinalitzacioSegonPla() { return finalitzacioSegonPla; } public void setFinalitzacioSegonPla(boolean finalitzacioSegonPla) { this.finalitzacioSegonPla = finalitzacioSegonPla; } @ManyToOne(optional=false) @JoinColumn(name="definicio_proces_id") @ForeignKey(name="hel_defproc_tasca_fk") public DefinicioProces getDefinicioProces() { return definicioProces; } public void setDefinicioProces(DefinicioProces definicioProces) { this.definicioProces = definicioProces; } @OneToMany(mappedBy="tasca", cascade={CascadeType.ALL}, fetch=FetchType.EAGER) @OrderBy("order asc") public List<CampTasca> getCamps() { return this.camps; } public void setCamps(List<CampTasca> camps) { this.camps = camps; } public void addCamp(CampTasca camp) { getCamps().add(camp); } public void removeCamp(CampTasca camp) { getCamps().remove(camp); } @OneToMany(mappedBy="tasca", cascade={CascadeType.ALL}, fetch=FetchType.LAZY) @OrderBy("order asc") public List<DocumentTasca> getDocuments() { return this.documents; } public void setDocuments(List<DocumentTasca> documents) { this.documents = documents; } public void addDocument(DocumentTasca document) { getDocuments().add(document); } public void removeDocument(DocumentTasca document) { getDocuments().remove(document); } @OneToMany(mappedBy="tasca", cascade={CascadeType.ALL}, fetch=FetchType.LAZY) @OrderBy("order asc") public List<FirmaTasca> getFirmes() { return this.firmes; } public void setFirmes(List<FirmaTasca> firmes) { this.firmes = firmes; } public void addFirma(FirmaTasca firma) { getFirmes().add(firma); } public void removeFirma(FirmaTasca firma) { getFirmes().remove(firma); } @OneToMany(mappedBy="tasca", cascade={CascadeType.ALL}) @OrderBy("ordre asc") public List<Validacio> getValidacions() { return this.validacions; } public void setValidacions(List<Validacio> validacions) { this.validacions = validacions; } public void addValidacio(Validacio validacio) { getValidacions().add(validacio); } public void removeValidacio(Validacio validacio) { getValidacions().remove(validacio); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((definicioProces == null) ? 0 : definicioProces.hashCode()); result = prime * result + ((jbpmName == null) ? 0 : jbpmName.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; Tasca other = (Tasca) obj; if (definicioProces == null) { if (other.definicioProces != null) return false; } else if (!definicioProces.equals(other.definicioProces)) return false; if (jbpmName == null) { if (other.jbpmName != null) return false; } else if (!jbpmName.equals(other.jbpmName)) return false; return true; } private static final long serialVersionUID = 1L; }