spring.datasource.url=jdbc:postgresql://${DB_HOST}/${DB_NAME}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driver-class-name=org.postgresql.Driver
hibernate.dialect=org.hibernate.dialect.HSQLDialect
spring.jpa.hibernate.ddl-auto=update
SerieRepository.java
package com.aluracursos.screenmatch.repository;
import com.aluracursos.screenmatch.model.Serie;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SerieRepository extends JpaRepository<Serie, Long> {
}
“ScreenmatchApplication.java”
package com.aluracursos.screenmatch;
import com.aluracursos.screenmatch.principal.Principal;
import com.aluracursos.screenmatch.repository.SerieRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ScreenmatchApplication implements CommandLineRunner {
@Autowired
private SerieRepository repository;
public static void main(String[] args) {
SpringApplication.run(ScreenmatchApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Principal principal = new Principal(repository);
principal.muestraElMenu();
}
}
Principal.java”
package com.aluracursos.screenmatch.principal;
import com.aluracursos.screenmatch.model.DatosSerie;
import com.aluracursos.screenmatch.model.DatosTemporada;
import com.aluracursos.screenmatch.model.Serie;
import com.aluracursos.screenmatch.repository.SerieRepository;
import com.aluracursos.screenmatch.service.ConsumoAPI;
import com.aluracursos.screenmatch.service.ConvierteDatos;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class Principal {
private Scanner teclado = new Scanner(System.in);
private ConsumoAPI consumoApi = new ConsumoAPI();
private final String URL_BASE = "https://www.omdbapi.com/?t=";
private final String API_KEY = "&apikey=4fc7c187";
private ConvierteDatos conversor = new ConvierteDatos();
private List datosSeries = new ArrayList<>();
private SerieRepository repository;
public Principal(SerieRepository repository) {
this.repository = repository;
}
public void muestraElMenu(){
var opcion = -1;
while (opcion != 0){
var menu = """
1 - Buscar series
2 - Buscar episodios
3 - Listar series buscadas
0 - Salir
""";
System.out.println(menu);
opcion = teclado.nextInt();
teclado.nextLine();
switch (opcion) {
case 1:
buscarSerieWeb();
break;
case 2:
buscarEpisodioPorSerie();
break;
case 3:
listarSeriesBuscadas();
break;
case 0:
System.out.println("Cerrando la aplicación...");
break;
default:
System.out.println("Opción inválida");
}
}
}
private void buscarSerieWeb() {
DatosSerie datos = getDatosSerie();
Serie serie = new Serie(datos);
repository.save(serie);
//datosSeries.add(datos);
System.out.println(datos);
}
private DatosSerie getDatosSerie() {
System.out.println("Escribe el nombre de la serie que deseas buscar");
var nombreSerie = teclado.nextLine();
var json = consumoApi.obtenerDatos(URL_BASE + nombreSerie.replace(" ", "+" )+ API_KEY);
DatosSerie datos = conversor.obtenerDatos(json, DatosSerie.class);
System.out.println(datos.sinopsis());
return datos;
}
private void buscarEpisodioPorSerie(){
DatosSerie datosSerie = getDatosSerie();
List<DatosTemporada> temporadas = new ArrayList<>();
for (int i = 1; i <= datosSerie.totalTemporadas(); i++) {
var json = consumoApi.obtenerDatos(URL_BASE + datosSerie.titulo().replace(" ", "+") + "&season=" + i + API_KEY);
DatosTemporada datosTemporada = conversor.obtenerDatos(json, DatosTemporada.class);
temporadas.add(datosTemporada);
}
temporadas.forEach(System.out::println);
}
private void listarSeriesBuscadas() {
List<Serie> series = repository.findAll();
series.stream()
.sorted(Comparator.comparing(Serie::getGenero))
.forEach(System.out::println);
}
}