springboot.firststeps(P2)

peliculaController.java package es.taw.movies.controller; import es.taw.movies.dao.*; import es.taw.movies.entity.MovieCast; import es.taw.movies.entity.MovieCrew; import es.taw.movies.entity.Movies; import es.taw.movies.ui.Filtro; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @Controller public class PeliculaController { @Autowired ProductionCompaniesRepository productionCompaniesRepository; @Autowired MoviesRepository moviesRepository; @Autowired SpokenLanguagesRepository spokenLanguagesRepository; @Autowired MovieCastRepository movieCastRepository; @Autowired MovieCrewRepository movieCrewRepository; protected String listarConFiltro(Filtro filtro, Model model){ List peliculas; if(filtro== null || filtro.getProductoras().isEmpty()){ filtro = new Filtro(); peliculas = moviesRepository.findAll(); } else { peliculas = moviesRepository.findByProductionCompaniesList(filtro.getProductoras()); } model.addAttribute("peliculas", peliculas); model.addAttribute("productoras", productionCompaniesRepository.findAll()); model.addAttribute("filtro", filtro); return "peliculas"; } @GetMapping("/") public String doListar(Model model){ return listarConFiltro(null, model); // model.addAttribute("productoras", productionCompaniesRepository.findAll()); // model.addAttribute("filtro", new Filtro()); // model.addAttribute("peliculas", moviesRepository.findAll()); // // return "peliculas"; } @PostMapping("/filtrar") public String doFiltrar(Model model, @ModelAttribute("filtro")Filtro filtro){ return listarConFiltro(filtro, model); // List peliculas; // if(!filtro.getProductoras().isEmpty()){ // peliculas = moviesRepository.findByProductionCompaniesList(filtro.getProductoras()); // }else { // peliculas = moviesRepository.findAll(); // } // // model.addAttribute("peliculas", peliculas); // model.addAttribute("productoras", productionCompaniesRepository.findAll()); // model.addAttribute("filtro", filtro); // return "peliculas"; } @GetMapping("/editar") public String doEditar(@RequestParam("id")Integer id, Model model){ Movies pelicula = moviesRepository.findById(id).orElse(null); model.addAttribute("pelicula", pelicula); model.addAttribute("idiomas", spokenLanguagesRepository.findAll()); return "pelicula"; } @PostMapping("/guardar") public String doGuardar(Model model, @ModelAttribute("pelicula")Movies pelicula){ Movies peliculaEdit = moviesRepository.findById(pelicula.getId()).orElse(null); peliculaEdit.setTitle(pelicula.getTitle()); peliculaEdit.setReleaseDate(pelicula.getReleaseDate()); peliculaEdit.setSpokenLanguagesList(pelicula.getSpokenLanguagesList()); peliculaEdit.setOverview(pelicula.getOverview()); moviesRepository.save(peliculaEdit); return "redirect:/"; } @GetMapping("/reparto") public String doReparto(@RequestParam("id")Integer id, Model model){ Movies pelicula = moviesRepository.findById(id).orElse(null); List reparto = movieCastRepository.findByPeliculaId(id); model.addAttribute("reparto", reparto); model.addAttribute("pelicula", pelicula); model.addAttribute("idiomas", spokenLanguagesRepository.findAll()); return "pelicula"; } @GetMapping("/trabajadores") public String doTrabajos(@RequestParam("id")Integer id, Model model){ Movies pelicula = moviesRepository.findById(id).orElse(null); List trabajos = movieCrewRepository.findByPeliculaId(id); model.addAttribute("trabajos", trabajos); model.addAttribute("pelicula", pelicula); model.addAttribute("idiomas", spokenLanguagesRepository.findAll()); return "pelicula"; } } Vista pelicula.jsp Título: Fecha: Idiomas: Sinopsis: Guardar Rep

Jun 23, 2025 - 23:10
 0
springboot.firststeps(P2)

Image description

peliculaController.java

package es.taw.movies.controller;


import es.taw.movies.dao.*;
import es.taw.movies.entity.MovieCast;
import es.taw.movies.entity.MovieCrew;
import es.taw.movies.entity.Movies;
import es.taw.movies.ui.Filtro;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
public class PeliculaController {

    @Autowired
    ProductionCompaniesRepository productionCompaniesRepository;
    @Autowired
    MoviesRepository moviesRepository;
    @Autowired
    SpokenLanguagesRepository spokenLanguagesRepository;
    @Autowired
    MovieCastRepository movieCastRepository;
    @Autowired
    MovieCrewRepository movieCrewRepository;

    protected String listarConFiltro(Filtro filtro, Model model){
        List peliculas;
        if(filtro== null || filtro.getProductoras().isEmpty()){
            filtro = new Filtro();
            peliculas = moviesRepository.findAll();
        } else {
            peliculas = moviesRepository.findByProductionCompaniesList(filtro.getProductoras());
        }
        model.addAttribute("peliculas", peliculas);
        model.addAttribute("productoras", productionCompaniesRepository.findAll());
        model.addAttribute("filtro", filtro);
        return "peliculas";
    }

    @GetMapping("/")
    public String doListar(Model model){
        return listarConFiltro(null, model);

//        model.addAttribute("productoras", productionCompaniesRepository.findAll());
//        model.addAttribute("filtro", new Filtro());
//        model.addAttribute("peliculas", moviesRepository.findAll());
//
//        return "peliculas";
    }

    @PostMapping("/filtrar")
    public String doFiltrar(Model model, @ModelAttribute("filtro")Filtro filtro){
        return listarConFiltro(filtro, model);
//        List peliculas;
//        if(!filtro.getProductoras().isEmpty()){
//            peliculas = moviesRepository.findByProductionCompaniesList(filtro.getProductoras());
//        }else {
//            peliculas = moviesRepository.findAll();
//        }
//
//        model.addAttribute("peliculas", peliculas);
//        model.addAttribute("productoras", productionCompaniesRepository.findAll());
//        model.addAttribute("filtro", filtro);
//        return "peliculas";
    }

    @GetMapping("/editar")
    public String doEditar(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);
        model.addAttribute("pelicula", pelicula);

        model.addAttribute("idiomas", spokenLanguagesRepository.findAll());

        return "pelicula";
    }

    @PostMapping("/guardar")
    public String doGuardar(Model model, @ModelAttribute("pelicula")Movies pelicula){
        Movies peliculaEdit = moviesRepository.findById(pelicula.getId()).orElse(null);
        peliculaEdit.setTitle(pelicula.getTitle());
        peliculaEdit.setReleaseDate(pelicula.getReleaseDate());
        peliculaEdit.setSpokenLanguagesList(pelicula.getSpokenLanguagesList());
        peliculaEdit.setOverview(pelicula.getOverview());
        moviesRepository.save(peliculaEdit);
        return "redirect:/";
    }

    @GetMapping("/reparto")
    public String doReparto(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);

        List reparto = movieCastRepository.findByPeliculaId(id);

        model.addAttribute("reparto", reparto);
        model.addAttribute("pelicula", pelicula);
        model.addAttribute("idiomas", spokenLanguagesRepository.findAll());

        return "pelicula";
    }

    @GetMapping("/trabajadores")
    public String doTrabajos(@RequestParam("id")Integer id, Model model){
        Movies pelicula = moviesRepository.findById(id).orElse(null);

        List trabajos = movieCrewRepository.findByPeliculaId(id);

        model.addAttribute("trabajos", trabajos);
        model.addAttribute("pelicula", pelicula);
        model.addAttribute("idiomas", spokenLanguagesRepository.findAll());

        return "pelicula";
    }
}

Vista

pelicula.jsp

<%@ page import="es.taw.movies.entity.Movies" %>
<%@ page import="java.util.List" %>
<%@ page import="es.taw.movies.entity.MovieCast" %>
<%@ page import="es.taw.movies.entity.MovieCrew" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<%
    String title = "Ficha de la Película";
    Movies pelicula = (Movies) request.getAttribute("pelicula");
%>


    <%=title%>


<%=title%>

Título:
Fecha:
Idiomas:
Sinopsis:
Guardar
Reparto - Trabajadores
<% List reparto = (List) request.getAttribute("reparto"); List trabajos = (List) request.getAttribute("trabajos"); if(reparto!=null){ %>

Reparto


<% for (MovieCast r : reparto){ %> <%=r.getCharacterName()%> - <%=r.getPersonId().getName()%>
<% } } else if (trabajos!=null) { %>

Trabajadores


<% for (MovieCrew t : trabajos){ %> <%=t.getJob()%> - <%=t.getPersonId().getName()%>
<% } } %>

peliculas.jsp

<%@ page import="es.taw.movies.entity.Movies" %>
<%@ page import="java.util.List" %>
<%@ page import="es.taw.movies.entity.SpokenLanguages" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<%
    String title = "Peliculas";
    List peliculas = (List) request.getAttribute("peliculas");
%>


    <%=title%>


<%=title%>

PRODUCTORAS PELÍCULAS
<% for(Movies p : peliculas){ %> <%=p.getTitle()%> - ( <% for(SpokenLanguages s : p.getSpokenLanguagesList()){ %> <%=s.getName()%> <% } %> )
<% } %>
Filtrar

Repos

buscar una lista en una lista

package es.taw.movies.dao;

import es.taw.movies.entity.Movies;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface MoviesRepository extends JpaRepository {

    @Query("select m from Movies m join m.productionCompaniesList p where p.id in :productoras")
    public List findByProductionCompaniesList(@Param("productoras")List productoras);

}
public interface MovieCrewRepository extends JpaRepository {

    @Query("select crew from MovieCrew crew where crew.movieId.id = :id")
    public List findByPeliculaId(@Param("id")Integer id);
}

ui(Filtro)

package es.taw.movies.ui;


import lombok.Data;

import java.util.List;

@Data
public class Filtro {
    List productoras;
}