Skip to content
Snippets Groups Projects
Commit 79d2850a authored by JotaJota96's avatar JotaJota96
Browse files

Hecho: Busqueda por categoria con resultado ordenado por fecha

parent 049595b1
No related branches found
No related tags found
No related merge requests found
......@@ -23,11 +23,16 @@ public class BusquedaEnBDD implements Serializable {
public BusquedaEnBDD(EntityManagerFactory emf) {
this.emf = emf;
}
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
/**
* Devuelve un listado de Video y ListaDeReproduccion que pertenezcan ala
* categoria indicada, ordenado por fecha de actividasd reciente
* @param cat Categoria a buscar
* @return Lista ordenada Video y ListaDeReproduccion
*/
public List<Object> buscarPorCategoria(String cat) {
EntityManager em = getEntityManager();
List<Object> ret = new ArrayList();
......@@ -42,7 +47,13 @@ public class BusquedaEnBDD implements Serializable {
q.setParameter(1, cat);
ret.addAll(q.getResultList());
return ret;
return ParDeObjetos.extraerElementos(
ordenar(
fecharElementos(
(ArrayList<Object>) ret
)
)
);
} finally {
em.close();
}
......@@ -97,4 +108,47 @@ public class BusquedaEnBDD implements Serializable {
return ret;
}
/**
* Ordena la lista de pares recibida
* @param lista Lista a ordenar
* @return Lista ordenada
*/
public ArrayList<ParDeObjetos> ordenar(ArrayList<ParDeObjetos> lista){
if (lista == null || lista.isEmpty()){
return new ArrayList();
}
ParDeObjetos par = lista.remove(0);
ArrayList<ParDeObjetos> listaOrdenada = ordenar(lista);
int i = 0;
for (; i < listaOrdenada.size(); i++){
ParDeObjetos p = listaOrdenada.get(i);
if (comparar(p, par) < 0){
break;
}
}
listaOrdenada.add(i, par);
return listaOrdenada;
}
/**
* Compara dos pares de objetos
* @param a Primer par a comparar
* @param b Segundo par a comparar
* @return 0 si (a == b), -1 si (a < b), 1 si (a > b)
*/
private int comparar(ParDeObjetos a, ParDeObjetos b){
if (a.getOrderField().getClass() == String.class){
String str1 = (String) a.getOrderField();
String str2 = (String) b.getOrderField();
return str1.compareToIgnoreCase(str2);
}else if (a.getOrderField().getClass() == java.sql.Date.class){
java.sql.Date date1 = (java.sql.Date) a.getOrderField();
java.sql.Date date2 = (java.sql.Date) b.getOrderField();
return date1.compareTo(date2);
}
return 0;
}
}
package JPAControllerClasses;
import java.util.ArrayList;
public class ParDeObjetos {
private Object element;
private Object orderField;
......@@ -26,5 +28,13 @@ public class ParDeObjetos {
}
public static ArrayList<Object> extraerElementos(ArrayList<ParDeObjetos> lista){
ArrayList<Object> ret = new ArrayList();
for (ParDeObjetos par : lista){
ret.add(par.getElement());
}
return ret;
}
}
package Logica;
import JPAControllerClasses.BusquedaEnBDD;
import JPAControllerClasses.ParDeObjetos;
import Logica.Clases.Categoria;
import Logica.Clases.ListaDeReproduccion;
import Logica.Clases.Video;
import Logica.Interfaces.IAdmin;
import Logica.Interfaces.IUsuario;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
......@@ -47,14 +44,13 @@ public class DatosDePrueba {
}
*/
for (ParDeObjetos pdo : new BusquedaEnBDD().fecharElementos((ArrayList<Object>) new BusquedaEnBDD().buscarPorCategoria("MUSICA"))){
System.out.print(pdo.getOrderField());
System.out.print(" >> ");
Object o = pdo.getElement();
for (Object o : new BusquedaEnBDD().buscarPorCategoria("MUSICA")){
if (o.getClass() == Video.class){
Video i = (Video) o;
System.out.print(i.getFechaPublicacion());
System.out.print(" >> ");
System.out.println(i.getNombre());
}else if (o.getClass() == ListaDeReproduccion.class){
ListaDeReproduccion i = (ListaDeReproduccion) o;
......@@ -62,6 +58,8 @@ public class DatosDePrueba {
}
}
} catch (Exception e) {
System.out.println("//////////////////////////");
System.out.println(e.getMessage());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment