249 lines
7.4 KiB
Plaintext
Executable File
249 lines
7.4 KiB
Plaintext
Executable File
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.query.Filter;
|
||
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.TarmInspeccionArchivo;
|
||
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
|
||
|
||
/**
|
||
* Clase controladora del bean TarmInspeccionArchivo.
|
||
* Se reemplaza el archivo de inspeccion, se filtra por el codigo de solicitud
|
||
* @author C.P.
|
||
* @version 2.1
|
||
*/
|
||
@SuppressWarnings("serial")
|
||
@ManagedBean
|
||
@ViewScoped
|
||
public class InspeccionCambioArchivoController extends AbstractController<TarmInspeccionArchivo> {
|
||
|
||
public InspeccionCambioArchivoController() throws Exception {
|
||
super(TarmInspeccionArchivo.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 = "INSPECCIONARCHIVO";
|
||
} 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(getMfilelds().get("codigosolicitud")==null &&
|
||
getMfilelds().get("codigosolicitud").toString().trim().isEmpty()){
|
||
MessageHelper.setMessageError("Ingrese el c<>digo de solicitud");
|
||
return;
|
||
}
|
||
DtoQuery dto = super.getDtoQuery(true);
|
||
|
||
Filter filtroFinal = new Filter();
|
||
String sqlFinal = " t.cinspeccion in (select p.pk from TarmInspeccion p where p.csolicitud in "
|
||
+ "(select s.pk from TarmSolicitud s where s.numerosolicitud='"+getMfilelds().get("codigosolicitud").toString().trim()+"' )) ";
|
||
filtroFinal.setSql(sqlFinal);
|
||
dto.addFiltro(filtroFinal);
|
||
|
||
dto.setOrderby("t.cinspeccion");
|
||
|
||
HashMap<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
|
||
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<TarmInspeccionArchivo>();
|
||
MessageHelper.setMessageError(resp);
|
||
} else {
|
||
this.lrecord = (List<TarmInspeccionArchivo>) resp.get(this.beanalias);
|
||
for (TarmInspeccionArchivo item : lrecord) {
|
||
item.getModifiedData().put("codigosolicitud", getMfilelds().get("codigosolicitud").toString().trim());
|
||
}
|
||
super.postQuery(this.lrecord);
|
||
}
|
||
|
||
} catch (Throwable e) {
|
||
MessageHelper.setMessageError(e);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void save() {
|
||
try {
|
||
DtoSave dtosave = super.getDtoSave();
|
||
dtosave.setReturnpk(true);
|
||
HashMap<String, DtoSave> msave = new HashMap<String, DtoSave>();
|
||
|
||
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.getXpath());
|
||
if(uploadedFile!=null && uploadedFile.getFileName()!=null){
|
||
String nombreArchivo = uploadedFile.getFileName();
|
||
if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){
|
||
pathRuta=xPathLocation + "/cm:" + nombreArchivo;
|
||
record.setXpathoriginal(record.getXpath());
|
||
record.setXpath(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;
|
||
}
|
||
|
||
}
|