package br.com.ec.controller;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.FileUploadEvent;
import org.springframework.context.annotation.Scope;
import br.com.ec.controller.consultademanda.EstampaConsultaPorDemanda;
import br.com.ec.core.generic.GenericService;
import br.com.ec.domain.dto.EstampaDTO;
import br.com.ec.domain.dto.ImagemDTO;
import br.com.ec.domain.dto.TemaEstampaDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaEstampaDTO;
import br.com.ec.domain.model.Estampa;
import br.com.ec.domain.model.TemaEstampa;
import br.com.ec.domain.service.EstampaService;
import br.com.ec.domain.service.ImagemService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
import br.com.ec.web.util.TipoOperacao;
@Named
@Scope
("view")
public class EstampaBean
extends AbstractBean
<Estampa
> implements Serializable {
private static final long serialVersionUID = 1L
;
private EstampaDTO entidadeParaConsulta
;
private List<EstampaDTO
> estampas
;
private ParametrosConsultaEstampaDTO parametrosConsultaEstampaDTO
;
private EstampaConsultaPorDemanda lazy
;
private EstampaService estampaService
;
private ImagemService imagemService
;
@Inject
public EstampaBean
(EstampaConsultaPorDemanda lazy, EstampaService estampaService, ImagemService imagemService
) {
this.
lazy = lazy
;
this.
estampaService = estampaService
;
this.
imagemService = imagemService
;
}
@
Override
public void preCarregamento
() {
parametrosConsultaEstampaDTO =
new ParametrosConsultaEstampaDTO
();
prepararConsultaDemanda
();
limparEntidade
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new Estampa
());
getEntidade
().
setTemaEstampa(new TemaEstampa
(new Long(1)));
setEntidadeParaConsulta
(new EstampaDTO
());
}
@
Override
public GenericService
<Estampa
> getService
() {
return estampaService
;
}
@
Override
public Estampa getEntidade
() {
return entidade
;
}
@
Override
public void preConsultar
() {
setTipoOperacao
(TipoOperacao.
CONSULTAR);
}
@
Override
public Estampa getId
() {
return getEntidade
();
}
@
Override
public void cadastrar
(final Estampa entidade
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
modificarEntidadeAntesDaOperacao
();
getService
().
cadastrar(entidade
);
modificarEntidadeDepoisDaOperacao
();
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO
));
preAlterar
(entidade
);
}
});
}
/*********************************************************/
public EstampaDTO getEntidadeParaConsulta
() {
return entidadeParaConsulta
;
}
public void setEntidadeParaConsulta
(EstampaDTO entidadeParaConsulta
) {
this.
entidadeParaConsulta = entidadeParaConsulta
;
}
public List<EstampaDTO
> getEstampas
() {
return estampas
;
}
public void setEstampas
(List<EstampaDTO
> estampas
) {
this.
estampas = estampas
;
}
public ParametrosConsultaEstampaDTO getParametrosConsultaEstampaDTO
() {
return parametrosConsultaEstampaDTO
;
}
public void setParametrosConsultaEstampaDTO
(ParametrosConsultaEstampaDTO parametrosConsultaEstampaDTO
) {
this.
parametrosConsultaEstampaDTO = parametrosConsultaEstampaDTO
;
}
public EstampaConsultaPorDemanda getLazy
() {
return lazy
;
}
public void setLazy
(EstampaConsultaPorDemanda lazy
) {
this.
lazy = lazy
;
}
public void prepararConsultaDemanda
() {
lazy.
setarParametrosConsulta(getParametrosConsultaEstampaDTO
());
}
/*********************************************************/
public void prepararDetalhar
(TemaEstampaDTO temaEstampaDTO
) {
// super.preDetalhar(temaEstampaService.consultarPorId(new TemaEstampa(temaEstampaDTO.getSequencial())));
}
public void prepararAlterar
(TemaEstampaDTO temaEstampaDTO
) {
// super.preAlterar(temaEstampaService.consultarPorId(new TemaEstampa(temaEstampaDTO.getSequencial())));
}
private void consultarEstampas
() {
setEstampas
(estampaService.
consultarEstampas(getEntidadeParaConsulta
().
getTemaEstampa()));
}
public void uploadImagem
(final FileUploadEvent e
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
ImagemDTO imagemEnviada = imagemService.
uploadImagem(e.
getFile(), getEntidade
().
identificadorImagemEstampa(), imagemService.
caminhoPastaEstampas());
getEntidade
().
setExtensao(imagemEnviada.
getExtensao());
alterar
(getEntidade
());
LancadorMensagem.
lancarSucessoRedirecionandoTela("ESTAMPA ADICIONADA COM SUCESSO",
"/sistema/estampas/estampas.xhtml");
}
});
}
public String retornarCaminhoEstampa
(Estampa estampa
) {
return imagemService.
retornarCaminhoImagem(imagemService.
caminhoPastaEstampas(), imagemService.
caminhoPadraoEstampas(), estampa.
identificadorImagemEstampa(), estampa.
getExtensao());
}
}