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

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;
}