/** carga la tabla de asistencia por horas */
  private void cargarTablaHoras(String inici, String fi) {

    java.sql.Time hInici;
    java.sql.Time hFin;
    SimpleDateFormat formato = new SimpleDateFormat("HH:mm");
    SimpleDateFormat formato3 = new SimpleDateFormat("HH:mm");
    DecimalFormat formato2 = new DecimalFormat("0");
    ArrayList<String> header = new ArrayList<String>(); // cabecera
    header.add(language.getProperty("estadisticas.table.personalAcademico.horas"));
    header.add(language.getProperty("estadisticas.table.personalAcademico.asistencia"));

    String[][] gridData;
    List<String> row;

    try {
      if (inici.equals("")) hInici = null;
      else hInici = new java.sql.Time(formato.parse(inici).getTime());

      if (fi.equals("")) hFin = null;
      else hFin = new java.sql.Time(formato3.parse(fi).getTime());
      ;

      matriculas = manager.consultarHoras(hInici, hFin);
      gridData = new String[matriculas.size()][4];

      int i = 0;
      float total;
      float cos = 0;

      for (Matricula matricula : matriculas) {
        cos = matricula.getAsis() + matricula.getNoAsis();
        total = matricula.getAsis() / cos;
        total = total * 100;
        gridData[i][0] = formato.format(matricula.getHoraInicio());
        gridData[i][1] = formato2.format(total) + "%";
        i++;
      }

      tablaHoras.setModel(
          new DefaultTableModel(gridData, header.toArray()) {
            @Override
            public boolean isCellEditable(int row, int column) {
              return false;
            }
          });

    } catch (ParseException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.formatoHora"),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);
    } catch (SQLException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.sql")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (RemoteException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.rmi")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.generic")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
  /** carga la tabla de solapados a parti de los datos que recibe */
  public void cargarTablaSolapados(String sdata, String sdni) {
    // Rellena la tabla
    Date data;
    String dni;
    String turno = "";
    ArrayList<String> header = new ArrayList<String>(); // cabecera
    header.add(language.getProperty("mantenimiento.usermain.DNI"));
    header.add(language.getProperty("mantenimiento.usermain.name"));
    header.add(language.getProperty("mantenimiento.main.curse"));
    header.add(language.getProperty("estadisticas.table.personalAcademico.grupo"));

    String[][] gridData;
    List<String> row;
    try {

      if (sdata.equals("")) {
        data = null;
      } else {
        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
        data = formato.parse(sdata);
      }

      if (sdni.equals("")) dni = null;
      else dni = txtDni.getText();

      matriculas = manager.consultarSolapados(data, dni);
      gridData = new String[matriculas.size()][4];

      int i = 0;
      float total;
      float stat;
      float cos = 0;

      for (Matricula matricula : matriculas) {
        if (matricula.getTurno() == 1)
          turno = language.getProperty("estatisticas.table.personalAcademico.turnoMaƱana");
        if (matricula.getTurno() == 2)
          turno = language.getProperty("estatisticas.table.personalAcademico.turnoTarde");
        gridData[i][0] = matricula.getUsuarioNif();
        gridData[i][1] = matricula.getUsuarioNombre();
        gridData[i][2] = matricula.getActividadNombre();
        gridData[i][3] = turno;

        i++;
      }
      // hace que no se pueda editar la tabla
      tablaSolapados.setModel(
          new DefaultTableModel(gridData, header.toArray()) {
            @Override
            public boolean isCellEditable(int row, int column) {
              return false;
            }
          });

    } catch (ParseException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.formatoData"),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);
    } catch (SQLException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.sql")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (RemoteException ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.rmi")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Exception ex) {
      JOptionPane.showMessageDialog(
          null,
          language.getProperty("err.generic")
              + "\n"
              + language.getProperty("err.detail")
              + ":\n\n"
              + ex.getMessage(),
          language.getProperty("app.title"),
          JOptionPane.ERROR_MESSAGE);

      // Registra el error en un archivo de LOG
      // Logger.getLogger(FrmResourcesRequest.class.getName()).log(Level.SEVERE, null, ex);
    }
  }