Untitled
unknown
plain_text
3 years ago
4.8 kB
11
Indexable
package fp.shows;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import fp.common.Puntuacion;
import fp.utiles.Checkers;
public class Cinematografica {
private LocalDate fechaEstreno;
private String nombre;
private Integer usuarios;
private Boolean compartida;
private List<Serie> series;
public Cinematografica(LocalDate fechaEstreno, String nombre,Integer usuarios,Boolean compartida, List<Serie> series) {
super();
this.fechaEstreno = fechaEstreno;
this.nombre = nombre;
this.usuarios=usuarios;
this.compartida=compartida;
this.series = new ArrayList<>(series);
}
public Cinematografica( String nombre,Integer usuarios,Boolean compartida) {
super();
Checkers.check("El nombre de la serie no puede estar vacío", !nombre.isEmpty());
this.fechaEstreno = LocalDate.now();
this.nombre = nombre;
this.usuarios=usuarios;
this.compartida=compartida;
this.series = new ArrayList<>();
}
public Boolean getCompartida() {
return compartida;
}
public void setCompartida(Boolean compartida) {
this.compartida = compartida;
}
public LocalDate getFechaEstreno() {
return fechaEstreno;
}
public String getNombre() {
return nombre;
}
public Integer getUsuarios() {
return usuarios;
}
public List<Serie> getSeries() {
return new ArrayList<>(series);
}
@Override
public String toString() {
return "Cinematografica [fechaEstreno=" + fechaEstreno + ", nombre=" + nombre + ", usuarios=" + usuarios
+ ", compartida=" + compartida + ", series=" + series + "]";
}
@Override
public int hashCode() {
return Objects.hash(fechaEstreno, nombre);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Cinematografica other = (Cinematografica) obj;
return Objects.equals(fechaEstreno, other.fechaEstreno) && Objects.equals(nombre, other.nombre);
}
//Otras operaciones
public Integer getNumeroSeries() {
return series.size();
}
public void añadeSerie(Serie s) {
if (!series.contains(s)) {
series.add(s);
}
}
public void añadeSeries(Collection<Serie> c) {
for (Serie r: c) {
añadeSerie(r);
}
}
public void eliminaSerie(Serie s) {
series.remove(s);
}
// 1.Si hay series estrenada en ese año vuelve true si no devuelve false. (Tratamiento: existe)
public Boolean existeSerieEstrenadaEnTalAño(Integer año ) {
Boolean existeSerie = false;
for (Serie s: series) {
if (s.getFechaEstreno().getYear()==año) {
existeSerie = true;
break;
}
}
return existeSerie;
}
// 2. Media calificacion de las series por el numero de temporadas. (Tratamiento: media)
public Double getMediaCalificacionSeriePorTemporada( Integer temporadas) {
Double sumaCalificacion = 0.;
Integer numeroSeries = 0;
for (Serie s: series) {
if (s.getTemporadas().equals(temporadas) ) {
sumaCalificacion += s.getCalificacion();
numeroSeries++;
}
}
Double media = null;
if (numeroSeries > 0) {
media = sumaCalificacion / numeroSeries;
}
return media;
}
// 3. Series con directores.
public List<String> getSeriesConDirectores(Set<String> directores) {
List<String> seriesConDirectores = new ArrayList<>();
for (Serie s: series) {
List<String> directoresComunes = new ArrayList<>(s.getDirectores());
directoresComunes.retainAll(directores);
if (!directoresComunes.isEmpty()) {
seriesConDirectores.add(s.getNombre());
}
}
return seriesConDirectores;
}
// 4. (Tratamiento: Map con valores de tipo colección)
public Map<Genero, List<Serie>> getSeriesPorGenero() {
Map<Genero, List<Serie>> res = new HashMap<>();
for (Serie s: series) {
Genero ge = s.getGenero();
if (res.containsKey(ge)) {
res.get(ge).add(s);
} else {
List<Serie> lista = new ArrayList<>();
lista.add(s);
res.put(ge, lista);
}
}
return res;
}
// 5. (Tratamiento: Map contador)
public Map<String, Integer> getNumeroSeriesConPais() {
Map<String, Integer> res = new HashMap<>();
for (Serie s: series) {
List<String> paises = s.getPaises();
for (String pais:paises) {
if (res.containsKey(pais)) {
res.put(pais, res.get(pais) + 1);
} else {
res.put(pais,1);
}
}
}
return res;
}
}
Editor is loading...