Adds infrastructure layer.
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
{"properties": [{
|
||||||
|
"name": "movies-server.url",
|
||||||
|
"type": "java.lang.String",
|
||||||
|
"description": "The base URL of the server to retrieve the movies."
|
||||||
|
}]}
|
||||||
2
spring-ddd-boot/src/main/resources/application.yml
Normal file
2
spring-ddd-boot/src/main/resources/application.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
movies-server:
|
||||||
|
url: https://de1e2a9b-a4e8-406f-abf3-747cfff8c873.mock.pstmn.io
|
||||||
@@ -12,7 +12,7 @@ import lombok.Setter;
|
|||||||
public class Movie {
|
public class Movie {
|
||||||
|
|
||||||
@EqualsAndHashCode.Include
|
@EqualsAndHashCode.Include
|
||||||
private String id;
|
private String movieId;
|
||||||
|
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.rogelioorts.training.spring.ddd.entities;
|
||||||
|
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
|
||||||
|
public class FeignMovie {
|
||||||
|
|
||||||
|
@EqualsAndHashCode.Include
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
private String tit;
|
||||||
|
|
||||||
|
private String poster;
|
||||||
|
|
||||||
|
private String desc;
|
||||||
|
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
private double punc;
|
||||||
|
|
||||||
|
private String level;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.rogelioorts.training.spring.ddd.entities;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class PageFeignMovie {
|
||||||
|
|
||||||
|
private List<FeignMovie> movies;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.rogelioorts.training.spring.ddd.mappers;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.rogelioorts.training.spring.ddd.entities.FeignMovie;
|
||||||
|
import com.rogelioorts.training.spring.ddd.entities.Movie;
|
||||||
|
import com.rogelioorts.training.spring.ddd.value.objects.CensoringLevel;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class FeignMoviesMapper {
|
||||||
|
|
||||||
|
public Movie map(FeignMovie in) {
|
||||||
|
Movie out = new Movie();
|
||||||
|
out.setMovieId(String.valueOf(in.getId()));
|
||||||
|
out.setTitle(in.getTit());
|
||||||
|
out.setImage(in.getPoster());
|
||||||
|
out.setDescription(in.getDesc());
|
||||||
|
out.setStreamUrl(in.getUrl());
|
||||||
|
out.setPunctuation(in.getPunc());
|
||||||
|
out.setCensoringLevel(mapCensoringLevel(in.getLevel()));
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CensoringLevel mapCensoringLevel(String rawLevel) {
|
||||||
|
if(rawLevel == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(rawLevel) {
|
||||||
|
case "censored":
|
||||||
|
return CensoringLevel.CENSORED;
|
||||||
|
case "uncensored":
|
||||||
|
return CensoringLevel.UNCENSORED;
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.rogelioorts.training.spring.ddd.repositories;
|
||||||
|
|
||||||
|
import org.springframework.cloud.netflix.feign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
|
import com.rogelioorts.training.spring.ddd.entities.PageFeignMovie;
|
||||||
|
|
||||||
|
@FeignClient("${movies-server.url}")
|
||||||
|
public interface MoviesFeignRepository {
|
||||||
|
|
||||||
|
@RequestMapping(method = RequestMethod.GET, path = "/movies")
|
||||||
|
PageFeignMovie getPage();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.rogelioorts.training.spring.ddd.repositories.impl;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.rogelioorts.training.spring.ddd.entities.Movie;
|
||||||
|
import com.rogelioorts.training.spring.ddd.mappers.FeignMoviesMapper;
|
||||||
|
import com.rogelioorts.training.spring.ddd.repositories.MoviesFeignRepository;
|
||||||
|
import com.rogelioorts.training.spring.ddd.repositories.MoviesRepository;
|
||||||
|
|
||||||
|
public class MoviesFeignRepositoryImpl implements MoviesRepository {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private MoviesFeignRepository repository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FeignMoviesMapper mapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Movie> findAll() {
|
||||||
|
return repository.getPage().getMovies().stream().map(mapper::map).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user