Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.gov.al.saude.scs.model;
2
 
3
import static br.gov.al.saude.scs.constantes.ContantesScs.MensagensContantes.MSG_ERRO_OBRIGATORIO_INFORMAR_AH_DATA_EH_HORA;
4
import static br.gov.al.saude.scs.constantes.ContantesScs.MensagensContantes.MSG_OBRIGATORIO_INFORMAR_AH_TURMA;
5
 
6
import java.io.Serializable;
7
import java.util.ArrayList;
8
import java.util.Collections;
9
import java.util.Comparator;
10
import java.util.Date;
11
import java.util.List;
12
import java.util.Set;
13
 
14
import javax.persistence.CascadeType;
15
import javax.persistence.Column;
16
import javax.persistence.Entity;
17
import javax.persistence.GeneratedValue;
18
import javax.persistence.GenerationType;
19
import javax.persistence.Id;
20
import javax.persistence.JoinColumn;
21
import javax.persistence.ManyToOne;
22
import javax.persistence.OneToMany;
23
import javax.persistence.SequenceGenerator;
24
import javax.persistence.Table;
25
import javax.persistence.Temporal;
26
import javax.persistence.TemporalType;
27
import javax.persistence.Transient;
28
import javax.validation.Valid;
29
import javax.validation.constraints.NotNull;
30
 
31
import org.hibernate.annotations.ForeignKey;
32
 
33
import br.gov.al.saude.framework.core.generic.identidade.Identidade;
34
import br.gov.al.saude.framework.core.interfaces.Alterar;
35
import br.gov.al.saude.framework.core.interfaces.Cadastrar;
36
import br.gov.al.saude.framework.core.util.VerificadorUtil;
37
 
38
@Entity
39
@Table(name = "scs_frequencia", schema = "sc_scs")
40
public class Frequencia implements Serializable, Identidade {
41
 
42
        private static final long serialVersionUID = 1L;
43
 
44
        private Long sequencial;
45
        private Turma turma;
46
        private Date data;
47
        private Boolean indicadorValidado;
48
        private Boolean indicadorAtivo;
49
        private Set<Presenca> presencas;
50
 
51
        @Id
52
        @GeneratedValue(generator="frequencia_generator", strategy=GenerationType.SEQUENCE)
53
        @SequenceGenerator(name="frequencia_generator", sequenceName="sq_frequencia", initialValue = 1, allocationSize = 1, schema="sc_scs")
54
        @Column(name="seq_frequencia", nullable=false)
55
        public Long getSequencial() {
56
                return sequencial;
57
        }
58
        public void setSequencial(Long sequencial) {
59
                this.sequencial = sequencial;
60
        }
61
 
62
        @ManyToOne
63
        @ForeignKey(name = "fk_frequencia_turma")
64
        @JoinColumn(name = "seq_turma", referencedColumnName = "seq_turma", nullable = false)
65
        @NotNull(message=MSG_OBRIGATORIO_INFORMAR_AH_TURMA, groups={Cadastrar.class, Alterar.class})
66
        public Turma getTurma() {
67
                return turma;
68
        }
69
 
70
        public void setTurma(Turma turma) {
71
                this.turma = turma;
72
        }
73
 
74
        @Transient
75
        public Long getSequencialTurma() {
76
                return VerificadorUtil.naoEstaNulo(getTurma()) ? getTurma().getSequencial() : null;
77
        }
78
 
79
        @Transient
80
        public Object getDescricaoCapacitacao() {
81
                return VerificadorUtil.naoEstaNulo(getSequencialTurma()) ?
82
                           VerificadorUtil.naoEstaNulo(getTurma().getCapacitacao()) ?
83
                           getTurma().getCapacitacao().getDescricao() : null : null;
84
        }
85
 
86
        @Temporal(TemporalType.TIMESTAMP)
87
        @Column(name="dth_data", nullable = false)
88
        @NotNull(message=MSG_ERRO_OBRIGATORIO_INFORMAR_AH_DATA_EH_HORA, groups={Cadastrar.class, Alterar.class})
89
        public Date getData() {
90
                return data;
91
        }
92
 
93
        public void setData(Date data) {
94
                this.data = data;
95
        }
96
 
97
        @Column(name="ind_validado")
98
        public Boolean getIndicadorValidado() {
99
                return VerificadorUtil.naoEstaNulo(indicadorValidado) ? indicadorValidado : false;
100
        }
101
 
102
        public void setIndicadorValidado(Boolean indicadorValidado) {
103
                this.indicadorValidado = indicadorValidado;
104
        }
105
 
106
        @Transient
107
        public String getDescricaoIndicadorValidado(){
108
                return VerificadorUtil.naoEstaNulo(getIndicadorValidado()) ? getIndicadorValidado() ? "Sim" : "Não" : null;
109
        }
110
 
111
        @Column(name="ind_ativo", nullable = false)
112
        public Boolean getIndicadorAtivo() {
113
                return VerificadorUtil.naoEstaNulo(indicadorAtivo) ? indicadorAtivo : false;
114
        }
115
 
116
        public void setIndicadorAtivo(Boolean indicadorAtivo) {
117
                this.indicadorAtivo = indicadorAtivo;
118
        }
119
 
120
        @Transient
121
        public String getDescricaoIndicadorAtivo(){
122
                return VerificadorUtil.naoEstaNulo(getIndicadorAtivo()) ? getIndicadorAtivo() ? "Sim" : "Não" : null;
123
        }
124
 
125
        @Valid
126
        @OneToMany(mappedBy="frequencia", cascade=CascadeType.ALL, orphanRemoval=true)
127
        public Set<Presenca> getPresencas() {
128
                return presencas;
129
        }
130
 
131
        @Transient
132
        public List<Presenca> getPresencasAsListOrdenadaPorNomeParticipante(){
133
                List<Presenca> listaOrdenada = null;
134
                if(VerificadorUtil.naoEstaNulo(getPresencas())){
135
                        listaOrdenada = new ArrayList<Presenca>(getPresencas());
136
                        Collections.sort(listaOrdenada, new Comparator<Presenca>() {
137
                                @Override
138
                                public int compare(Presenca presenca, Presenca outraPresenca) {
139
                                        return presenca.getTurmaParticipante().getPessoa().getNomePessoa().compareTo(outraPresenca.getTurmaParticipante().getPessoa().getNomePessoa());
140
                                }
141
                        });
142
                }
143
                return listaOrdenada;
144
        }
145
 
146
        public void setPresencas(Set<Presenca> presencas) {
147
                this.presencas = presencas;
148
        }
149
 
150
        @Override
151
        @Transient
152
        public Object getId() {
153
                return sequencial;
154
        }
155
 
156
        @Override
157
        public void setId(Object id) {
158
                this.sequencial = (Long) id;
159
        }
160
 
161
        @Override
162
        public int hashCode() {
163
                final int prime = 31;
164
                int result = 1;
165
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
166
                return result;
167
        }
168
 
169
        @Override
170
        public boolean equals(Object obj) {
171
                if (this == obj)
172
                        return true;
173
                if (obj == null)
174
                        return false;
175
                if (getClass() != obj.getClass())
176
                        return false;
177
                Frequencia other = (Frequencia) obj;
178
                if (sequencial == null) {
179
                        if (other.sequencial != null)
180
                                return false;
181
                } else if (!sequencial.equals(other.sequencial))
182
                        return false;
183
                return true;
184
        }
185
 
186
}