/**
   * Constructor de la clase. Inicializa todos los paneles de la pantalla y asocia los eventos para
   * ser tratados. Se le pasa por parametro un JFrame y la lista de expedientes a mostrar.
   *
   * @param desktop JFrame
   * @param exp lista de expedientes
   */
  public BusquedaExportacionMasiva(final JFrame desktop, ArrayList exp) {
    this.desktop = desktop;
    this.expedientes = exp;
    this.expedienteFiltrados = exp;
    this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    UtilRegistroExp.menuBarSetEnabled(false, this.desktop);
    inicializaElementos();
    addInternalFrameListener(
        new javax.swing.event.InternalFrameListener() {
          public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {}

          public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {}

          public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            cierraInternalFrame();
          }

          public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {}

          public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {}

          public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {}

          public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {}
        });
    this.setTitle(
        I18N.get(
            "RegistroExpedientes",
            "Catastro.RegistroExpedientes.ExportacionMasiva.tituloBusqueda"));
    setClosable(true);
    this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  }
 /** Cierra la ventana y habilita el menu de la aplicacion. */
 public void cierraInternalFrame() {
   try {
     this.setClosed(true);
     if (expedientes != null) {
       expedientes.clear();
       expedientes = null;
     }
     if (expedienteFiltrados != null) {
       expedienteFiltrados.clear();
       expedienteFiltrados = null;
     }
     if (buscarTodoPanel != null) {
       getContentPane().remove(buscarTodoPanel);
       buscarTodoPanel.removeAll();
       buscarTodoPanel = null;
     }
   } catch (Exception e) {
     e.printStackTrace();
   }
   UtilRegistroExp.menuBarSetEnabled(true, this.desktop);
 }
 /**
  * Metodo que filtra los expedientes que se estran mostrando con los parametros de busqueda que el
  * usuario ha introducido.
  */
 private void buscarJButtonActionPerformed() {
   Hashtable hashDatos = new Hashtable();
   if (datosBusquedaPanel.recopilaDatosPanel(hashDatos)) {
     String numeroExpediente =
         (String) hashDatos.get(ConstantesCatastro.expedienteNumeroExpediente);
     String tipoExpediente = (String) hashDatos.get(ConstantesCatastro.expedienteTipoExpediente);
     String idEstado = (String) hashDatos.get(ConstantesCatastro.expedienteIdEstado);
     String idTecnicoCatastro =
         (String) hashDatos.get(ConstantesCatastro.expedienteIdTecnicoCatastro);
     Date fechaRegistroInicial =
         UtilRegistroExp.getDate(
             (String) hashDatos.get(ConstantesCatastro.expedienteFechaRegistro + "Inicial"));
     Date fechaRegistroFinal =
         UtilRegistroExp.getDate(
             (String) hashDatos.get(ConstantesCatastro.expedienteFechaRegistro + "Final"));
     String annoExpedienteAdminOrigenAlt_Ejercicio =
         (String) hashDatos.get(ConstantesCatastro.expedienteAnnoExpedienteAdminOrigenAlteracion);
     String codigoEntidadGeneradora_Control =
         (String) hashDatos.get(ConstantesCatastro.entidadGeneradoraCodigo);
     String referenciaCatastral =
         (String) hashDatos.get(ConstantesCatastro.expedienteReferenciasCatastrales);
     String nifPresentador = (String) hashDatos.get(ConstantesCatastro.expedienteNifPresentador);
     String nombreCompletoPresentador =
         (String) hashDatos.get(ConstantesCatastro.expedienteNombreCompletoPresentador);
     ArrayList expAux = new ArrayList();
     expAux.addAll(expedientes);
     String ultimoEstado = (String) codigoEstados.get(codigoEstados.size() - 1);
     if (idEstado != null && idEstado.equalsIgnoreCase(ultimoEstado)) {
       expAux.removeAll(expedientes);
       try {
         expAux =
             (ArrayList)
                 ConstantesRegExp.clienteCatastro.getExpedientesUsuario(
                     "true", ConstantesCatastro.tipoConvenio, ConstantesCatastro.modoTrabajo);
       } catch (Exception e) {
         e.printStackTrace();
       }
     }
     boolean siguiente;
     for (int i = 0; i < expAux.size(); i++) {
       siguiente = true;
       Expediente exp = (Expediente) expAux.get(i);
       if (siguiente
               && ((numeroExpediente != null) && (!numeroExpediente.equals("")))
               && (exp.getNumeroExpediente() != null
                   && !(exp.getNumeroExpediente().indexOf(numeroExpediente) >= 0))
           || exp.getNumeroExpediente() == null) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente && (tipoExpediente != null) && (!tipoExpediente.equals("")))
               && (exp.getTipoExpediente() != null
                   && !exp.getTipoExpediente()
                       .getCodigoTipoExpediente()
                       .equalsIgnoreCase(tipoExpediente))
           || exp.getTipoExpediente() == null) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente && (idEstado != null) && (!idEstado.equals("")))
               && (exp.getIdEstado() > 0 && exp.getIdEstado() != Long.parseLong(idEstado))
           || exp.getIdEstado() <= 0) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente && (idTecnicoCatastro != null) && (!idTecnicoCatastro.equals("")))
           && (usuarios.get(String.valueOf(exp.getIdTecnicoCatastro())) != null
                   && !((String) usuarios.get(String.valueOf(exp.getIdTecnicoCatastro())))
                       .equalsIgnoreCase(idTecnicoCatastro)
               || usuarios.get(String.valueOf(exp.getIdTecnicoCatastro())) == null)) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente && checkeRangoFechar(fechaRegistroInicial, fechaRegistroFinal, exp))) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente
                   && (annoExpedienteAdminOrigenAlt_Ejercicio != null)
                   && (!annoExpedienteAdminOrigenAlt_Ejercicio.equals("")))
               && (exp.getAnnoExpedienteAdminOrigenAlteracion() > 0
                   && exp.getAnnoExpedienteAdminOrigenAlteracion()
                       != Integer.parseInt(annoExpedienteAdminOrigenAlt_Ejercicio))
           || exp.getAnnoExpedienteAdminOrigenAlteracion() <= 0) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente
                   && (codigoEntidadGeneradora_Control != null)
                   && (!codigoEntidadGeneradora_Control.equals("")))
               && (exp.getEntidadGeneradora().getCodigo() > 0
                   && exp.getEntidadGeneradora().getCodigo()
                       != Integer.parseInt(codigoEntidadGeneradora_Control))
           || exp.getEntidadGeneradora().getCodigo() <= 0) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente && (referenciaCatastral != null) && (!referenciaCatastral.equals("")))
           && ((exp.getListaReferencias().size() > 0)
                   && !checkeaContainsRefCatas(exp.getListaReferencias(), referenciaCatastral)
               || (exp.getListaReferencias().size() == 0))) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente && (nifPresentador != null) && (!nifPresentador.equals("")))
           && (exp.getNifPresentador() != null
                   && !(exp.getNifPresentador().indexOf(nifPresentador) >= 0)
               || exp.getNifPresentador() == null)) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
       if ((siguiente
               && (nombreCompletoPresentador != null)
               && (!nombreCompletoPresentador.equals("")))
           && (exp.getNombreCompletoPresentador() != null
                   && exp.getNombreCompletoPresentador().indexOf(nombreCompletoPresentador) < 0
               || exp.getNombreCompletoPresentador() == null)) {
         expAux.remove(i);
         siguiente = false;
         i--;
       }
     }
     expedienteFiltrados = expAux;
     tablaBusqueda.cargaDatosTabla(expAux, usuarios);
   }
 }