Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package classes; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; import java.util.Date; import java.util.GregorianCalendar; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; /** * * @author Jeremas */ public class Querys extends MasterDatabase { private Integer NUM_DEC = 2; // Retorna una lista con el nombre de los grupos que administra una cuenta public ArrayList<String> getNombreGruposQueAdministra(int cuenta_id) throws SQLException { ArrayList<String> list = new ArrayList<String>(); ResultSet rs = super.consultar("SELECT * FROM CUENTA_GRUPO"); while (rs.next()) { if (cuenta_id == rs.getInt("CUENTA_ID")) { list.add(getGrupoById(rs.getInt("GRUPO_ID"))); } } return list; } // Retorna una lista con el id de los grupos que administra una cuenta public ArrayList<Integer> getIdGruposQueAdministra(int cuenta_id) throws SQLException { ArrayList<Integer> list = new ArrayList<Integer>(); ResultSet rs = super.consultar("SELECT * FROM CUENTA_GRUPO"); while (rs.next()) { if (cuenta_id == rs.getInt("CUENTA_ID")) { list.add(rs.getInt("GRUPO_ID")); } } return list; } // Retorna una lista con el id de los grupos que administra una cuenta public ArrayList<Integer> getIdGrupos() throws SQLException { ArrayList<Integer> list = new ArrayList<Integer>(); ResultSet rs = super.consultar("SELECT * FROM GRUPO"); while (rs.next()) { list.add(rs.getInt("GRUPO_ID")); } return list; } // Retorna el nombre del grupo por la ID dada private String getGrupoById(int grupo_id) throws SQLException { ResultSet rs = super.consultar("SELECT * FROM GRUPO WHERE GRUPO.GRUPO_ID='" + grupo_id + "'"); String list = null; while (rs.next()) { list = rs.getString("NOMBRE"); } return list; } // Mtodo para loggearse, verifica si la cuenta existe public boolean isAcountExists(String usuario, String contrasea) throws SQLException { ResultSet rs = super.consultar("SELECT *, AES_DECRYPT(CONTRASEA, 'xcabczxabccz4815162342') FROM CUENTA WHERE USUARIO='"+usuario+"' AND AES_DECRYPT(CONTRASEA, 'xcabczxabccz4815162342')='"+contrasea+"'"); boolean log = false; if (rs.next()) { log = true; } return log; } // Mtodo para obtener el ID de cuenta public int getIdCuenta(String usuario, String contrasea) throws SQLException { ResultSet rs = super.consultar("SELECT *, AES_DECRYPT(CONTRASEA, 'xcabczxabccz4815162342') FROM CUENTA WHERE USUARIO='"+usuario+"' AND AES_DECRYPT(CONTRASEA, 'xcabczxabccz4815162342')='"+contrasea+"'"); int id = 0; if(rs.next()) { id = rs.getInt("CUENTA_ID"); } return id; } // Mtodo para obtener favoritos public String getFavoritos(String usuario) { return null; } // Retorna un array con las posibles nacionalidades public ArrayList<String> getNacionalidad() throws SQLException { String sql = "SELECT * FROM PAIS"; PreparedStatement ps = CONN.prepareStatement(sql); ResultSet rs = ps.executeQuery(); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("NOMBRE")); } return list; } // Retorna un array con los grupos NO creados por un usuario public ArrayList<String> getCursosIniciales() throws SQLException { ArrayList<String> list = new ArrayList<String>(); ResultSet rs = super.consultar("SELECT * FROM GRUPO WHERE FLAG='0'"); while (rs.next()) { list.add(rs.getString("NOMBRE")); } return list; } // Retorna la lista de todos los cursos iniciales por ID public ArrayList<Integer> getCursosInicialesID() throws SQLException { ArrayList<Integer> list = new ArrayList<Integer>(); ResultSet rs = super.consultar("SELECT * FROM GRUPO WHERE FLAG='0'"); while (rs.next()) { list.add(rs.getInt("GRUPO_ID")); } return list; } // Retorna un array con el nombre de todos los grupos creados public ArrayList<String> getNombreDeCurso() throws SQLException { String sql = "SELECT * FROM GRUPO"; PreparedStatement ps = CONN.prepareStatement(sql); ResultSet rs = ps.executeQuery(); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("NOMBRE")); } return list; } // Retorna un array con el nombre de los alumnos segun el curso public ArrayList<String> getNombreAlumnosByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT * FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("APELLIDO") + " " + rs.getString("NOMBRE")); } return list; } // Retorna un array con el id de los alumnos segun el curso public ArrayList<Integer> getIdAlumnosByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT * FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<Integer> list = new ArrayList<Integer>(); while (rs.next()) { list.add(rs.getInt("ALUMNO_ID")); } return list; } // Retorna un array con el id de los alumnos segun el curso en la tabla de asistencias public ArrayList<Integer> getIdAlumnosByGrupoAsistencia(Integer id_grupo, String fecha) throws SQLException { ResultSet rs = super.consultar( "SELECT ASISTENCIA.ALUMNO_ID FROM ASISTENCIA INNER JOIN ALUMNO ON ALUMNO.ALUMNO_ID = ASISTENCIA.ALUMNO_ID WHERE ASISTENCIA.GRUPO_ID = '" + id_grupo + "' AND ASISTENCIA.FECHA = '" + fecha + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<Integer> list = new ArrayList<Integer>(); while (rs.next()) { list.add(rs.getInt("ASISTENCIA.ALUMNO_ID")); } return list; } // Retorna un array con el nombre de los alumnos segun el curso public ArrayList<String> getNombreAlumnosByGrupoAsistencia(Integer id_grupo, String fecha) throws SQLException { ResultSet rs = super.consultar( "SELECT APELLIDO, NOMBRE FROM ASISTENCIA INNER JOIN ALUMNO ON ALUMNO.ALUMNO_ID = ASISTENCIA.ALUMNO_ID WHERE ASISTENCIA.GRUPO_ID = '" + id_grupo + "' AND ASISTENCIA.FECHA = '" + fecha + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("ALUMNO.APELLIDO") + " " + rs.getString("ALUMNO.NOMBRE")); } return list; } // Retorna el nombre del alumno por la id dada public String getNombreAlumnoById(int id) throws SQLException { ResultSet rs = super.consultar("SELECT * FROM ALUMNO WHERE ALUMNO_ID='" + id + "'"); String res = null; if (rs.next()) { res = rs.getString("APELLIDO") + " " + rs.getString("NOMBRE"); } return res; } public Integer getCantidadDeAlumnos(Integer id_grupo) throws SQLException { Integer cant = 0; ResultSet rs = super.consultar( "SELECT *, COUNT(*) AS CANT_ALUMNOS FROM GRUPO_ALUMNO WHERE GRUPO_ID = '" + id_grupo + "'"); if (rs.next()) { cant = rs.getInt("CANT_ALUMNOS"); } return cant; } // Revisa la base de datos buscando los alumnos que tengan tres faltas consecutivas public List<Integer> revisarAusencias(Integer id_grupo) throws SQLException { //ResultSet rs = super.consultar("SELECT * FROM ASISTENCIA ORDER BY DESC WHERE GRUPO_ID = '"+id_grupo+"' GROUP BY FECHA LIMIT 3"); ResultSet rs = super.consultar("SELECT * FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' ORDER BY ASISTENCIA_ID DESC LIMIT " + getCantidadDeAlumnos(id_grupo) * 3); List<Integer> list = new ArrayList<Integer>(); List<Integer> ret = new ArrayList<Integer>(); while (rs.next()) { if (rs.getInt("ASISTENCIA") == 2) { list.add(rs.getInt("ALUMNO_ID")); } } Set<Integer> quipu = new HashSet<Integer>(list); for (Integer i : quipu) { if (Collections.frequency(list, i) >= 3) { ret.add(i); } } return ret; } // Retorna los alumnos y su asistencia en una fecha dada public List<String> getAsistenciaByGrupo(Integer id_grupo, String fecha) throws SQLException { ResultSet rs = super.consultar( "SELECT ASISTENCIA.ASISTENCIA, TIPO_ASISTENCIA.DESCRIPCION, ALUMNO.APELLIDO FROM ASISTENCIA INNER JOIN TIPO_ASISTENCIA ON TIPO_ASISTENCIA.TIPO_ASISTENCIA_ID = ASISTENCIA.ASISTENCIA INNER JOIN ALUMNO ON ALUMNO.ALUMNO_ID = ASISTENCIA.ALUMNO_ID WHERE GRUPO_ID = '" + id_grupo + "' AND FECHA = '" + fecha + "' ORDER BY ALUMNO.APELLIDO LIMIT " + getCantidadDeAlumnos(id_grupo)); List<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("TIPO_ASISTENCIA.DESCRIPCION")); } return list; } // Retorna un array con el nombre de los grupos por fecha public ArrayList<String> getNameGruposPorFecha(String fecha) throws SQLException { ResultSet rs = super.consultar( "SELECT GRUPO_ID FROM ASISTENCIA WHERE FECHA='" + fecha + "' GROUP BY GRUPO_ID"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(getGrupoById(rs.getInt("GRUPO_ID"))); } return list; } // Retorna un array con el id de los grupos por la fecha public ArrayList<Integer> getIdGruposPorFecha(String fecha) throws SQLException { ResultSet rs = super.consultar( "SELECT GRUPO_ID FROM ASISTENCIA WHERE FECHA='" + fecha + "' GROUP BY GRUPO_ID"); ArrayList<Integer> list = new ArrayList<Integer>(); while (rs.next()) { list.add(rs.getInt("GRUPO_ID")); } return list; } // Retorna un string con el telefono del alumno public String getTelefonoById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar("SELECT TELEFONO FROM ALUMNO WHERE ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("TELEFONO"); } return ret; } // Retorna un string con el celular del alumno public String getCelularById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar("SELECT CELULAR FROM ALUMNO WHERE ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("CELULAR"); } return ret; } // Retorna un string con el email del alumno public String getEmailById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar("SELECT EMAIL FROM ALUMNO WHERE ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("EMAIL"); } return ret; } // Retorna un string con la direccion del alumno public String getDireccionById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar("SELECT DIRECCION FROM ALUMNO WHERE ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("DIRECCION"); } return ret; } // Retorna un string con el dni del alumno public String getDniById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar("SELECT DNI FROM ALUMNO WHERE ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("DNI"); } return ret; } // Retorna un string con el dni del alumno public String getNacionalidadById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar( "SELECT ALUMNO.NACIONALIDAD, PAIS.NOMBRE FROM ALUMNO INNER JOIN PAIS ON PAIS.PAIS_ID = ALUMNO.NACIONALIDAD WHERE ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("PAIS.NOMBRE"); } return ret; } // Retorna un string con el dni del alumno public String getCursoInicialById(Integer id_alumno) throws SQLException { ResultSet rs = super.consultar( "SELECT GRUPO.NOMBRE FROM GRUPO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.GRUPO_ID = GRUPO.GRUPO_ID WHERE GRUPO_ALUMNO.ALUMNO_ID='" + id_alumno + "'"); String ret = null; while (rs.next()) { ret = rs.getString("GRUPO.NOMBRE"); } return ret; } // Retorna un array con el dni de los alumnos en el grupo public ArrayList<String> getDniByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT DNI, APELLIDO FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("DNI")); } return list; } // Retorna un array con el telefono de los alumnos en el grupo public ArrayList<String> getTelefonoByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT TELEFONO, APELLIDO FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("TELEFONO")); } return list; } // Retorna un array con el celular de los alumnos en el grupo public ArrayList<String> getCelularByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT CELULAR, APELLIDO FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("CELULAR")); } return list; } // Retorna un array con el email de los alumnos en el grupo public ArrayList<String> getEmailByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT EMAIL, APELLIDO FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("EMAIL")); } return list; } // Retorna un array con el sexo de los alumnos en el grupo public ArrayList<String> getSexoByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT SEXO, APELLIDO FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("SEXO")); } return list; } // Retorna un array con la nacionalidad de los alumnos en el grupo public ArrayList<String> getNacionalidadByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT ALUMNO.NACIONALIDAD, ALUMNO.APELLIDO, PAIS.NOMBRE FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID INNER JOIN PAIS ON PAIS.PAIS_ID = ALUMNO.NACIONALIDAD WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("PAIS.NOMBRE")); } return list; } // Retorna un array con la direccion de los alumnos en el grupo public ArrayList<String> getDireccionByGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar( "SELECT DIRECCION, APELLIDO FROM ALUMNO INNER JOIN GRUPO_ALUMNO ON GRUPO_ALUMNO.ALUMNO_ID = ALUMNO.ALUMNO_ID WHERE GRUPO_ALUMNO.GRUPO_ID = '" + id_grupo + "' ORDER BY ALUMNO.APELLIDO"); ArrayList<String> list = new ArrayList<String>(); while (rs.next()) { list.add(rs.getString("DIRECCION")); } return list; } // Retorna un string con la asistencia del alumno public String getAsistenciaById(Integer id_alumno, String fecha) throws SQLException { ResultSet rs = super.consultar( "SELECT ASISTENCIA, TIPO_ASISTENCIA.DESCRIPCION FROM ASISTENCIA INNER JOIN TIPO_ASISTENCIA ON TIPO_ASISTENCIA.TIPO_ASISTENCIA_ID = ASISTENCIA.ASISTENCIA WHERE ALUMNO_ID = '" + id_alumno + "' AND FECHA = '" + fecha + "'"); String ret = null; while (rs.next()) { ret = rs.getString("TIPO_ASISTENCIA.DESCRIPCION"); } return ret; } // Guarda un usuario activo public void setActiveAccount(Integer id_user, String username) throws SQLException { super.guardar("INSERT INTO ACTIVE_USER(USER_ID, NAME) VALUES('" + id_user + "', '" + username + "')"); } // Elimina un usuario activo public void deleteActiveAccount(Integer id_user) throws SQLException { super.guardar("DELETE FROM ACTIVE_USER WHERE USER_ID='" + id_user + "'"); } // Verifica si est activo el usuario public boolean isActiveAccount(String username) throws SQLException { ResultSet rs = super.consultar("SELECT * FROM ACTIVE_USER WHERE NAME = '" + username + "'"); boolean ret = false; if (rs.next()) { ret = true; } return ret; } // Modifica la asistencia public void modificarAsistencia(Integer id_alumno, Integer asistencia, Integer id_grupo, String fecha, Integer id_cuenta) throws SQLException { super.guardar("UPDATE ASISTENCIA SET ASISTENCIA = '" + asistencia + "', CUENTA_ID = '" + id_cuenta + "' WHERE GRUPO_ID = '" + id_grupo + "' AND ALUMNO_ID = '" + id_alumno + "' AND FECHA = '" + fecha + "'"); } // Obtengo la fecha en la que se tom lista por ltima vez public String getUltimaTomaAsistencia(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar("SELECT FECHA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' ORDER BY ASISTENCIA_ID DESC LIMIT 1"); String ret = null; if (rs.next()) { ret = rs.getString("FECHA"); } return ret; } /* ******** Consultas de estadsticas ******** */ // Total de alumnos en un grupo private Integer getTotalAlumnosEnGrupo(Integer id_grupo) throws SQLException { ResultSet rs = super.consultar("SELECT ALUMNO_ID FROM GRUPO_ALUMNO WHERE GRUPO_ID = '" + id_grupo + "'"); Integer cantAlumnos = 0; while (rs.next()) { cantAlumnos++; } return cantAlumnos; } // Total de de presentes en un grupo por mes private Integer getTotalPresentesEnGrupo(Integer id_grupo, String mes) throws SQLException { ResultSet rs = super.consultar( "SELECT FECHA, ASISTENCIA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "'"); Integer cantPresentes = 0; // Una bandera para saber si se accedi al mes boolean flag = false; while (rs.next()) { String fecha = rs.getString("FECHA"); String month = Character.toString(fecha.charAt(3)) + Character.toString(fecha.charAt(4)); if (rs.getInt("ASISTENCIA") == 1 || rs.getInt("ASISTENCIA") == 3) { if (month.equals(mes)) { cantPresentes++; // Una vez que recorremos el mes, ya no va a volver a aparecer flag = true; } // Si ya se recorri el mes, no hay porqu seguir else if (flag) { break; } } } return cantPresentes; } // Total de de ausentes en un grupo por mes private Integer getTotalAusentesEnGrupo(Integer id_grupo, String mes) throws SQLException { ResultSet rs = super.consultar("SELECT FECHA, ASISTENCIA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' ORDER BY ASISTENCIA.ASISTENCIA_ID DESC"); Integer cantAusentes = 0; // Una bandera para saber si se accedi al mes boolean flag = false; while (rs.next()) { String fecha = rs.getString("FECHA"); String month = Character.toString(fecha.charAt(3)) + Character.toString(fecha.charAt(4)); if (rs.getInt("ASISTENCIA") == 2) { if (month.equals(mes)) { cantAusentes++; // Una vez que recorremos el mes, ya no va a volver a aparecer flag = true; } // Si ya se recorri el mes, no hay porqu seguir else if (flag) { break; } } } return cantAusentes; } // Das hbiles de un mes determinado private Integer getDiasHabiles(Integer id_grupo, String mes) throws SQLException { ResultSet rs = super.consultar("SELECT FECHA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "'"); Integer diasHabiles = 0; // Una bandera para saber si se accedi al mes boolean flag = false; String dayAux = ""; while (rs.next()) { String fecha = rs.getString("FECHA"); String day = Character.toString(fecha.charAt(0)) + Character.toString(fecha.charAt(1)); String month = Character.toString(fecha.charAt(3)) + Character.toString(fecha.charAt(4)); if (month.equals(mes)) { if (!day.equals(dayAux)) { diasHabiles++; dayAux = day; // Una vez que recorremos el mes, ya no va a volver a aparecer flag = true; } } // Si ya se recorri el mes, no hay porqu seguir else if (flag) { break; } } return diasHabiles; } // Mtodo que retorna el porcentaje de asistencia public double getPorcentajeDeAsistencia(Integer id_grupo, String date) throws SQLException { String mes = Character.toString(date.charAt(3)) + Character.toString(date.charAt(4)); double totalPresentes = getTotalPresentesEnGrupo(id_grupo, mes); double totalAusentes = getTotalAusentesEnGrupo(id_grupo, mes); double porcentajeAsistencia = Maths .redondearDecimales((totalPresentes * 100) / (totalPresentes + totalAusentes), NUM_DEC); return porcentajeAsistencia; } // Mtodo que retorna el porcentaje de inasistencia public double getPorcentajeDeInasistencia(Integer id_grupo, String date) throws SQLException { String mes = Character.toString(date.charAt(3)) + Character.toString(date.charAt(4)); double totalPresentes = getTotalPresentesEnGrupo(id_grupo, mes); double totalAusentes = getTotalAusentesEnGrupo(id_grupo, mes); double porcentajeInasistencia = Maths .redondearDecimales((totalAusentes * 100) / (totalPresentes + totalAusentes), NUM_DEC); return porcentajeInasistencia; } // Clculo de la media de asistencia por mes public double getMediaDeAsistencia(Integer id_grupo, String date) throws SQLException { String mes = Character.toString(date.charAt(3)) + Character.toString(date.charAt(4)); double totalPresentes = getTotalPresentesEnGrupo(id_grupo, mes); double diasHabiles = getDiasHabiles(id_grupo, mes); double mediaAsistencia = Maths.redondearDecimales(totalPresentes / diasHabiles, NUM_DEC); return mediaAsistencia; } // Clculo de la asistencia por mes (total) public Integer getAsistenciaPorMes(Integer id_grupo, String date) throws SQLException { String mes = Character.toString(date.charAt(3)) + Character.toString(date.charAt(4)); Integer totalPresentes = getTotalPresentesEnGrupo(id_grupo, mes); return totalPresentes; } // Clculo de la inasistencia por mes (total) public Integer getInasistenciaPorMes(Integer id_grupo, String date) throws SQLException { String mes = Character.toString(date.charAt(3)) + Character.toString(date.charAt(4)); Integer totalAusentes = getTotalAusentesEnGrupo(id_grupo, mes); return totalAusentes; } // Clculo de la asistencia en la semana public Integer totalAsistenciaPorSemana(Integer id_grupo, ArrayList<String> fechas) throws SQLException { ResultSet rs = super.consultar("SELECT FECHA, ASISTENCIA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' ORDER BY ASISTENCIA.ASISTENCIA_ID DESC"); Integer asistencias = 0; while (rs.next()) { for (String f : fechas) { if (rs.getString("FECHA").equals(f)) { if (rs.getInt("ASISTENCIA") == 1 || rs.getInt("ASISTENCIA") == 3) { asistencias++; } } } } return asistencias; } // Clculo de la inasistencia en la semana public Integer totalInasistenciaPorSemana(Integer id_grupo, ArrayList<String> fechas) throws SQLException { ResultSet rs = super.consultar("SELECT FECHA, ASISTENCIA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' ORDER BY ASISTENCIA.ASISTENCIA_ID DESC"); Integer inasistencias = 0; while (rs.next()) { for (String f : fechas) { if (rs.getString("FECHA").equals(f)) { if (rs.getInt("ASISTENCIA") == 2) { inasistencias++; } } } } return inasistencias; } // Obtener las estadsticas del alumno por semana public ArrayList<Integer> getAsistenciaPorAlumnoByFecha(Integer id_grupo, Integer id_alumno, ArrayList<String> fechas) throws SQLException { ResultSet rs = super.consultar("SELECT FECHA, ASISTENCIA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' AND ALUMNO_ID = '" + id_alumno + "' ORDER BY ASISTENCIA.ASISTENCIA_ID DESC"); ArrayList<Integer> assist = new ArrayList<Integer>(); assist.add(0, 0); assist.add(1, 0); assist.add(2, 0); while (rs.next()) { for (String f : fechas) { if (f.equals(rs.getString("FECHA"))) { switch (rs.getInt("ASISTENCIA")) { case 1: assist.set(0, assist.get(0) + 1); break; case 2: assist.set(1, assist.get(1) + 1); break; case 3: assist.set(2, assist.get(2) + 1); break; default: break; } } } } return assist; } // Obtener las estadsticas del alumno por mes public ArrayList<Integer> getAsistenciaPorAlumnoByMes(Integer id_grupo, Integer id_alumno, String fecha) throws SQLException { String mes = Character.toString(fecha.charAt(3)) + Character.toString(fecha.charAt(4)); ResultSet rs = super.consultar("SELECT FECHA, ASISTENCIA FROM ASISTENCIA WHERE GRUPO_ID = '" + id_grupo + "' AND ALUMNO_ID = '" + id_alumno + "' ORDER BY ASISTENCIA.ASISTENCIA_ID DESC"); ArrayList<Integer> assist = new ArrayList<Integer>(); assist.add(0, 0); assist.add(1, 0); assist.add(2, 0); while (rs.next()) { String fechaDB = rs.getString("FECHA"); String mesDB = Character.toString(fechaDB.charAt(3)) + Character.toString(fechaDB.charAt(4)); if (mesDB.equals(mes)) { switch (rs.getInt("ASISTENCIA")) { case 1: assist.set(0, assist.get(0) + 1); break; case 2: assist.set(1, assist.get(1) + 1); break; case 3: assist.set(2, assist.get(2) + 1); break; default: break; } } } return assist; } // A partir de una fecha obtengo las fechas de los dias hbiles de esa semana public ArrayList<String> getDiasDeSemanaByFecha(String fecha) throws ParseException { ArrayList<String> list = new ArrayList<String>(); String auxFecha = fecha; // Busco el lunes de la semana while (true) { if (getDayName(auxFecha).equals("Monday")) { for (int i = 0; i < 5; i++) { list.add(i, auxFecha); auxFecha = sumarDias(auxFecha, 1); } break; } else { auxFecha = restarDias(auxFecha, 1); } } return list; } // Mtodo para restar dias a una fecha dada private String restarDias(String fecha, Integer cantidad) throws ParseException { DateTime dateTime = DateTime.parse(fecha, DateTimeFormat.forPattern("dd-MM-yyyy")); dateTime = dateTime.minusDays(cantidad); return dateTime.toString("dd-MM-yyyy"); } // Mtodo para sumar dias a una fecha dada private String sumarDias(String fecha, Integer cantidad) throws ParseException { DateTime dateTime = DateTime.parse(fecha, DateTimeFormat.forPattern("dd-MM-yyyy")); dateTime = dateTime.plusDays(cantidad); return dateTime.toString("dd-MM-yyyy"); } // Mtodo para obtener el nombre del da private static String getDayName(String fecha) throws ParseException { Date date = new SimpleDateFormat("d-M-yyyy").parse(fecha); String dayName = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date); return dayName; } }