Creates domain layer.

This commit is contained in:
rogelio-o
2018-06-17 19:24:26 +02:00
parent 6af6ef23ae
commit 77e1802f3b
5 changed files with 86 additions and 0 deletions

View File

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

View File

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

View File

@@ -0,0 +1,5 @@
package com.rogelioorts.training.spring.ddd.repositories.value.objects;
public enum CensoringLevel {
}

View File

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

View File

@@ -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());
}
}