/** * */ package net.conselldemallorca.helium.core.model.hibernate; import java.io.Serializable; import java.security.Principal; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.persistence.CascadeType; 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.Lob; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.TableGenerator; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import org.hibernate.annotations.ForeignKey; import org.hibernate.annotations.Index; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springmodules.validation.bean.conf.loader.annotation.handler.MaxLength; import org.springmodules.validation.bean.conf.loader.annotation.handler.NotNull; /** * Objecte de domini que representa una acció massiva a damunt * els expedients. * * @author Limit Tecnologies <limit@limit.es> */ @Entity @Table(name="hel_exec_massiva") @org.hibernate.annotations.Table( appliesTo = "hel_exec_massiva", indexes = @Index(name = "hel_exemas_usuari_i", columnNames = {"usuari"})) public class ExecucioMassiva implements Serializable, GenericEntity<Long> { public enum ExecucioMassivaTipus { EXECUTAR_TASCA, ACTUALITZAR_VERSIO_DEFPROC, EXECUTAR_SCRIPT, EXECUTAR_ACCIO, ATURAR_EXPEDIENT, MODIFICAR_VARIABLE, MODIFICAR_DOCUMENT, REINDEXAR, REASSIGNAR, BUIDARLOG, REPRENDRE_EXPEDIENT, REPRENDRE } private Long id; @NotNull @MaxLength(64) private String usuari; @NotNull private ExecucioMassivaTipus tipus; @NotNull private Date dataInici; private Date dataFi; @MaxLength(255) private String param1; private byte[] param2; private Boolean enviarCorreu; private ExpedientTipus expedientTipus; private List<ExecucioMassivaExpedient> expedients = new ArrayList<ExecucioMassivaExpedient>(); private Long entorn; @MaxLength(2000) private String rols; public ExecucioMassiva() {} public ExecucioMassiva(String usuari, ExecucioMassivaTipus tipus) { this.usuari = usuari; this.tipus = tipus; this.dataInici = new Date(); // Collection<GrantedAuthority> authorities = auth.getAuthorities() != null ? (Collection<GrantedAuthority>)auth.getAuthorities() : null; // this.setAuthenticationRoles(authorities); } @Id @GeneratedValue(strategy = GenerationType.TABLE, generator="gen_estat") @TableGenerator(name="gen_estat", 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="usuari", length=64, nullable=false) public String getUsuari() { return usuari; } public void setUsuari(String usuari) { this.usuari = usuari; } @Column(name="tipus", nullable=false) public ExecucioMassivaTipus getTipus() { return tipus; } public void setTipus(ExecucioMassivaTipus tipus) { this.tipus = tipus; } @Column(name="data_inici", nullable=false) @Temporal(TemporalType.TIMESTAMP) public Date getDataInici() { return dataInici; } public void setDataInici(Date dataInici) { this.dataInici = dataInici; } @Column(name="data_fi") @Temporal(TemporalType.TIMESTAMP) public Date getDataFi() { return dataFi; } public void setDataFi(Date dataFi) { this.dataFi = dataFi; } @Column(name="param1", length=255) public String getParam1() { return param1; } public void setParam1(String param1) { this.param1 = param1; } @Lob @Column(name="param2") public byte[] getParam2() { return param2; } public void setParam2(byte[] param2) { this.param2 = param2; } @Column(name="env_correu") public Boolean getEnviarCorreu() { return enviarCorreu; } public void setEnviarCorreu(Boolean enviarCorreu) { this.enviarCorreu = enviarCorreu; } @ManyToOne(optional=true) @JoinColumn(name="expedient_tipus_id") @ForeignKey(name="hel_exptipus_exemas_fk") public ExpedientTipus getExpedientTipus() { return expedientTipus; } public void setExpedientTipus(ExpedientTipus expedientTipus) { this.expedientTipus = expedientTipus; } @OneToMany(mappedBy="execucioMassiva", cascade=CascadeType.ALL) @OrderBy("ordre asc") public List<ExecucioMassivaExpedient> getExpedients() { return this.expedients; } public void setExpedients(List<ExecucioMassivaExpedient> expedients) { this.expedients = expedients; } public void addExpedient(ExecucioMassivaExpedient expedient) { getExpedients().add(expedient); } public void removeExpedient(ExecucioMassivaExpedient expedient) { getExpedients().remove(expedient); } @Column(name="entorn") public Long getEntorn() { return entorn; } public void setEntorn(Long entorn) { this.entorn = entorn; } @Column(name="rols") public String getRols() { return rols; } public void setRols(String rols) { this.rols = rols; } @Transient public Principal getAuthenticationPrincipal() { final String user = usuari; Principal principal = new Principal() { public String getName() { return user; } }; return principal; } @Transient public List<GrantedAuthority> getAuthenticationRoles() { List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); if (rols != null && !rols.isEmpty()) { for (String rol: rols.split(",")) { authorities.add(new SimpleGrantedAuthority(rol)); } } return authorities; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((dataInici == null) ? 0 : dataInici.hashCode()); result = prime * result + ((expedientTipus == null) ? 0 : expedientTipus.hashCode()); result = prime * result + ((tipus == null) ? 0 : tipus.hashCode()); result = prime * result + ((usuari == null) ? 0 : usuari.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; ExecucioMassiva other = (ExecucioMassiva) obj; if (dataInici == null) { if (other.dataInici != null) return false; } else if (!dataInici.equals(other.dataInici)) return false; if (expedientTipus == null) { if (other.expedientTipus != null) return false; } else if (!expedientTipus.equals(other.expedientTipus)) return false; if (tipus != other.tipus) return false; if (usuari == null) { if (other.usuari != null) return false; } else if (!usuari.equals(other.usuari)) return false; return true; } private static final long serialVersionUID = 1L; }