package com.fp.frontend.controller.armas.parametros; 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 org.primefaces.model.DefaultTreeNode; import org.primefaces.model.TreeNode; 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.ProvinceController; import com.fp.frontend.helper.MessageHelper; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmCentroControlJur; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneProvince; /** * Clase controladora del bean TarmCentroControlJur. * * @author C.P. * @version 2.1 */ @ManagedBean @ViewScoped public class TarmCentroControlJurController extends AbstractController { private static final long serialVersionUID = 1L; /** * Nodos para la creacion del arbol */ private TreeNode root; /** * Variable que se carga cuando selecciona un nodo del arbol */ private TreeNode selectedNode; /** * Recupera el codigo de la provincia selecionada */ private String codigoProvincia; /** * Recupera la descripcion de la provincia selecionada */ private String descripcionProvincia; /** * Carga la lista de las provincias */ private List lprovinces; /** * Carga el centro de control */ private TarmCentroControl tarmCentroControl; /** * Inyeccion del controlador centroControlArmasController */ @ManagedProperty(value = "#{centroControlArmasController}") private CentroControlArmasController centroControlArmasController; public TarmCentroControlJurController() throws Exception { super(TarmCentroControlJur.class); } @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 = 10; // Cambiar al # reg a mirar. this.lrecord = new ArrayList<>(); this.beanalias = "TARMCENTROCONTROLJURIS"; tarmCentroControl= new TarmCentroControl(); } catch (Exception e) { MessageHelper.setMessageError(e); } } @SuppressWarnings("unchecked") @Override public void querydatabase() { try { Request request = this.callerhelper.getRequest(); DtoQuery dto = super.getDtoQuery(true); SubQuery sprovincia= new SubQuery ("TgeneProvince", "description", "desprovincia", "i.pk.countrycode = t.countrycode and i.pk.provincecode= t.provincecode"); dto.addSubQuery(sprovincia); HashMap mtables = new HashMap(); mtables.put(this.beanalias, dto); 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 { Request request = this.callerhelper.getRequest(); DtoSave dtosave = super.getDtoSave(); dtosave.setReturnpk(true); if (!dtosave.pendingProcess()) { return; } HashMap msave = new HashMap(); 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 postCommit(Response response) throws Exception { super.postCommitGeneric(response, this.beanalias); } /** * Metodo que se ejecuta al pulsar jurisdiccion * Inicializa las variables, lista las provincias y el arbol de jurisdiccion */ public void loadEdit() { centroControlArmasController.getRecord();// contiene el registro seleccionado clearAll(); listarProvincias(); root=null; getMfilters().put("ccentrocontrol", centroControlArmasController.getRecord().getPk()); querydatabase(); root=createTree();//carga el arbol } /** * selecciona un registro para anadir una jurisdiccion * @throws Exception */ public void displaySelectedSingle() throws Exception { if(selectedNode != null) { super.create(); record.setCountrycode("EC"); record.setCcentrocontrol(centroControlArmasController.getRecord().getPk()); listarProvincias(); } } /** * elimna la jurisdiccion * @throws Exception */ public void deleteNode() throws Exception { record=(TarmCentroControlJur)selectedNode.getData(); if(record.getCcentrocontrol()==null || record.getCcentrocontrol().trim().length()==0){ MessageHelper.setMessageError("NO SE PUEDE ELIMINAR EL NODO"); return; } record.setProvincianombre(null); super.remove(); selectedNode.getChildren().clear(); selectedNode.getParent().getChildren().remove(selectedNode); selectedNode.setParent(null); selectedNode = null; } /** * arma el arbol * @return */ @SuppressWarnings("unused") public TreeNode createTree() { TarmCentroControlJur cabecera = new TarmCentroControlJur(); cabecera.setProvincianombre(centroControlArmasController.getRecord().getModifiedData().get("desinstitucion").toString()); TarmCentroControlJur reg1 = new TarmCentroControlJur(); reg1.setProvincianombre(centroControlArmasController.getRecord().getModifiedData().get("desinstitucion").toString()); TarmCentroControlJur reg2 = new TarmCentroControlJur(); reg2.setProvincianombre(centroControlArmasController.getRecord().getModifiedData().get("desnombreinstitucion").toString()); TreeNode root = new DefaultTreeNode(cabecera, null); TreeNode nombreCentro = new DefaultTreeNode(cabecera, root); TreeNode Default2 = new DefaultTreeNode(reg2, nombreCentro); //se recorre para el arbol if(lrecord!=null && lrecord.size()>0){ for(TarmCentroControlJur jurisdiccion:lrecord){ jurisdiccion.setProvincianombre(nombreProvincia(lprovinces, jurisdiccion.getProvincecode())); TreeNode documents = new DefaultTreeNode(jurisdiccion, Default2); } } return root; } /** * Metodo para obtener la descripcion de la provincia * @param list * @param codigo * @return */ public String nombreProvincia(Listlist, String codigo){ for(TgeneProvince item:list){ if(item.getPk().getProvincecode().equals(codigo)){ return item.getDescription(); } } return ""; } /** * metodo para a\u00F1adir un nuevo registro de jurisdiccion * @param province * @throws Exception */ public void setProvincia(TgeneProvince province) throws Exception { System.out.println(province.getDescription()); //validamos que el registro no este ingresado List listaJurisdicciones=find(); if(listaJurisdicciones!=null && listaJurisdicciones.size()>0){ for(TarmCentroControlJur item:listaJurisdicciones){ if(item.getProvincecode().equals(province.getPk().getProvincecode())){ MessageHelper.setMessageError("LA JURISDICCI\u00D3N YA PERTENECE A UN CENTRO DE CONTROL DE ARMAS"); return; } } } //validamos sobre la lista que vamos a guardar if(this.lrecord!=null && this.lrecord.size()>0){ for(TarmCentroControlJur item:this.lrecord){ if(item.getProvincecode().equals(province.getPk().getProvincecode())){ MessageHelper.setMessageError("LA JURISDICCI\u00D3N YA PERTENECE A UN CENTRO DE CONTROL DE ARMAS"); return; } } } record.setProvincecode(province.getPk().getProvincecode()); addNew(record); getLrecord().add(record); root=createTree(); super.update(); } /** * Metodo para listar las provincias */ public void listarProvincias(){ if(lprovinces==null || lprovinces.size()==0){ lprovinces = ProvinceController.findxDescripcion("EC",codigoProvincia, descripcionProvincia); } } public static List find() { try { TarmCentroControlJurController cc = new TarmCentroControlJurController(); cc.init(); cc.recperpage = 300; cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } public static TarmCentroControlJur findxProvincia(String provincecode) { try { TarmCentroControlJurController cc = new TarmCentroControlJurController(); cc.init(); cc.addFilter("provincecode", provincecode); cc.recperpage = 300; 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 TreeNode getRoot() { return root; } public void setRoot(TreeNode root) { this.root = root; } public TreeNode getSelectedNode() { return selectedNode; } public void setSelectedNode(TreeNode selectedNode) { this.selectedNode = selectedNode; } public CentroControlArmasController getCentroControlArmasController() { return centroControlArmasController; } public void setCentroControlArmasController( CentroControlArmasController centroControlArmasController) { this.centroControlArmasController = centroControlArmasController; } public List getLprovinces() { return lprovinces; } public void setLprovinces(List lprovinces) { this.lprovinces = lprovinces; } public String getCodigoProvincia() { return codigoProvincia; } public void setCodigoProvincia(String codigoProvincia) { this.codigoProvincia = codigoProvincia; } public String getDescripcionProvincia() { return descripcionProvincia; } public void setDescripcionProvincia(String descripcionProvincia) { this.descripcionProvincia = descripcionProvincia; } public TarmCentroControl getTarmCentroControl() { return tarmCentroControl; } public void setTarmCentroControl(TarmCentroControl tarmCentroControl) { this.tarmCentroControl = tarmCentroControl; } }