diff --git a/UyTube_logica/src/Logica/Controladores/CUsuario.java b/UyTube_logica/src/Logica/Controladores/CUsuario.java index 86e14e6bfb145c060afda45b93b8d7fd2cfec74d..3080ca81d80447b1411790f77db4365cd771cfbc 100644 --- a/UyTube_logica/src/Logica/Controladores/CUsuario.java +++ b/UyTube_logica/src/Logica/Controladores/CUsuario.java @@ -652,7 +652,17 @@ public class CUsuario implements IUsuario { } return usuarioSeleccionado.obtenerCanal(); } - + + @Override + public DtUsuario obtenerPropietarioDeCanal(int idCanal){ + for (Map.Entry<String, Usuario> u : this.obtenerUsuarios().entrySet()){ + if (u.getValue().obtenerCanal().getId() == idCanal){ + return u.getValue().getDT(); + } + } + throw new RuntimeException("El iID de canal no crresponde a ningun usuario"); + } + @Override public DtUsuario obtenerPropietarioDeVideo(int idVideo) { // Esto es un parche, pero de los que nunca se despegan... diff --git a/UyTube_logica/src/Logica/Interfaces/IUsuario.java b/UyTube_logica/src/Logica/Interfaces/IUsuario.java index 2cb89b3562efc84c415d80dd39d66614f4537973..0d0ba5d286edaaa6108ed944a52a4e7e4bb33647 100644 --- a/UyTube_logica/src/Logica/Interfaces/IUsuario.java +++ b/UyTube_logica/src/Logica/Interfaces/IUsuario.java @@ -245,6 +245,14 @@ public interface IUsuario { */ public DtCanal obtenerCanalDeUsuario(); + /** + * Busca entre todos los usuarios al propietario del canal con el ID indicado + * + * @param idCanal ID del canal + * @return Datos del usuario + */ + public DtUsuario obtenerPropietarioDeCanal(int idCanal); + /** * Busca entre todos los usuarios al propietario del video con el ID indicado * diff --git a/UyTube_web/libreria/UyTube_logica.jar b/UyTube_web/libreria/UyTube_logica.jar index 27652ad8f937c9e5ecefab8708eeb1aa8750aca7..cfa8c2a4d35dae34e5142dc11294aef0678de49e 100644 Binary files a/UyTube_web/libreria/UyTube_logica.jar and b/UyTube_web/libreria/UyTube_logica.jar differ diff --git a/UyTube_web/src/java/com/uytube/Buscar.java b/UyTube_web/src/java/com/uytube/Buscar.java index 341afca71c84bd1fea586fb3468319b87ab2e483..670edd871522ca7d9609463397b023079c238d1e 100644 --- a/UyTube_web/src/java/com/uytube/Buscar.java +++ b/UyTube_web/src/java/com/uytube/Buscar.java @@ -5,8 +5,15 @@ */ package com.uytube; +import Logica.Enumerados.Filtrado; +import Logica.Enumerados.Ordenacion; +import Logica.Enumerados.Privacidad; +import Logica.Fabrica; +import Logica.Interfaces.IUsuario; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -18,32 +25,6 @@ import javax.servlet.http.HttpServletResponse; */ public class Buscar extends HttpServlet { - /** - * Processes requests for both HTTP <code>GET</code> and <code>POST</code> - * methods. - * - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - protected void processRequest(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - response.setContentType("text/html;charset=UTF-8"); - try (PrintWriter out = response.getWriter()) { - /* TODO output your page here. You may use following sample code. */ - out.println("<!DOCTYPE html>"); - out.println("<html>"); - out.println("<head>"); - out.println("<title>Servlet Buscar</title>"); - out.println("</head>"); - out.println("<body>"); - out.println("<h1>Servlet Buscar at " + request.getContextPath() + "</h1>"); - out.println("</body>"); - out.println("</html>"); - } - } - // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. @@ -56,21 +37,58 @@ public class Buscar extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - processRequest(request, response); - } + try { + IUsuario sys = Fabrica.getInstancia().getIUsuario(); + //----------------------------------------------------- + String Categoria = request.getParameter("categoria"); + String Texto = request.getParameter("texto"); + String Filtro = request.getParameter("filtro"); + String Orden = request.getParameter("orden"); + //------------------------------------------------------ + ArrayList<Object> Ret = null; - /** - * Handles the HTTP <code>POST</code> method. - * - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - processRequest(request, response); + if (Categoria == null || Categoria.equals("")) { + Filtrado Fil = Filtrado.TODO; + Ordenacion ord = Ordenacion.FECHA_DESCENDENTE; + + if (Filtro != null && Filtro.equals("CANALES")) { + Fil = Filtrado.CANALES; + } + if (Filtro != null && Filtro.equals("LISTAS_DE_REPRODUCCION")) { + Fil = Filtrado.LISTAS_DE_REPRODUCCION; + } + if (Filtro != null && Filtro.equals("VIDEOS")) { + Fil = Filtrado.VIDEOS; + } + if (Orden != null && Orden.equals("ALFABETICO")) { + ord = Ordenacion.ALFABETICA_ASCENDENTE; + } + + String comilla = "" + (char) 34; + String vacio = ""; + Texto = Texto.replaceAll(comilla, vacio); + + if (Texto.equals("")){ + Texto = " "; + } + + Ret = sys.buscar(Texto, Fil, ord); + + } else { + Ret = sys.buscar(Categoria); + } + + request.setAttribute("Lista", Ret); + + RequestDispatcher rd; //objeto para despachar + rd = request.getRequestDispatcher("/Buscar.jsp"); + rd.forward(request, response); + + } catch (Exception e) { + RequestDispatcher rd; //objeto para despachar + rd = request.getRequestDispatcher("/"); + rd.forward(request, response); + } } /** diff --git a/UyTube_web/web/Buscar.jsp b/UyTube_web/web/Buscar.jsp index 6756fb8f317358cf109811d5ac7a346ec13c3ca1..06cb4e42be67b6f512840c1a566e486b47ee9618 100644 --- a/UyTube_web/web/Buscar.jsp +++ b/UyTube_web/web/Buscar.jsp @@ -4,6 +4,12 @@ Author : administrador --%> +<%@page import="Logica.DataType.DtUsuario"%> +<%@page import="Logica.Fabrica"%> +<%@page import="Logica.DataType.DtVideo"%> +<%@page import="Logica.DataType.DtListaDeReproduccion"%> +<%@page import="Logica.DataType.DtCanal"%> +<%@page import="java.util.ArrayList"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> @@ -27,7 +33,18 @@ <div class="container-fluid"> <div class="row"> <div class="col-12"> + <!-- Inclusion de la barra superior --> + <% + if (false){ + %> <%@ include file='include/header-usuario.html' %> + <% + }else{ + %> + <%@ include file='include/header-visitante.html' %> + <% + } + %> </div> </div> </div> @@ -94,48 +111,101 @@ <!--LISTA DE CONTENIDO--> <div class="tab-pane fade show active" id="videos" role="tabpanel" aria-labelledby="nav-VIDEO-tab"> - - <br><div class="lista bd-highlight"> + <% + ArrayList<Object> lista = (ArrayList) request.getAttribute("Lista"); + for (Object o : lista){ + if (o instanceof DtVideo){ + DtVideo e = (DtVideo) o; + String miniatura = Funciones.Funciones.obtenerImagenDeVideo( + Funciones.Funciones.extraerIDYoutube(e.getUrlVideoOriginal()), + 2 + ); + %> + <div class="video"> <div class="bd-highlight caja-imagen"> - <div class="bd-highlight "> - <img src="imagenes/lista.jpg" alt="lista"> + <div class="bd-highlight"> + <a href="video-consultar?id=<%= e.getId() %>"> + <img src="<%= miniatura %>" width="246" height="138"> + </a> </div> </div> - <div class=" bd-highlight caja-texto"> - <div class="overflow-auto bg-light" > - <h5 class="mt-0">Titulo de la Lista</h5> - <p>Descripcion de la lista: EMI Music Publishing, Warner Chappell, UNIAO BRASILEIRA DE EDITORAS DE MUSICA - UBEM, LatinAutor, ASCAP, LatinAutor - SonyATV y 4 sociedades de derechos musicales</p> + <div class="bd-highlight caja-texto justify-content-start"> + <div class="bg-light" > + <h5 class="mt-0"> + <a href="video-consultar?id=<%= e.getId() %>"> + <%= e.getNombre() %> + </a> + </h5> + <p><%= e.getDescripcion() %></p> </div> </div> - </div><br> - - <div class="video"> + </div> + <br> + <% + }else if (o instanceof DtListaDeReproduccion){ + DtListaDeReproduccion e = (DtListaDeReproduccion) o; + %> + <br><div class="lista bd-highlight"> <div class="bd-highlight caja-imagen"> - <div class="bd-highlight"> - <a href="/uytube/video-consulta&id=1234"><img src="https://i.ytimg.com/vi/OVjbqdm_JVI/hqdefault.jpg"></a> + <div class="bd-highlight "> + <a href="lista-consultar?id=<%= e.getId()%>"> + <img src="imagenes/lista.jpg" alt="lista" width="246" height="138"> + </a> + </div> </div> - <div class="bd-highlight caja-texto"> - <div class="bg-light" > - <h5 class="mt-0">Titulo del video</h5> - <p>Descripcion del video: EMI Music Publishing, Warner Chappell, UNIAO BRASILEIRA DE EDITORAS DE MUSICA - UBEM, LatinAutor, ASCAP, LatinAutor - SonyATV y 4 sociedades de derechos musicales</p> + <div class=" bd-highlight caja-texto justify-content-start"> + <div class="overflow-auto bg-light" > + <h5 class="mt-0"> + <a href="lista-consultar?id=<%= e.getId() %>"> + <%= e.getNombre() %> + </a> + </h5> + <p>CategorÃa: <%= e.getCategoria() %></p> </div> </div> - </div><br> - + </div> + <br> + <% + }else if (o instanceof DtCanal){ + DtCanal e = (DtCanal) o; + // buena suerte entendiendo esto... + DtUsuario usu = Fabrica.getInstancia().getIUsuario().obtenerPropietarioDeCanal(e.getId()); + String imagenCanal; + if (usu.getImagen() == null || usu.getImagen().equals("")){ + imagenCanal = "imagenes/ukp.png"; + }else{ + imagenCanal = usu.getImagen(); + } + %> <div class="canal bd-highlight"> <div class="bd-highlight caja-imagen"> <div class="bd-highlight"> - <img src="imagenes/mestruli.jpg" class="align-self-center rounded-circle" alt="Cinque Terre" > + <a href="usuario-consultar?id=<%= usu.getNickname() %>"> + <img src="<%= imagenCanal %>" class="align-self-center rounded-circle" alt="Cinque Terre" > + </a> </div> </div> - <div class="bd-highlight caja-texto"> + <div class="bd-highlight caja-texto justify-content-start"> <div class="overflow-auto bg-light"> - <h5 class="mt-0">Nombre del canal</h5> - <p>Descripcion del canal: EMI Music Publishing, Warner Chappell, UNIAO BRASILEIRA DE EDITORAS DE MUSICA - UBEM, LatinAutor, ASCAP, LatinAutor - SonyATV y 4 sociedades de derechos musicales</p> + <h5 class="mt-0"> + <a href="usuario-consultar?id=<%= usu.getNickname() %>"> + <%= e.getNombre() %> + </a> + </h5> + <p><%= e.getDescripcion() %></p> </div> </div> - </div><br> + </div> + <br> + <% + } + } + %> + + + + </div> <!--FIN de LISTA DE CONTENIDO-->