69 lines
2.7 KiB
Plaintext
Executable File
69 lines
2.7 KiB
Plaintext
Executable File
package com.fp.firmas.rules.save;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.StandardCopyOption;
|
|
import java.util.List;
|
|
|
|
import com.fp.dto.rules.TransactionRule;
|
|
import com.fp.dto.save.SaveRequest;
|
|
import com.fp.firmas.rules.common.resources.FirmMessages;
|
|
import com.fp.persistence.commondb.PersistenceHelper;
|
|
import com.fp.persistence.commondb.exception.CommondbException;
|
|
import com.fp.persistence.pfirmas.param.TfirmCertificado;
|
|
import com.fp.persistence.pgeneral.gene.TgeneParameters;
|
|
import com.fp.persistence.pgeneral.gene.TgeneParametersKey;
|
|
|
|
/**
|
|
* Clase que completa la información acerca de los certificados dentro del repositorio de certificados
|
|
*
|
|
* @author dcruz
|
|
*
|
|
*/
|
|
public class CertificadoFirma extends TransactionRule{
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
@Override
|
|
public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
|
|
|
|
List<Object> firmCertificados = pSaveRequest.getSaveBeanModifiedRecords("USUARIOCERTIFICADOS");
|
|
String path = (String)pSaveRequest.get("path");
|
|
for (Object object : firmCertificados) {
|
|
if(object instanceof TfirmCertificado){
|
|
TfirmCertificado certificado = (TfirmCertificado)object;
|
|
guardarCertficadoRepositorio(certificado, path);
|
|
}
|
|
}
|
|
return pSaveRequest;
|
|
}
|
|
|
|
@Override
|
|
public SaveRequest reverseProcess(SaveRequest pSaveRequest)
|
|
throws Exception {
|
|
return pSaveRequest;
|
|
}
|
|
|
|
private void guardarCertficadoRepositorio(TfirmCertificado certificado, String pathCertificado) throws CommondbException, Exception{
|
|
// String path = getPath(certificado);//obtiene la ruta a grabar el certificado
|
|
// String path = FirmMessages.getString("dir.ruta.base.repositorio") + "/" + certificado.getPk().getIdcertificado();//cambiar por el parametro en la base
|
|
String path = pathCertificado + "/" + certificado.getPk().getIdcertificado();
|
|
if(!Files.exists(Paths.get(path))){
|
|
Files.createFile(Paths.get(path));
|
|
Files.copy(new ByteArrayInputStream((byte[])certificado.modifiedData.get("valor_certificado_bin")), Paths.get(path));
|
|
}else{
|
|
Files.copy(new ByteArrayInputStream((byte[])certificado.modifiedData.get("valor_certificado_bin")), Paths.get(path), StandardCopyOption.REPLACE_EXISTING);
|
|
}
|
|
|
|
}
|
|
|
|
private String getPath(TfirmCertificado certificado) throws CommondbException, Exception {
|
|
TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("PATH_CERTIFICADO_BCE", 1);
|
|
TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), tgeneParametersKey);
|
|
String path = tgeneParameters.getTextvalue() + "/" + certificado.getPk().getIdcertificado();
|
|
return path;
|
|
}
|
|
|
|
}
|