package br.com.ec.domain.service.impl;
import java.io.File;
import java.io.FileOutputStream;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import org.primefaces.model.file.UploadedFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.ArquivoUtil;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.dto.ImagemDTO;
import br.com.ec.domain.service.ImagemService;
import br.com.ec.domain.shared.ConstantesSEC;
@Service
public class ImagemServiceImpl
extends AbstractService
<ImagemDTO
> implements ImagemService
{
@Autowired
public ImagemServiceImpl
(Validador validador
) {
super(validador
);
}
@
Override
protected GenericRepository
<ImagemDTO
> getRepository
() {
return null;
}
@
Override
public String caminhoPadraoFotos
() {
return ConstantesSEC.
TESTE_EMISSAO_LOCAL? ConstantesSEC.
Foto.
CAMINHO_PADRAO_LOCAL : ConstantesSEC.
Foto.
CAMINHO_PADRAO_SERVIDOR;
}
@
Override
public String caminhoPastaFotos
() {
ServletContext servletContext =
(ServletContext
) FacesContext.
getCurrentInstance().
getExternalContext().
getContext();
return ConstantesSEC.
TESTE_EMISSAO_LOCAL?
servletContext.
getRealPath("") +
File.
separator + ConstantesSEC.
Foto.
NOME_PASTA_PADRAO +
File.
separator :
servletContext.
getRealPath("") +
File.
separator +
".." +
File.
separator + ConstantesSEC.
Foto.
NOME_PASTA_PADRAO +
File.
separator;
}
@
Override
public String caminhoPadraoImagens
() {
return ConstantesSEC.
TESTE_EMISSAO_LOCAL? ConstantesSEC.
Imagem.
CAMINHO_PADRAO_LOCAL : ConstantesSEC.
Imagem.
CAMINHO_PADRAO_SERVIDOR;
}
@
Override
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;
}
@
Override
public String caminhoPadraoEstampas
() {
return ConstantesSEC.
TESTE_EMISSAO_LOCAL? ConstantesSEC.
Estampa.
CAMINHO_PADRAO_LOCAL : ConstantesSEC.
Estampa.
CAMINHO_PADRAO_SERVIDOR;
}
@
Override
public String caminhoPastaEstampas
() {
ServletContext servletContext =
(ServletContext
) FacesContext.
getCurrentInstance().
getExternalContext().
getContext();
return ConstantesSEC.
TESTE_EMISSAO_LOCAL?
servletContext.
getRealPath("") +
File.
separator + ConstantesSEC.
Estampa.
NOME_PASTA_PADRAO +
File.
separator :
servletContext.
getRealPath("") +
File.
separator +
".." +
File.
separator + ConstantesSEC.
Estampa.
NOME_PASTA_PADRAO +
File.
separator;
}
/*****************************************/
@
Override
public String retornarCaminhoImagem
(String pasta,
String pastaPadrao,
String nomeArquivo,
String extensaoArquivo
) {
File foto =
new File(pasta + nomeArquivo +
"." + StringUtil.
setarLowerCase(extensaoArquivo
));
return foto.
exists()? pastaPadrao + nomeArquivo +
"." + StringUtil.
setarLowerCase(extensaoArquivo
) : pastaPadrao +
"SEM_IMAGEM.png";
}
@
Override
public ImagemDTO uploadImagem
(UploadedFile e,
String nomeArquivo,
String caminhoPasta
) {
ImagemDTO imagemAdicionada = gerarArquivo
(e, nomeArquivo
);
uploadFisico
(imagemAdicionada, caminhoPasta
);
// lancarExcecaoCasoArquivoExcedeuLimite(imagemAdicionada);
// imagemAdicionada.compactarImagem();
// imagemAdicionada.converterPngParaJpg();
return imagemAdicionada
;
}
public ImagemDTO gerarArquivo
(UploadedFile file,
String nomeArquivo
) {
ImagemDTO arquivo =
new ImagemDTO
();
arquivo.
setArquivo(file.
getContent());
arquivo.
setDescricao(nomeArquivo
);
arquivo.
setExtensao(ArquivoUtil.
retornarExtensaoDoArquivo(file.
getFileName()));
return arquivo
;
}
public void uploadFisico
(ImagemDTO arquivoParaUpload,
String caminhoPasta
) {
String caminho = caminhoPasta + arquivoParaUpload.
getDescricao() +
"." + arquivoParaUpload.
getExtensao();
FileOutputStream fos
;
try {
fos =
new FileOutputStream(caminho
);
fos.
write(arquivoParaUpload.
getArquivo());
fos.
close();
} catch (Exception e1
) {
e1.
printStackTrace();
}
}
}