next up previous contents
Siguiente: TransformXML.java Subir: C'odigo principal del Web Anterior: Servidor.java   Índice General

ConexionBD.java

import java.sql.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;


/*
 * Adaptado por Daniel Moros y Yannixia Castellanos de proyecto de \
 Sergio Naranjos
 * Proyecto de Grado
 * Tutor Kenyer Dominguez
 * Ultima Fecha Modificacion: Febrero de 2010
 * Notas:
 *        - Mejorada la eficiencia, mantenibilidad y escalabilidad.
 *        - Agregada Documentacion
 *
 */
/**
 * ConexionBD es una clase que se encarga de las conexiones a la \
 base de datos
 * y la creación de queries para las diferentes actividades.
 *
 * @author Yannixia Castellanos, Daniel Moros y Sergio Naranjo
 */

public class ConexionBD {

    /**
     * Obtiene los datos desde un archivo llamado 'sinai.conf' \
     localizado en el
     * mismo directorio donde fue iniciado el tomcat. En caso de\
      no conseguir ese
     * archivo o tener algún problema leyéndolo \
     cargará los datos por defecto
     * (user=diduser, pass=asdfasdf, host=localhost)
     * @param user String con el nombre del usuario de la base de\
      datos a conectar
     * @param pass String con el password del usuario introducido
     * @param host dirección del host a conectar
     */
    private static void obtenerDatosArchivoConfiguracion (String \
    user, String pass, String host) {
        try{

            Properties props = new Properties();
            FileInputStream fis = new FileInputStream("./sinai.conf");
            props.load( fis );
            fis.close();
            String user1 = props.getProperty( "user" );
            String pass1=props.getProperty("pass");
            String host1=props.getProperty("host");
            user = user1;
            pass= pass1;
            host=host1;
            System.out.println("El archivo sinai.conf fue cargado \
            satisfactoriamente");

        }
        catch(Exception e)
            {
                System.out.println("Exception: no se ha conseguido \
                propiedades " +
                        "dentro del archivo de configuracion\n"+e+"\n \
                        Se cargaran datos por defecto");
            }
    }

    /**
     * Devuelve un List con todas las actividades del grup 'group' que \
     fueron realizadas
     * entre la fecha 'date' y la actualidad.
     * @param date String con la fecha desde la cual se quiere buscar las\
      actividades
     * y escrita de la forma "YYYY-MM-DD"
     * @param group String con el número de grupo del DID. De la \
     forma "33"
     * @return List con todos los datos de las Actividades conseguidas en\
      la Base
     * de Datos del SINAI
     */
	public static List obtenerDatosDeMySQL(String date, String group) \
	throws Exception {

            List datos = new LinkedList();
            datos = new ArrayList();

            try {
			//Carga del driver
                Class.forName("com.mysql.jdbc.Driver");

			//Conexion
                java.util.Calendar fec = java.util.Calendar.getInstance();
                int year = fec.get(java.util.Calendar.YEAR);


		String user = "diduser";
		String pass = "asdfasdf";
                String host = "localhost";

                obtenerDatosArchivoConfiguracion( user,  pass, host);
                String ruta = "//"+host+"/sinai_"+year;

		Connection con = DriverManager.getConnection("jdbc:mysql:"+ruta,\
		user,pass);

			//Indicador
		System.out.println("Cargando datos...");

			//Llenado del List

	        // Creacion del query
	        Statement stmt = con.createStatement();

		int date_year = Integer.parseInt(date.substring(0,4));

                for (int i=date_year; i<=year; i++) {
                                    //memorias
                    getInPFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                            //articulos
                    getArtFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                    //capitulos libros
                    getInBFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                            //libros
                    getBooFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                            //informes
                    getInfFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                            //proyectos
                    getProFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                            //proyectos de grado
                    getPrGFromMySQL(con,stmt,datos,date,group,i);
                }
                for (int i=date_year; i<=year; i++) {
                            //premios
                    getAwaFromMySQL(con,stmt,datos,date,group,i);
                }
			//Cierre de la conexion
                con.close();
		System.out.println("Fin de la conexion a la BD");
		}
            catch( ClassNotFoundException e ) {
			//Falla de la carga del driver
                e.printStackTrace();
            }
            catch ( SQLException e) {
		//System.out.println("Fue imposible acceder a la BD");
		e.printStackTrace();
                throw(e);
            }
            return datos;
        }


	/**
         * Obtiene los datos de Memorias y coloca sus resultados en la \
         List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los nuevos\
          datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde \
         donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda\
          en la Base de Datos
         */

    private static void getInPFromMySQL(Connection con, Statement stmt, \
    List datos, String date, String group, int year)    {

            try {
                String query = "SELECT AM.Correo,M.Titulo,M.Fecha,\
                A.Observaciones,A.FechaIngreso,";
                query+= "M.Congreso,M.Ciudad,M.Pais,M.NombreMedio,\
                M.Volumen,M.PagInicial,";
                query+= "M.PagFinal,M.ISBN ";
                query+= "FROM sinai_"+year+".Actividades A, sinai_"+year+\
                ".Memorias M, ";
                query+= "sinai_"+year+".AutoresMemorias AM ";
                query+= "WHERE A.Id=AM.IdAct AND AM.IdAct=M.Id AND \
                AM.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND \
                A.Grupo1='"+group+"'";
/*                                  ...
                       query+= "(SELECT Date_format('2000-02-15',\
                       '%Y')))) AND A.Grupo1='"+group+"'";
*/
            //Prueba del query
            //System.out.println(query);
    // Creacion del result set
                ResultSet rs = stmt.executeQuery(query);

                List mail = new LinkedList();
                mail = new ArrayList();
                String tc = "";

                while (rs.next()) {
                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {
                        String congreso = rs.getString("Congreso");
                        String ciudad = rs.getString("Ciudad");
                        String pais = rs.getString("Pais");
                        String fecha = rs.getString("Fecha");
                        String nombremedio = rs.getString("NombreMedio");
                        String volumen = rs.getString("Volumen");
                        String paginicial = rs.getString("PagInicial");
                        String pagfinal = rs.getString("PagFinal");
                        String ISBN = rs.getString("ISBN");
                        String note = rs.getString("Observaciones");
                        String fechaIngreso = rs.getString("FechaIngreso");
                        if (!tc.equals("")) {
                            int jj = 0;
                            int nn = mail.size();
                            List mail_k = new LinkedList();
                            mail_k = new ArrayList();
                            while (jj < nn) {
                                mail_k.add(mail.get(jj));
                                jj++;
                            }
                            datos.add(mail_k);
                            mail.clear();
                        }

                        mail.add(correo);
                        String memorias = "InProceedings";
                        datos.add(memorias);
                        datos.add(title);
                        datos.add(congreso);
                        datos.add(ciudad);
                        datos.add(pais);
                        datos.add(fecha);
                        datos.add(nombremedio);
                        datos.add(volumen);
                        if (paginicial == null)
                            datos.add("");
                        else
                            datos.add(paginicial);

                        if (pagfinal == null)
                            datos.add("");
                        else
                            datos.add(pagfinal);

                        if (ISBN == null)
                            datos.add("");
                        else
                            datos.add(ISBN);

                        if (note == null)
                            datos.add("");
                        else
                            datos.add(note);

                        datos.add(fechaIngreso);
                        tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
            }
            //ultimo set de correos
            datos.add(mail);
        } catch ( SQLException e) {
                    //Si falla la conexion
                    //System.out.println("Fue imposible acceder a la BD");
                    e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Art&#x00ED;culos en Revistas y coloca \
         sus resultados en la List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de \
         datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los nuevos\
          datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde\
          donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda\
          en la Base de Datos
         */

	private static void getArtFromMySQL(Connection con, Statement stmt,\
	 List datos, String date, String group, int year) {

            try {

                String query = "SELECT AR.Correo,R.Titulo,R.Fecha,\
                A.Observaciones,A.FechaIngreso,";
                query+= "R.Revista,R.Indice,R.PagInicial,R.PagFinal,\
                R.Volumen ";
                query+= "FROM sinai_"+year+".Actividades A, sinai_"+\
                year+".Revistas R, ";
                query+= "sinai_"+year+".AutoresRevistas AR ";
                query+= "WHERE A.Id=AR.IdAct AND AR.IdAct=R.Id AND \
                AR.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND A.Grupo1=\
                '"+group+"'";
                       /*       ...
                               query+= "(SELECT Date_format('2000-02-15',\
                               '%Y')))) AND A.Grupo1='"+group+"'";
        */
            //Prueba del query
            //System.out.println(query);
                // Creacion del result set
                ResultSet rs = stmt.executeQuery(query);

                List mail = new LinkedList();
                mail = new ArrayList();
                String tc = "";

                while (rs.next()) {
                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {
                        String journal = rs.getString("Revista");
                        String fecha = rs.getString("Fecha");
                        String volume = rs.getString("Volumen");
                        String pagini = rs.getString("PagInicial");
                        String pagfin = rs.getString("PagFinal");
                        String note = rs.getString("Observaciones");
                        String indice = rs.getString("Indice");
                        String fechaIngreso = rs.getString(\
                        "FechaIngreso");

                        if (!tc.equals("")) {
                                int jj = 0;
                                int nn = mail.size();
                                List mail_k = new LinkedList();
                        mail_k = new ArrayList();
                                while (jj < nn) {
                                        mail_k.add(mail.get(jj));
                                        jj++;
                                }
                                datos.add(mail_k);
                                mail.clear();
                        }

                        mail.add(correo);
                        String article = "Article";
                        datos.add(article);

                        datos.add(title);
                        datos.add(journal);
                        datos.add(fecha);
                        if (volume == null)
                            datos.add("");
                        else
                            datos.add(volume);

                        if (pagini == null)
                            datos.add("");
                        else
                            datos.add(pagini);

                        if (pagfin == null)
                            datos.add("");
                        else
                            datos.add(pagfin);

                        if (note == null)
                                datos.add("");
                        else
                            datos.add(note);

                        if (indice == null)
                            datos.add("");
                        else
                            datos.add(indice);

                        datos.add(fechaIngreso);

                        tc = title;
                        }
                    else {
                        mail.add(correo);
                        }
                }

            //ultimo set de correos
            datos.add(mail);
            }
            catch ( SQLException e) {
                    //Si falla la conexion
                    //System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Cap&#x00ED;tulos de Libros y coloca sus\
          resultados en la List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los nuevos\
          datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde\
          donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda\
          en la Base de Datos
         */

	private static void getInBFromMySQL(Connection con, Statement stmt,\
	 List datos, String date, String group, int year) {

            try {

                String query = "SELECT ACL.Correo,C.Titulo,C.Fecha,\
                A.Observaciones,A.FechaIngreso,";
		query+= "C.Editorial,C.Editores,C.Ciudad,C.Pais,C.PagInicial,\
		C.PagFinal,";
		query+= "C.ISBN ";
		query+= "FROM sinai_"+year+".Actividades A, sinai_"+year+".\
		CapitulosLibros C, ";
		query+= "sinai_"+year+".AutoresCapitulosLibros ACL ";
		query+= "WHERE A.Id=ACL.IdAct AND ACL.IdAct=C.Id AND \
		ACL.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND A.Grupo1=\
                '"+group+"'";
/*                                  ...
				   query+= "(SELECT Date_format('2000-02-15',\
				   '%Y')))) AND A.Grupo1='"+group+"'";
	    */
	    	//Prueba del query
	    	//System.out.println(query);
		    // Creacion del result set
		ResultSet rs = stmt.executeQuery(query);

		List mail = new LinkedList();
	   	mail = new ArrayList();
		String tc = "";

		while (rs.next()) {

                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {

                            String editorial = rs.getString("Editorial");
                            String editores = rs.getString("Editores");
                            String ciudad = rs.getString("Ciudad");
                            String pais = rs.getString("Pais");
                            String fecha = rs.getString("Fecha");
                            String pagini = rs.getString("PagInicial");
                            String pagfin = rs.getString("PagFinal");
                            String note = rs.getString("Observaciones");
                            String ISBN = rs.getString("ISBN");
                            String fechaIngreso = rs.getString("FechaIngreso");

                            if (!tc.equals("")) {
                                int jj = 0;
                                int nn = mail.size();
                                List mail_k = new LinkedList();
                                mail_k = new ArrayList();
                                while (jj < nn) {
                                    mail_k.add(mail.get(jj));
                                    jj++;
                                }
                                datos.add(mail_k);
                                mail.clear();
                            }

                            mail.add(correo);
                            String inbook = "InBook";
                            datos.add(inbook);

                            datos.add(title);
                            datos.add(editorial);
                            datos.add(editores);
                            datos.add(ciudad);
                            datos.add(pais);
                            datos.add(fecha);
                            datos.add(pagini);
                            datos.add(pagfin);
                            if (note == null)
                                datos.add("");
                            else
                                datos.add(note);

                            datos.add(ISBN);
                            datos.add(fechaIngreso);

                            tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
	    	}

	    	//ultimo set de correos
	    	datos.add(mail);
	    }
            catch ( SQLException e) {
			//Si falla la conexion
			//System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Libros y coloca sus resultados en la List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los nuevos datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda en la Base de Datos
         */

	private static void getBooFromMySQL(Connection con, Statement stmt, List datos, String date, String group, int year) {

            try {

		String query = "SELECT AL.Correo,B.Titulo,B.Fecha,A.Observaciones,A.FechaIngreso,";
		query+= "B.Editorial,B.Ciudad,B.Pais,B.ISBN ";
		query+= "FROM sinai_"+year+".Actividades A, sinai_"+year+".Libros B, ";
                query+= "sinai_"+year+".AutoresLibros AL ";
                query+= "WHERE A.Id=AL.IdAct AND AL.IdAct=B.Id AND AL.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND A.Grupo1='"+group+"'";
		      /* 	   ...
				   query+= "(SELECT Date_format('2000-02-15','%Y')))) AND A.Grupo1='"+group+"'";
	    */
	    	//Prueba del query
	    	//System.out.println(query);
		    // Creacion del result set
                ResultSet rs = stmt.executeQuery(query);

                List mail = new LinkedList();
                mail = new ArrayList();
                String tc = "";

                while (rs.next()) {
                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {
                            String editorial = rs.getString("Editorial");
                            String ciudad = rs.getString("Ciudad");
                            String pais = rs.getString("Pais");
                            String fecha = rs.getString("Fecha");
                            String note = rs.getString("Observaciones");
                            String ISBN = rs.getString("ISBN");
                            String fechaIngreso = rs.getString("FechaIngreso");

                            if (!tc.equals("")) {
                                int jj = 0;
                                int nn = mail.size();
                                List mail_k = new LinkedList();
                                mail_k = new ArrayList();
                                while (jj < nn) {
                                        mail_k.add(mail.get(jj));
                                        jj++;
                                }
                                datos.add(mail_k);
                                mail.clear();
                            }

                            mail.add(correo);
                            String book = "Book";
                            datos.add(book);

                            datos.add(title);
                            datos.add(editorial);
                            datos.add(ciudad);
                            datos.add(pais);
                            datos.add(fecha);

                            if (note == null)
                                datos.add("");
                            else
                                datos.add(note);

                            datos.add(ISBN);
                            datos.add(fechaIngreso);

                            tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
	    	}

	    	//ultimo set de correos
	    	datos.add(mail);
	    }
            catch ( SQLException e) {
			//Si falla la conexion
			//System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Informes y coloca sus resultados en la \
         List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de \
         datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los \
         nuevos datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" \
         desde donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la \
         busqueda en la Base de Datos
         */

	private static void getInfFromMySQL(Connection con, Statement stmt,\
	 List datos, String date, String group, int year) {

            try {

                String query = "SELECT AI.Correo,I.Titulo,I.Fecha,\
                A.Observaciones,A.FechaIngreso,";
		query+= "I.Institucion,I.Evaluadores,I.Duracion ";
                query+= "FROM sinai_"+year+".Actividades A, sinai_"+\
                year+".Informes I, ";
                query+= "sinai_"+year+".AutoresInformes AI ";
                query+= "WHERE A.Id=AI.IdAct AND AI.IdAct=I.Id AND \
                AI.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND A.Grupo1=\
                '"+group+"'";
                           /*       ...
				   query+= "(SELECT Date_format('2000-02-15','%Y'))))\
				    AND A.Grupo1='"+group+"'";
	    */
	    	//Prueba del query
	    	//System.out.println(query);
		    // Creacion del result set
		ResultSet rs = stmt.executeQuery(query);

                List mail = new LinkedList();
                mail = new ArrayList();
                String tc = "";

                while (rs.next()) {
                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {
                        String fecha = rs.getString("Fecha");
                        String institucion = rs.getString("Institucion");
                        String evaluadores = rs.getString("Evaluadores");
                        String duracion = rs.getString("Duracion");
                        String note = rs.getString("Observaciones");
                        String fechaIngreso = rs.getString("FechaIngreso");

                        if (!tc.equals("")) {
                            int jj = 0;
                            int nn = mail.size();
                            List mail_k = new LinkedList();
                            mail_k = new ArrayList();
                            while (jj < nn) {
                                mail_k.add(mail.get(jj));
                                jj++;
                            }
                            datos.add(mail_k);
                            mail.clear();
                        }

                        mail.add(correo);
                        String report = "TechReport";
                        datos.add(report);

                        datos.add(title);
                        datos.add(fecha);
                        if (institucion == null)
                            datos.add("");
                        else
                            datos.add(institucion);

                        if (evaluadores == null)
                            datos.add("");
                        else
                            datos.add(evaluadores);

                        datos.add(duracion);

                        if (note == null)
                            datos.add("");
                        else
                            datos.add(note);

                        datos.add(fechaIngreso);

                        tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
	    	}

	    	//ultimo set de correos
	    	datos.add(mail);
	    }
            catch ( SQLException e) {
			//Si falla la conexion
			//System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Proyectos y coloca sus resultados en \
         la List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de \
         datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los \
         nuevos datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde\
          donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda\
          en la Base de Datos
         */

	private static void getProFromMySQL(Connection con, Statement stmt,\
	 List datos, String date, String group, int year) {

            try {
                String query = "SELECT AP.Correo,P.Titulo,P.Fecha,\
                A.Observaciones,A.FechaIngreso,";
		query+= "P.Institucion,P.Monto,P.Duracion,P.Resumen ";
		query+= "FROM sinai_"+year+".Actividades A, sinai_"+year+"\
		.Proyectos P, ";
                query+= "sinai_"+year+".AutoresProyectos AP ";
                query+= "WHERE A.Id=AP.IdAct AND AP.IdAct=P.Id AND \
                AP.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND A.Grupo1=\
                '"+group+"'";
               /*
                                     ...
				   query+= "(SELECT Date_format('2000-02-15','%Y'))))\
				    AND A.Grupo1='"+group+"'";
	    */
	    	//Prueba del query
	    	//System.out.println(query);
		    // Creacion del result set
		ResultSet rs = stmt.executeQuery(query);

                List mail = new LinkedList();
                mail = new ArrayList();
                String tc = "";

                while (rs.next()) {

                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {
                        String fecha = rs.getString("Fecha");
                        String duracion = rs.getString("Duracion");
                        String monto = rs.getString("Monto");
                        String institucion = rs.getString("Institucion");
                        String resumen = rs.getString("Resumen");
                        String note = rs.getString("Observaciones");
                        String fechaIngreso = rs.getString("FechaIngreso");

                        if (!tc.equals("")) {
                            int jj = 0;
                            int nn = mail.size();
                            List mail_k = new LinkedList();
                            mail_k = new ArrayList();
                            while (jj < nn) {
                                mail_k.add(mail.get(jj));
                                jj++;
                            }
                            datos.add(mail_k);
                            mail.clear();
                        }

                        mail.add(correo);
                        String project = "Project";
                        datos.add(project);

                        datos.add(title);
                        datos.add(fecha);
                        datos.add(duracion);
                        if (monto == null)
                            datos.add("");
                        else
                            datos.add(monto);

                        if (institucion == null)
                            datos.add("");
                        else
                            datos.add(institucion);

                        if (resumen == null)
                            datos.add("");
                        else
                            datos.add(resumen);

                        if (note == null)
                            datos.add("");
                        else
                            datos.add(note);

                        datos.add(fechaIngreso);

                        tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
                }

	    	//ultimo set de correos
	    	datos.add(mail);
	    }
            catch ( SQLException e) {
			//Si falla la conexion
			//System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Proyectos de Grado y coloca sus \
         resultados en la List datos.
         * @param con Connection con la conexi&#x00F3;n a la base \
         de datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los \
         nuevos datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde\
          donde se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda\
          en la Base de Datos
         */

	private static void getPrGFromMySQL(Connection con, Statement stmt,\
	 List datos, String date, String group, int year) {

            try {

                String query = "SELECT APG.Perfil,PG.Titulo,PG.Fecha,\
                A.Observaciones,A.FechaIngreso,";
		query+= "PG.TituloAcademico,PG.Nivel,TPG.Correo ";
                query+= "FROM sinai_"+year+".Actividades A, sinai_"+year+\
                ".ProyectosGrado PG, ";
                query+= "sinai_"+year+".AutoresProyectosGrado APG, ";
                query+= "sinai_"+year+".TutoresProyectosGrado TPG ";
                query+= "WHERE TPG.Correo != 'NULL' AND A.Id=APG.IdAct AND\
                 APG.IdAct=PG.Id AND TPG.IdAct=A.Id AND";
                query+= "'"+date+"' <= A.FechaIngreso AND A.Grupo1='"+group+\
                "'";
                           /*	   ...
				   query+= "(SELECT Date_format('2000-02-15','%Y')))) AND\
				    A.Grupo1='"+group+"'";
	    */
	    	//Prueba del query
	    	//System.out.println(query);
		    // Creacion del result set
		ResultSet rs = stmt.executeQuery(query);

		List mail = new LinkedList();
	   	mail = new ArrayList();
		String tc = "";

                while (rs.next()) {

                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {

                        String tituloacademico = rs.getString("TituloAcademico");
                        String nivel = rs.getString("Nivel");
                        String perfil = rs.getString("Perfil");
                        String fecha = rs.getString("Fecha");
                        String note = rs.getString("Observaciones");
                        String fechaIngreso = rs.getString("FechaIngreso");

                        if (!tc.equals("")) {
                            int jj = 0;
                            int nn = mail.size();
                            List mail_k = new LinkedList();
                            mail_k = new ArrayList();
                            while (jj < nn) {
                                mail_k.add(mail.get(jj));
                                jj++;
                            }
                            datos.add(mail_k);
                            mail.clear();
                        }

                        mail.add(correo);
                        String projectofdegree = "ProjectOfDegree";
                        datos.add(projectofdegree);

                        datos.add(title);
                        datos.add(tituloacademico);

                        if (nivel == null)
                            datos.add("");
                        else
                            datos.add(nivel);

                        datos.add(perfil);

                        if (fecha == null)
                            datos.add("");
                        else
                            datos.add(fecha);

                        if (note == null)
                            datos.add("");
                        else
                            datos.add(note);

                        datos.add(fechaIngreso);

                        tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
	    	}

	    	//ultimo set de correos
	    	datos.add(mail);
	    }
            catch ( SQLException e) {
			//Si falla la conexion
			//System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}


	/**
         * Obtiene los datos de Premios obtenidos y coloca sus resultados\
          en la List datos.
         * @param con Connection con la conexi&#x00F3;n a la base de datos
         * @param stmt Statement creado anteriormente
         * @param datos List con donde ser&#x00E1;n colocados los nuevos \
         datos conseguidos
         * @param date String con fecha de la forma "YYYY-MM-DD" desde donde\
          se buscar&#x00E1;
         * @param group String con un n&#x00FA;mero que indica el \
         n&#x00FA;mero de grupo del DID a buscar
         * @param year int con el a~no donde se har&#x00E1; la busqueda\
          en la Base de Datos
         */

	private static void getAwaFromMySQL(Connection con, Statement stmt, \
	List datos, String date, String group, int year) {

            try {
		String query = "SELECT AA.Correo,AW.Titulo,AW.Fecha,A.Observaciones,\
		A.FechaIngreso,";
                query+= "AW.Institucion ";
                query+= "FROM sinai_"+year+".Actividades A, sinai_"+year+"\
                .Premios AW, ";
                query+= "sinai_"+year+".AutoresPremios AA,\
                sinai_root.HistoricoProfesoresGrupos H,";
                query+= "sinai_root.Profesores Prof ";
                query+= "WHERE A.Id=AA.IdAct AND AA.IdAct=AW.Id AND \
                AA.Correo!='NULL' AND ";
                query+= "'"+date+"' <= A.FechaIngreso AND H.grupo='"+group+\
                "' AND ";
                query+= "AA.Correo=Prof.Correo AND Prof.Id=H.profesor";
                           /* ...
				   query+= "(SELECT Date_format('"+date+"','%Y')))) AND \
				   H.grupo='"+group+"' AND ";
				   query+= "AA.Correo=Prof.Correo AND Prof.Id=H.profesor";
*/

	    	//Prueba del query
	    	//System.out.println(query);
		    // Creacion del result set
		ResultSet rs = stmt.executeQuery(query);

                List mail = new LinkedList();
                mail = new ArrayList();
                String tc = "";

                while (rs.next()) {

                    String correo = rs.getString("Correo");
                    String title = rs.getString("Titulo");

                    if (!tc.equals(title)) {
                        String fecha = rs.getString("Fecha");
                        String institucion = rs.getString("Institucion");
                        String note = rs.getString("Observaciones");
                        String fechaIngreso = rs.getString("FechaIngreso");

                        if (!tc.equals("")) {
                            int jj = 0;
                            int nn = mail.size();
                            List mail_k = new LinkedList();
                            mail_k = new ArrayList();
                            while (jj < nn) {
                                mail_k.add(mail.get(jj));
                                jj++;
                            }
                            datos.add(mail_k);
                            mail.clear();
                        }

                        mail.add(correo);
                        String award = "Award";
                        datos.add(award);

                        datos.add(title);
                        datos.add(fecha);
                        if (institucion == null)
                            datos.add("");
                        else
                            datos.add(institucion);

                        if (note == null)
                            datos.add("");
                        else
                            datos.add(note);

                        datos.add(fechaIngreso);

                        tc = title;
                    }
                    else {
                        mail.add(correo);
                    }
	    	}

	    	//ultimo set de correos
	    	datos.add(mail);
	    }
            catch ( SQLException e) {
			//Si falla la conexion
			//System.out.println("Fue imposible acceder a la BD");
                e.printStackTrace();
            }
	}
}



Daniel Moros 2010-05-05