Subversion Repositories Integrator Subversion

Rev

Rev 639 | Rev 708 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.model;

import java.io.File;
import java.io.Serializable;
import java.util.Date;

import javax.faces.context.FacesContext;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.servlet.ServletContext;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.StringUtil;
import br.com.ec.domain.model.tipos.TipoSituacoesVigencia;
import br.com.ec.domain.shared.ConstantesSEC;

@Entity
@Table(name="sec_vigencia", schema="sc_sec")
public class Vigencia implements Serializable {

        private static final long serialVersionUID = 1L;

        private Long sequencial;
        private String descricao;
        private Date dataInicio;
        private Date dataFim;
       
        // SITUAÇÕES: PENDENTE, EM ANDAMENTO, FINALIZADA
        private String tipoSituacaoFolha; //tip_situacao_folha
       
        /*
        private String tipoSituacaoValeTransporte; //tip_situacao_valetransporte
        private String tipoSituacaoConciliacaoBancaria; //tip_situacao_conciliacaobancaria
        private String tipoSituacaoEscala; //tip_situacao_escala
        private String tipoSituacaoMetas; //tip_situacao_metas
        private String tipoSituacaoAvaliacoes; //tip_situacao_avaliacoes
        private String tipoSituacaoProvisaoFerias; //tip_situacao_provisaoferias
        private String tipoSituacaoNotasFiscais; //tip_situacao_notasfiscais
       
        private String tipoSituacaoConsolidacao; //tip_situacao_consolidacao
        */

       
        public Vigencia() {}
       
        public Vigencia(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        public Vigencia(Long sequencial, String descricao) {
                this.sequencial = sequencial;
                this.descricao = descricao;
        }
       
        @Id
        @SequenceGenerator(name = "sq_vigencia")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="seq_vigencia", nullable=false)
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        @Column(name="dsc_vigencia")
        @Size(max = 10, message = "Limite de caracteres ultrapassado: Vigência")
        @NotNull(message="Obrigatório informar a descrição", groups={Cadastrar.class, Alterar.class})
        @NotEmpty(message="Obrigatório informar a descrição", groups={Cadastrar.class, Alterar.class})
        public String getDescricao() {
                return descricao;
        }
        public void setDescricao(String descricao) {
                this.descricao = StringUtil.setarUpperCaseComTrim(descricao);
        }
       
        @Column(name="dth_inicio")
        @NotNull(message="Obrigatório informar a data de início", groups={Cadastrar.class, Alterar.class})
        public Date getDataInicio() {
                return dataInicio;
        }
        public void setDataInicio(Date dataInicio) {
                this.dataInicio = dataInicio;
        }
       
        @Column(name="dth_fim")
        @NotNull(message="Obrigatório informar a data de fim", groups={Cadastrar.class, Alterar.class})
        public Date getDataFim() {
                return dataFim;
        }
        public void setDataFim(Date dataFim) {
                this.dataFim = dataFim;
        }
       
        @Column(name="tip_situacao_folha")
        @NotNull(message="Obrigatório informar a situação da folha de pagamento", groups={Cadastrar.class, Alterar.class})
        public String getTipoSituacaoFolha() {
                return tipoSituacaoFolha;
        }
        public void setTipoSituacaoFolha(String tipoSituacaoFolha) {
                this.tipoSituacaoFolha = tipoSituacaoFolha;
        }
       
        @Transient
        public String descricaoSituacaoFolha() {
                return TipoSituacoesVigencia.parse(getTipoSituacaoFolha()).getDescricao();
        }
       
        @Transient
        public String corSituacaoFolha() {
                return TipoSituacoesVigencia.parse(getTipoSituacaoFolha()).getCor();
        }
       
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((sequencial == null) ? 0 : sequencial.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;
                Vigencia other = (Vigencia) obj;
                if (sequencial == null) {
                        if (other.sequencial != null)
                                return false;
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                return true;
        }

        /********************************************/
       
        @Transient
        public String caminhoPadraoImagens() {
                return ConstantesSEC.TESTE_EMISSAO_LOCAL? ConstantesSEC.Imagem.CAMINHO_PADRAO_LOCAL : ConstantesSEC.Imagem.CAMINHO_PADRAO_SERVIDOR;
        }
       
        @Transient
        public String caminhoPastaImagens() {
                ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
                return ConstantesSEC.TESTE_EMISSAO_LOCAL?
                                servletContext.getRealPath("") + File.separator + ConstantesSEC.Imagem.NOME_PASTA_PADRAO + File.separator :
                                servletContext.getRealPath("") + File.separator + ".." + File.separator + ConstantesSEC.Imagem.NOME_PASTA_PADRAO + File.separator;
        }
       
        @Transient
        public String imagemPromocoes() {
                return retornarImagemPngOuJpg("promocoes_");
        }
       
        @Transient
        public String imagemEscala() {
                return retornarImagemPngOuJpg("escala_");
        }
       
        @Transient
        public String imagemDestaques() {
                return retornarImagemPngOuJpg("destaques_");
        }
       
        private String retornarImagemPngOuJpg(String pasta) {
                File foto = new File(caminhoPastaImagens() + pasta + getSequencial() + ".jpg");
                if (foto.exists()) {
                        return caminhoPadraoImagens() + pasta + getSequencial() + ".jpg";
                }
                foto = new File(caminhoPastaImagens() + pasta + getSequencial() + ".jpeg");
                if (foto.exists()) {
                        return caminhoPadraoImagens() + pasta + getSequencial() + ".jpeg";
                }
                if (!foto.exists()) {
                        foto = new File(caminhoPastaImagens() + pasta + getSequencial() + ".png");
                }
                return foto.exists()? caminhoPadraoImagens() + pasta + getSequencial() + ".png" : caminhoPadraoImagens() + "SEM_IMAGEM.png";
        }
       
}