package com.fp.frontend.controller.armas.parametros; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import org.primefaces.event.SelectEvent; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.SubQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.persistence.parmas.param.TarmUnidadTipo; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; /** * Clase controladora del bean TarmUnidTipo. * * @author C.P. * @version 2 */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class UnidadTipoController extends AbstractController { /** * catalogo de las unidades */ private List lunidades; /** * atributo para la descripcion de la clase del arma */ private String descripcionClase; /** * atributo para la descripcion del tipo del arma */ private String descripcionTipoArma; public UnidadTipoController() throws Exception { super(TarmUnidadTipo.class); } @PostConstruct private void postconstruct() { this.init(); lunidades=CatalogDetailController.find("UNIDADMEDIDA"); // 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 = "UNIDTIPO"; } catch (Exception e) { MessageHelper.setMessageError(e); } } @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { DtoQuery dto = super.getDtoQuery(true); // dto.setOrderby("t.description"); SubQuery sclasearma= new SubQuery ("TgeneCatalogDetail", "description", "desclasearma", "i.pk.catalog = t.pk.clase and i.pk.catalogcode=t.pk.clasecode"); SubQuery stipoarma= new SubQuery ("TgeneCatalogDetail", "description", "destipoarma", "i.pk.catalog = t.pk.tipoarmaexplosivo and i.pk.catalogcode=t.pk.tipoarmaexplosivocodigo"); SubQuery sunidad= new SubQuery ("TgeneCatalogDetail", "description", "desunidad", "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); dto.addSubQuery(stipoarma); dto.addSubQuery(sclasearma); dto.addSubQuery(sunidad); HashMap mtables = new HashMap(); mtables.put(this.beanalias, dto); 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); } } @SuppressWarnings("unchecked") protected void querydatabaseSimple() { try { DtoQuery dto = super.getDtoQuery(true); HashMap mtables = new HashMap(); mtables.put(this.beanalias, dto); 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(); if(!dtosave.pendingProcess()){ return; } dtosave.setReturnpk(true); // Para que el core devuelva el pk de los // registros nuevos. HashMap msave = new HashMap(); Request request = this.callerhelper.getRequest(); msave.put(this.beanalias, dtosave); // adicionar metadata de // mantenimiento para cada // tabla. 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); } } /** * Crea una instancia del registro como nuevo. * * @throws Exception */ @Override public void create() throws Exception { super.create(); } @Override public void update() throws Exception { if(record.getModifiedData().get("desclasearma")==null || record.getModifiedData().get("desclasearma").toString().trim().length()==0){ MessageHelper.setMessageError("SELECCIONE LA CLASE"); return; } if(record.getModifiedData().get("destipoarma")==null || record.getModifiedData().get("destipoarma").toString().trim().length()==0){ MessageHelper.setMessageError("SELECCIONE EL TIPO DE ARMA"); return; } this.record.getPk().setUnidadmedidapesocodigo("UNIDADMEDIDA"); record.setFecharegistro(new java.sql.Date(new Date().getTime())); catalogos(lunidades, record.getPk().getUnidadmedidapeso(), "desunidad"); super.update(); } public void update(TarmUnidadTipo bean) throws Exception { record=bean; super.update(); } /** * Metodo para recorreer los combos y setear las descripciones de lo q se escoge * para la vista * @param list * @param codigo * @param pk */ public void catalogos(Listlist, String codigo,String pk){ for(TgeneCatalogDetail item:list){ if(codigo.equals(item.getPk().getCatalog())){ record.modifiedData.put(pk, item.getDescription()); break; } } } public void openClaseLov() { Map> params = new HashMap<>(); List lcat = new ArrayList<>(); lcat.add("CLASE"); params.put("catalogcode", lcat); List ldescripcion = new ArrayList<>(); ldescripcion.add(MsgControlArmas.getProperty("lvh_clase")); params.put("tituloLOV", ldescripcion); ClaseLovController.openLov(params); } private String codigoClase; public void openTipoArmaLov() { if(codigoClase==null || codigoClase.trim().length()==0){ MessageHelper.setMessageError("SELECCIONE LA CLASE"); return; } Map> params = new HashMap<>(); String codigoslonguitud=""; String codigoslonguitud2=""; Listlista=CatalogDetailController.find("LONGITUD", codigoClase); if(lista!=null){ for(TgeneCatalogDetail catalogo:lista){ if(codigoslonguitud==null || codigoslonguitud.length()==0){ codigoslonguitud+= catalogo.getPk().getCatalog(); }else if(codigoslonguitud2==null || codigoslonguitud2.length()==0){ codigoslonguitud2+=" legalcode= '"+catalogo.getPk().getCatalog()+"'"; }else{ codigoslonguitud2+=" or t.legalcode= '"+catalogo.getPk().getCatalog()+"'"; } } } List l = new ArrayList<>(); if(codigoslonguitud!=null && codigoslonguitud.length()>0){ l.add(codigoslonguitud); }else{ l.add(codigoClase); } params.put("legalcode", l); List l2 = new ArrayList<>(); if(codigoslonguitud2!=null && codigoslonguitud2.length()>0){ l2.add(codigoslonguitud2); } params.put("legalcode2", l2); List lcat = new ArrayList<>(); lcat.add("TIPOARMAEXPLOSIVO"); params.put("catalogcode", lcat); List ldescripcion = new ArrayList<>(); ldescripcion.add(MsgControlArmas.getProperty("lvh_tipoarma")); params.put("tituloLOV", ldescripcion); ClaseLovController.openLov(params); } private String codigoClaseD; public void openTipoArmaDialogLov() { if(codigoClaseD==null || codigoClaseD.trim().length()==0){ MessageHelper.setMessageError("SELECCIONE LA CLASE"); return; } Map> params = new HashMap<>(); String codigoslonguitud=""; String codigoslonguitud2=""; Listlista=CatalogDetailController.find("LONGITUD", codigoClaseD); if(lista!=null){ for(TgeneCatalogDetail catalogo:lista){ if(codigoslonguitud==null || codigoslonguitud.length()==0){ codigoslonguitud+= catalogo.getPk().getCatalog(); }else if(codigoslonguitud2==null || codigoslonguitud2.length()==0){ codigoslonguitud2+=" legalcode= '"+catalogo.getPk().getCatalog()+"'"; }else{ codigoslonguitud2+=" or t.legalcode= '"+catalogo.getPk().getCatalog()+"'"; } } } List l = new ArrayList<>(); if(codigoslonguitud!=null && codigoslonguitud.length()>0){ l.add(codigoslonguitud); }else{ l.add(codigoClaseD); } params.put("legalcode", l); List l2 = new ArrayList<>(); if(codigoslonguitud2!=null && codigoslonguitud2.length()>0){ l2.add(codigoslonguitud2); } params.put("legalcode2", l2); List lcat = new ArrayList<>(); lcat.add("TIPOARMAEXPLOSIVO"); params.put("catalogcode", lcat); List ldescripcion = new ArrayList<>(); ldescripcion.add(MsgControlArmas.getProperty("lvh_tipoarma")); params.put("tituloLOV", ldescripcion); ClaseLovController.openLov(params); } public void onReturnClaseLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); super.getMfilters().put("pk.clase", t.getPk().getCatalog()); descripcionClase=t.getDescription(); codigoClase=t.getPk().getCatalog(); //encero super.getMfilters().put("pk.tipoarmaexplosivo", null); descripcionTipoArma=null; } public void onReturnTipoArmaLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); super.getMfilters().put("pk.tipoarmaexplosivo", t.getPk().getCatalog()); descripcionTipoArma=t.getDescription(); } public void onReturnClaseDialogLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); record.getPk().setClase(t.getPk().getCatalog()); record.getPk().setClasecode(t.getPk().getCatalogcode()); record.getModifiedData().put("desclasearma", t.getDescription()); codigoClaseD=t.getPk().getCatalog(); //encero record.getPk().setTipoarmaexplosivo(null); record.getPk().setTipoarmaexplosivocodigo(null); record.getModifiedData().put("destipoarma", null); } public void onReturnTipoArmaDialogLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); record.getPk().setTipoarmaexplosivo(t.getPk().getCatalog()); record.getPk().setTipoarmaexplosivocodigo(t.getPk().getCatalogcode()); record.getModifiedData().put("destipoarma", t.getDescription()); // codigoClase=t.getPk().getCatalog(); } /** * Entrega una lista de objetos TgeneCatalogDetail * * @param catalogcode * Có de catálogo * @return lrecord Lista de objetos TgeneCatalogDetail */ public static List find(String catalogcode) { try { UnidadTipoController cc = new UnidadTipoController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk", catalogcode); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Obtiene un tipo de unidad por la clase y el codigo de clase */ public static TarmUnidadTipo findByClaseAndClasecode(String clase,String clasecode, String tipoArmaExplosivo, String unidadMedida) { try { UnidadTipoController cc = new UnidadTipoController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk.clase", clase); cc.addFilter("pk.clasecode", clasecode); cc.addFilter("pk.tipoarmaexplosivo", tipoArmaExplosivo); cc.addFilter("pk.unidadmedidapeso",unidadMedida); cc.querydatabaseSimple(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord.get(0); } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } public static TarmUnidadTipo find(String clase, String tipoarmaexplosivo) { try { UnidadTipoController cc = new UnidadTipoController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk.clase", clase); cc.addFilter("pk.tipoarmaexplosivo", tipoarmaexplosivo); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord.get(0); } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } public List getLunidades() { return lunidades; } public void setLunidades(List lunidades) { this.lunidades = lunidades; } public String getDescripcionClase() { return descripcionClase; } public void setDescripcionClase(String descripcionClase) { this.descripcionClase = descripcionClase; } public String getDescripcionTipoArma() { return descripcionTipoArma; } public void setDescripcionTipoArma(String descripcionTipoArma) { this.descripcionTipoArma = descripcionTipoArma; } }