package com.fp.frontend.controller.armas.solicitud; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import org.primefaces.event.FileUploadEvent; import org.primefaces.model.UploadedFile; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.alfresco.AlfrescoController; import com.fp.frontend.helper.MessageHelper; import com.fp.persistence.parmas.soli.TarmSolicitudTramite; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Clase controladora del bean TarmSolicitudTramite. * Se reemplaza el archivo de deposito, se filtra por el codigo de solicitud * @author C.P. * @version 2.1 */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class SolicitudCambioDepositoController extends AbstractController { public SolicitudCambioDepositoController() throws Exception { super(TarmSolicitudTramite.class); } /** * Variable que nos permite cargar el documento al Alfresco */ private UploadedFile uploadedFile; @ManagedProperty(value = "#{alfrescoController}") private AlfrescoController alfrescoController; @PostConstruct private void postconstruct() { this.init(); // Inicializa autoconsulta super.startQuery(); } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. */ private void init() { try { this.recperpage = 15; // Cambiar al # reg a mirar. this.lrecord = new ArrayList<>(); this.beanalias = "SOLICITUDDEPOSITO"; } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. * * @throws Exception */ @Override public void create() throws Exception { super.create(); } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { if(getMfilters().get("numerotramite")==null && getMfilters().get("numerotramite").toString().trim().isEmpty()){ MessageHelper.setMessageError("Ingrese el código de solicitud"); return; } DtoQuery dto = super.getDtoQuery(true); dto.setOrderby("t.pk"); HashMap mtables = new HashMap(); mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. Request request = this.callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { this.lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { this.lrecord = (List) resp.get(this.beanalias); super.postQuery(this.lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void save() { try { DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); HashMap msave = new HashMap(); Request request = this.callerhelper.getRequest(); msave.put(this.beanalias, dtosave); request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void update(){ try { String pathRuta=""; String xPathLocation= getRutaDocumentoSolBase(record.getXpathcomprobante()); if(uploadedFile!=null && uploadedFile.getFileName()!=null){ String nombreArchivo = uploadedFile.getFileName(); if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ pathRuta=xPathLocation + "/cm:" + nombreArchivo; record.setXpathcomprobanteorignal(record.getXpathcomprobante()); record.setXpathcomprobante(pathRuta); TsafeUserDetail userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); record.setUsuariocambio(userDetail.getNickname()); super.update(); }else{ MessageHelper.setMessageError("Adjunte el documento"); return; } }else{ MessageHelper.setMessageError("Adjunte el documento"); return; } save(); } catch (Exception e) { e.printStackTrace(); } } /** * Retorna la ruta base donde se almacenara dicho archivo * * @return */ public String getRutaDocumentoSolBase(String xpath) { int index = xpath.lastIndexOf('/'); xpath = xpath.substring(0,index); xpath = xpath+"/cm:Cambio"; System.out.println(xpath); return xpath; } /** * Metodo que retorna la extencion del documento que se desea subir al alfresco */ public String getNombre(String ruta) { int index = ruta.lastIndexOf('/'); if (index == -1) { return "cambiodocumento.jpg"; } else { return (ruta.substring(index + 1)).replace("cm:", ""); } } /** * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco */ public void handleUpload(FileUploadEvent event){ uploadedFile = event.getFile(); } /** * Recorta el nombre del archivo a cargarse * @param nombre * @return nombre recortado */ public String recorteNombre(String nombre){ String fielname=nombre; if(fielname.length()>30){ fielname=fielname.substring(0,30)+extencionArchivo(nombre); } return fielname; } /** * Obtiene la extencion del archivo a cargar * @param nombre * @return */ private String extencionArchivo(String nombre){ int pos=nombre.lastIndexOf('.'); nombre=nombre.substring(pos); return nombre; } public UploadedFile getUploadedFile() { return uploadedFile; } public void setUploadedFile(UploadedFile uploadedFile) { this.uploadedFile = uploadedFile; } public AlfrescoController getAlfrescoController() { return alfrescoController; } public void setAlfrescoController(AlfrescoController alfrescoController) { this.alfrescoController = alfrescoController; } }