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ón a la base de datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los nuevos\
datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde \
donde se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ículos en Revistas y coloca \
sus resultados en la List datos.
* @param con Connection con la conexión a la base de \
datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los nuevos\
datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde\
donde se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ítulos de Libros y coloca sus\
resultados en la List datos.
* @param con Connection con la conexión a la base de datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los nuevos\
datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde\
donde se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ón a la base de datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los nuevos datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde donde se buscará
* @param group String con un número que indica el número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ón a la base de \
datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los \
nuevos datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" \
desde donde se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ón a la base de \
datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los \
nuevos datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde\
donde se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ón a la base \
de datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los \
nuevos datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde\
donde se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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ón a la base de datos
* @param stmt Statement creado anteriormente
* @param datos List con donde serán colocados los nuevos \
datos conseguidos
* @param date String con fecha de la forma "YYYY-MM-DD" desde donde\
se buscará
* @param group String con un número que indica el \
número de grupo del DID a buscar
* @param year int con el a~no donde se hará 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();
}
}
}