package br.com.centralit.citcorpore.negocio;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
import br.com.centralit.citcorpore.bean.InfoCatalogoServicoDTO;
import br.com.centralit.citcorpore.bean.UploadDTO;
import br.com.centralit.citcorpore.integracao.InfoCatalogoServicoDao;
import br.com.centralit.citcorpore.util.CriptoUtils;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.Util;
import br.com.centralit.citged.bean.ControleGEDDTO;
import br.com.centralit.citged.integracao.ControleGEDDao;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilStrings;
public class InfoCatalogoServicoServiceEjb extends CrudServiceImpl implements InfoCatalogoServicoService {
private InfoCatalogoServicoDao dao;
@Override
protected InfoCatalogoServicoDao getDao() {
if (dao == null) {
dao = new InfoCatalogoServicoDao();
}
return dao;
}
@Override
public Collection<InfoCatalogoServicoDTO> findByCatalogoServico(final Integer idCatalogoServico) throws ServiceException, Exception {
return this.getDao().findByCatalogoServico(idCatalogoServico);
}
@Override
public boolean findByContratoServico(final Integer idContratoServico) throws ServiceException, Exception {
return this.getDao().findByContratoServico(idContratoServico);
}
@Override
public InfoCatalogoServicoDTO findById(final Integer idInfoCatalogo) throws ServiceException, Exception {
return this.getDao().findById(idInfoCatalogo);
}
@Override
public void gravaInformacoesGED(final Collection colArquivosUpload, final Integer idEmpresa, final InfoCatalogoServicoDTO infoCatalogoServicoDTO, final TransactionControler tc)
throws Exception {
// Setando a transaction no GED
final ControleGEDDao controleGEDDao = new ControleGEDDao();
if (tc != null) {
controleGEDDao.setTransactionControler(tc);
}
String PRONTUARIO_GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedDiretorio, "");
if (PRONTUARIO_GED_DIRETORIO == null || PRONTUARIO_GED_DIRETORIO.trim().equalsIgnoreCase("")) {
PRONTUARIO_GED_DIRETORIO = "";
}
if (PRONTUARIO_GED_DIRETORIO.equalsIgnoreCase("")) {
PRONTUARIO_GED_DIRETORIO = Constantes.getValue("DIRETORIO_GED");
}
if (PRONTUARIO_GED_DIRETORIO == null || PRONTUARIO_GED_DIRETORIO.equalsIgnoreCase("")) {
PRONTUARIO_GED_DIRETORIO = "/ged";
}
String PRONTUARIO_GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno, "S");
if (PRONTUARIO_GED_INTERNO == null) {
PRONTUARIO_GED_INTERNO = "S";
}
String prontuarioGedInternoBancoDados = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInternoBD, "N");
if (!UtilStrings.isNotVazio(prontuarioGedInternoBancoDados)) {
prontuarioGedInternoBancoDados = "N";
}
String pasta = "";
if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) {
pasta = controleGEDDao.getProximaPastaArmazenar();
File fileDir = new File(PRONTUARIO_GED_DIRETORIO);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
}
for (final Iterator it = colArquivosUpload.iterator(); it.hasNext();) {
final UploadDTO uploadDTO = (UploadDTO) it.next();
ControleGEDDTO controleGEDDTO = new ControleGEDDTO();
controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_SOLICITACAOSERVICO);
controleGEDDTO.setId(infoCatalogoServicoDTO.getIdInfoCatalogoServico());
controleGEDDTO.setDataHora(UtilDatas.getDataAtual());
controleGEDDTO.setDescricaoArquivo(uploadDTO.getDescricao());
controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDTO.getNameFile()));
controleGEDDTO.setPasta(pasta);
controleGEDDTO.setNomeArquivo(uploadDTO.getNameFile());
if (!uploadDTO.getTemporario().equalsIgnoreCase("S")) { // Se nao //
// for //
// temporario
continue;
}
if (PRONTUARIO_GED_INTERNO.trim().equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados.trim())) { // Se
// utiliza
// GED
// interno e eh BD
controleGEDDTO.setPathArquivo(uploadDTO.getPath()); // Isso vai
// fazer a
// gravacao
// no BD.
// dento do
// create
// abaixo.
} else {
controleGEDDTO.setPathArquivo(null);
}
controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO);
if (controleGEDDTO != null) {
uploadDTO.setIdControleGED(controleGEDDTO.getIdControleGED());
}
if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { // Se
// utiliza
// GED
// interno e nao eh BD
if (controleGEDDTO != null) {
try {
final File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "."
+ Util.getFileExtension(uploadDTO.getNameFile()));
CriptoUtils.encryptFile(uploadDTO.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged",
System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA"));
arquivo.delete();
} catch (final Exception e) {
}
}
} /*
* else if (!PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) { // Se // utiliza // GED // externo // FALTA IMPLEMENTAR!!! }
*/
}
}
}