Creates domain layer.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package com.rogelioorts.training.spring.ddd.repositories.entities;
|
||||
|
||||
import com.rogelioorts.training.spring.ddd.repositories.value.objects.CensoringLevel;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
|
||||
public class Movie {
|
||||
|
||||
@EqualsAndHashCode.Include
|
||||
private String id;
|
||||
|
||||
private String title;
|
||||
|
||||
private String image;
|
||||
|
||||
private String description;
|
||||
|
||||
private String streamUrl;
|
||||
|
||||
private double puntuation;
|
||||
|
||||
private CensoringLevel censoringLevel;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.rogelioorts.training.spring.ddd.repositories.factories;
|
||||
|
||||
import com.rogelioorts.training.spring.ddd.repositories.value.objects.CensoringLevel;
|
||||
import com.rogelioorts.training.spring.ddd.repositories.value.objects.Filter;
|
||||
import com.rogelioorts.training.spring.ddd.repositories.value.objects.impl.CensoringFilter;
|
||||
|
||||
public class FiltersFactory {
|
||||
|
||||
public static Filter censoringFilter(CensoringLevel level) {
|
||||
return new CensoringFilter(level);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.rogelioorts.training.spring.ddd.repositories.value.objects;
|
||||
|
||||
public enum CensoringLevel {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.rogelioorts.training.spring.ddd.repositories.value.objects;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.rogelioorts.training.spring.ddd.repositories.entities.Movie;
|
||||
|
||||
public interface Filter {
|
||||
|
||||
List<Movie> apply(List<Movie> movies);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.rogelioorts.training.spring.ddd.repositories.value.objects.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.rogelioorts.training.spring.ddd.repositories.entities.Movie;
|
||||
import com.rogelioorts.training.spring.ddd.repositories.value.objects.CensoringLevel;
|
||||
import com.rogelioorts.training.spring.ddd.repositories.value.objects.Filter;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@EqualsAndHashCode
|
||||
@AllArgsConstructor
|
||||
public class CensoringFilter implements Filter {
|
||||
|
||||
private CensoringLevel level;
|
||||
|
||||
@Override
|
||||
public List<Movie> apply(List<Movie> movies) {
|
||||
return movies.stream().filter(this::checkMovieFilter).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private boolean checkMovieFilter(Movie movie) {
|
||||
return level == null || level.equals(movie.getCensoringLevel());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user