/* * Copyright (C) 2012 AXIA Studio (http://www.axiastudio.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.axiastudio.suite.protocollo.entities; import com.axiastudio.pypapi.Register; import com.axiastudio.suite.SuiteUtil; import com.axiastudio.suite.base.entities.IUtente; import com.axiastudio.suite.base.entities.Ufficio; import com.axiastudio.suite.base.entities.Utente; import com.axiastudio.suite.generale.ITimeStamped; import com.axiastudio.suite.generale.TimeStampedListener; import com.axiastudio.suite.protocollo.ProfiloUtenteProtocollo; import com.axiastudio.suite.protocollo.ProtocolloListener; import javax.persistence.*; import java.io.Serializable; import java.util.Collection; import java.util.Date; /** * * @author Tiziano Lattisi <tiziano at axiastudio.it> */ @Entity @EntityListeners({ProtocolloListener.class, TimeStampedListener.class}) @Table(schema="PROTOCOLLO") @SequenceGenerator(name="genprotocollo", sequenceName="protocollo.protocollo_id_seq", initialValue=1, allocationSize=1) public class Protocollo implements Serializable, ITimeStamped { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="genprotocollo") private Long id; @Column(name="iddocumento", length=12, unique=true) private String iddocumento; @Column(name="dataprotocollo", insertable=false, updatable=false, columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date dataprotocollo; @Column(name="anno") private Integer anno; @Column(name="oggetto", length=1024) private String oggetto=""; @Column(name="note", length=1024) private String note=""; @Enumerated(EnumType.STRING) private TipoProtocollo tipo=TipoProtocollo.ENTRATA; @JoinColumn(name = "sportello", referencedColumnName = "id") @ManyToOne private Ufficio sportello; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<SoggettoProtocollo> soggettoProtocolloCollection; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<SoggettoRiservatoProtocollo> soggettoRiservatoProtocolloCollection; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<UfficioProtocollo> ufficioProtocolloCollection; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<Attribuzione> attribuzioneCollection; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<PraticaProtocollo> praticaProtocolloCollection; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<RiferimentoProtocollo> riferimentoProtocolloCollection; @OneToMany(mappedBy = "precedente", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<RiferimentoProtocollo> riferimentoProtocolloSuccessivoCollection; @OneToMany(mappedBy = "protocollo", orphanRemoval = true, cascade=CascadeType.ALL) private Collection<AnnullamentoProtocollo> annullamentoProtocolloCollection; @Column(name="annullato") private Boolean annullato=false; @Column(name="annullamentorichiesto") private Boolean annullamentorichiesto=false; @Column(name="richiederisposta") private Boolean richiederisposta=false; @Column(name="spedito") private Boolean spedito=false; @Column(name="dataspedizione") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date dataspedizione; @Column(name="esecutorespedizione", length=40) private String esecutorespedizione=""; @Column(name="riservato") private Boolean riservato=false; @Column(name="corrispostoostornato") private Boolean corrispostoostornato=false; @Enumerated(EnumType.STRING) private TipoRiferimentoMittente tiporiferimentomittente; @Column(name="riferimentomittente") private String riferimentomittente=""; @Column(name="datariferimentomittente") @Temporal(javax.persistence.TemporalType.DATE) private Date datariferimentomittente; @JoinColumn(name = "fascicolo", referencedColumnName = "id") @ManyToOne private Fascicolo fascicolo; @Column(name="convalidaattribuzioni") private Boolean convalidaattribuzioni=false; @Column(name="dataconvalidaattribuzioni") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date dataconvalidaattribuzioni; @Column(name="esecutoreconvalidaattribuzioni", length=40) private String esecutoreconvalidaattribuzioni=""; @Column(name="convalidaprotocollo") private Boolean convalidaprotocollo=false; @Column(name="dataconvalidaprotocollo") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date dataconvalidaprotocollo; @Column(name="esecutoreconvalidaprotocollo", length=40) private String esecutoreconvalidaprotocollo=""; @Column(name="numeroconvalidaprotocollo", length=10) private String numeroconvalidaprotocollo=""; @Column(name="consolidadocumenti") private Boolean consolidadocumenti=false; @Column(name="dataconsolidadocumenti") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date dataconsolidadocumenti; @Column(name="esecutoreconsolidadocumenti", length=40) private String esecutoreconsolidadocumenti=""; @Column(name="controlloreposta", length=40) private String controlloreposta=""; @Column(name="numeroatto") private Integer numeroatto; @Column(name="dataatto") @Temporal(TemporalType.DATE) private Date dataatto; /* timestamped */ @Column(name="rec_creato", insertable=false, updatable=false, columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date recordcreato; @Column(name="rec_creato_da") private String recordcreatoda; @Column(name="rec_modificato") @Temporal(javax.persistence.TemporalType.TIMESTAMP) private Date recordmodificato; @Column(name="rec_modificato_da") private String recordmodificatoda; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getIddocumento() { return iddocumento; } public void setIddocumento(String iddocumento) { this.iddocumento = iddocumento; } public Date getDataprotocollo() { return dataprotocollo; } public void setDataprotocollo(Date dataprotocollo) { this.dataprotocollo = dataprotocollo; } public Integer getAnno() { return anno; } public void setAnno(Integer anno) { this.anno = anno; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } public String getOggetto() { return oggetto; } public void setOggetto(String oggetto) { this.oggetto = oggetto; } public String getOggettop() { Utente autenticato = (Utente) Register.queryUtility(IUtente.class); ProfiloUtenteProtocollo profilo = new ProfiloUtenteProtocollo(this, autenticato); if( !profilo.inSportelloOAttribuzione() ){ return "RISERVATO"; } return this.getOggetto(); } public void setOggettop(String oggetto) { /* nulla da fare */ } public String getNotep() { Utente autenticato = (Utente) Register.queryUtility(IUtente.class); ProfiloUtenteProtocollo profilo = new ProfiloUtenteProtocollo(this, autenticato); if( !profilo.inSportelloOAttribuzione() ){ return "RISERVATO"; } return this.getNote(); } public void setNotep(String note) { /* nulla da fare */ } public TipoProtocollo getTipo() { return tipo; } public void setTipo(TipoProtocollo tipo) { this.tipo = tipo; } public Ufficio getSportello() { return sportello; } public void setSportello(Ufficio sportello) { this.sportello = sportello; } public Collection<Attribuzione> getAttribuzioneCollection() { return attribuzioneCollection; } public void setAttribuzioneCollection(Collection<Attribuzione> attribuzioneprotocolloCollection) { this.attribuzioneCollection = attribuzioneprotocolloCollection; } public Boolean getAnnullamentorichiesto() { return annullamentorichiesto; } public void setAnnullamentorichiesto(Boolean annullamentorichiesto) { this.annullamentorichiesto = annullamentorichiesto; } public Boolean getAnnullato() { return annullato; } public void setAnnullato(Boolean annullato) { this.annullato = annullato; } public Boolean getCorrispostoostornato() { return corrispostoostornato; } public void setCorrispostoostornato(Boolean corrispostoostornato) { this.corrispostoostornato = corrispostoostornato; } public Boolean getRichiederisposta() { return richiederisposta; } public void setRichiederisposta(Boolean richiederisposta) { this.richiederisposta = richiederisposta; } public Boolean getRiservato() { return riservato; } public void setRiservato(Boolean riservato) { this.riservato = riservato; } public Boolean getSpedito() { return spedito; } public void setSpedito(Boolean spedito) { this.spedito = spedito; } public TipoRiferimentoMittente getTiporiferimentomittente() { return tiporiferimentomittente; } public void setTiporiferimentomittente(TipoRiferimentoMittente tiporiferimentomittente) { this.tiporiferimentomittente = tiporiferimentomittente; } public Collection<SoggettoProtocollo> getSoggettoProtocolloCollection() { return soggettoProtocolloCollection; } public void setSoggettoProtocolloCollection(Collection<SoggettoProtocollo> soggettoProtocolloCollection) { this.soggettoProtocolloCollection = soggettoProtocolloCollection; } public Collection<SoggettoRiservatoProtocollo> getSoggettoRiservatoProtocolloCollection() { return soggettoRiservatoProtocolloCollection; } public void setSoggettoRiservatoProtocolloCollection(Collection<SoggettoRiservatoProtocollo> soggettoRiservatoProtocolloCollection) { this.soggettoRiservatoProtocolloCollection = soggettoRiservatoProtocolloCollection; } public Collection<UfficioProtocollo> getUfficioProtocolloCollection() { return ufficioProtocolloCollection; } public void setUfficioProtocolloCollection(Collection<UfficioProtocollo> ufficioProtocolloCollection) { this.ufficioProtocolloCollection = ufficioProtocolloCollection; } public Collection<PraticaProtocollo> getPraticaProtocolloCollection() { return praticaProtocolloCollection; } public void setPraticaProtocolloCollection(Collection<PraticaProtocollo> praticaProtocolloCollection) { this.praticaProtocolloCollection = praticaProtocolloCollection; } public Collection<RiferimentoProtocollo> getRiferimentoProtocolloCollection() { return riferimentoProtocolloCollection; } public void setRiferimentoProtocolloCollection(Collection<RiferimentoProtocollo> riferimentoProtocolloCollection) { this.riferimentoProtocolloCollection = riferimentoProtocolloCollection; } public Collection<RiferimentoProtocollo> getRiferimentoProtocolloSuccessivoCollection() { return riferimentoProtocolloSuccessivoCollection; } public void setRiferimentoProtocolloSuccessivoCollection(Collection<RiferimentoProtocollo> riferimentoProtocolloSuccessivoCollection) { this.riferimentoProtocolloSuccessivoCollection = riferimentoProtocolloSuccessivoCollection; } public Collection<AnnullamentoProtocollo> getAnnullamentoProtocolloCollection() { return annullamentoProtocolloCollection; } public void setAnnullamentoProtocolloCollection(Collection<AnnullamentoProtocollo> annullamentoProtocolloCollection) { this.annullamentoProtocolloCollection = annullamentoProtocolloCollection; } public Date getDatariferimentomittente() { return datariferimentomittente; } public void setDatariferimentomittente(Date datariferimentomittente) { this.datariferimentomittente = datariferimentomittente; } public String getRiferimentomittente() { return riferimentomittente; } public void setRiferimentomittente(String riferimentomittente) { this.riferimentomittente = riferimentomittente; } public Boolean getConvalidaattribuzioni() { return convalidaattribuzioni; } public void setConvalidaattribuzioni(Boolean convalidaattribuzioni) { this.convalidaattribuzioni = convalidaattribuzioni; } public Boolean getConvalidaprotocollo() { return convalidaprotocollo; } public void setConvalidaprotocollo(Boolean convalidaprotocollo) { this.convalidaprotocollo = convalidaprotocollo; } public Date getDataconvalidaprotocollo() { return dataconvalidaprotocollo; } public void setDataconvalidaprotocollo(Date dataconvalida) { this.dataconvalidaprotocollo = dataconvalida; } public Boolean getConsolidadocumenti() { return consolidadocumenti; } public void setConsolidadocumenti(Boolean consolidadocumenti) { this.consolidadocumenti = consolidadocumenti; } public Fascicolo getFascicolo() { return fascicolo; } public void setFascicolo(Fascicolo fascicolo) { this.fascicolo = fascicolo; } public Date getDataspedizione() { return dataspedizione; } public void setDataspedizione(Date dataspedizione) { this.dataspedizione = dataspedizione; } public String getEsecutorespedizione() { return esecutorespedizione; } public void setEsecutorespedizione(String esecutorespedizione) { this.esecutorespedizione = esecutorespedizione; } public Date getDataconvalidaattribuzioni() { return dataconvalidaattribuzioni; } public void setDataconvalidaattribuzioni(Date dataconvalidaattribuzioni) { this.dataconvalidaattribuzioni = dataconvalidaattribuzioni; } public String getEsecutoreconvalidaattribuzioni() { return esecutoreconvalidaattribuzioni; } public void setEsecutoreconvalidaattribuzioni(String esecutoreconvalidaattribuzioni) { this.esecutoreconvalidaattribuzioni = esecutoreconvalidaattribuzioni; } public String getEsecutoreconvalidaprotocollo() { return esecutoreconvalidaprotocollo; } public void setEsecutoreconvalidaprotocollo(String esecutoreconvalidaprotocollo) { this.esecutoreconvalidaprotocollo = esecutoreconvalidaprotocollo; } public Date getDataconsolidadocumenti() { return dataconsolidadocumenti; } public void setDataconsolidadocumenti(Date dataconsolidadocumenti) { this.dataconsolidadocumenti = dataconsolidadocumenti; } public String getEsecutoreconsolidadocumenti() { return esecutoreconsolidadocumenti; } public void setEsecutoreconsolidadocumenti(String esecutoreconsolidadocumenti) { this.esecutoreconsolidadocumenti = esecutoreconsolidadocumenti; } public String getNumeroconvalidaprotocollo() { return numeroconvalidaprotocollo; } public void setNumeroconvalidaprotocollo(String numeroconvalidaprotocollo) { this.numeroconvalidaprotocollo = numeroconvalidaprotocollo; } public String getControlloreposta() { return controlloreposta; } public void setControlloreposta(String controlloreposta) { this.controlloreposta = controlloreposta; } public Integer getNumeroatto() { return numeroatto; } public void setNumeroatto(Integer numeroatto) { this.numeroatto = numeroatto; } public Date getDataatto() { return dataatto; } public void setDataatto(Date dataatto) { this.dataatto = dataatto; } @Override public Date getRecordcreato() { return recordcreato; } public void setRecordcreato(Date recordcreato) { this.recordcreato = recordcreato; } @Override public Date getRecordmodificato() { return recordmodificato; } public void setRecordmodificato(Date recordmodificato) { this.recordmodificato = recordmodificato; } @Override public String getRecordcreatoda() { return recordcreatoda; } public void setRecordcreatoda(String recordcreatoda) { this.recordcreatoda = recordcreatoda; } @Override public String getRecordmodificatoda() { return recordmodificatoda; } public void setRecordmodificatoda(String recordmodificatoda) { this.recordmodificatoda = recordmodificatoda; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Protocollo)) { return false; } Protocollo other = (Protocollo) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return this.tipo.toString().substring(0, 1) + " " + this.iddocumento + " (" + SuiteUtil.DATETIME_FORMAT.format(this.dataprotocollo) + ") " + this.getOggettop(); } }