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 {
|
||||
|
||||
@EqualsAndHashCode.Include
|
||||
private String id;
|
||||
private String movieId;
|
||||
|
||||
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