Refactor some code in Java8 and transform properties file to yaml file.

This commit is contained in:
2019-07-29 22:10:45 +02:00
parent 54e15ffa59
commit 126126b28e
15 changed files with 304 additions and 202 deletions
@@ -1,16 +1,5 @@
package org.codiki.images;
import java.io.IOException;
import java.security.Principal;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.codiki.core.entities.dto.ImageDTO;
import org.codiki.core.entities.persistence.Image;
import org.codiki.core.entities.persistence.User;
@@ -18,27 +7,50 @@ import org.codiki.core.repositories.ImageRepository;
import org.codiki.core.repositories.UserRepository;
import org.codiki.core.services.FileUploadService;
import org.codiki.core.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.security.Principal;
import java.util.Date;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
public class ImageService {
@Autowired
/** User service. */
private UserService userService;
@Autowired
/** User repository. */
private UserRepository userRepository;
@Autowired
/** File upload service. */
private FileUploadService fileUploadService;
@Autowired
/** Image repository. */
private ImageRepository imageRepository;
public String uploadAvatar(final MultipartFile pFile, final HttpServletRequest pRequest,
final HttpServletResponse pResponse, final Principal pPrincipal) throws IOException {
/**
* Constructor.
* @param userService User service.
* @param userRepository User repository.
* @param fileUploadService File upload service.
* @param imageRepository Image repository.
*/
public ImageService(UserService userService,
UserRepository userRepository,
FileUploadService fileUploadService,
ImageRepository imageRepository) {
this.userService = userService;
this.userRepository = userRepository;
this.fileUploadService = fileUploadService;
this.imageRepository = imageRepository;
}
public String uploadAvatar(final MultipartFile pFile,
final HttpServletResponse pResponse,
final Principal pPrincipal) throws IOException {
final String avatarFileName = fileUploadService.uploadProfileImage(pFile);
final Optional<User> connectedUser = userService.getUserByPrincipal(pPrincipal);
@@ -57,62 +69,44 @@ public class ImageService {
return avatarFileName;
}
public String uploadImage(final MultipartFile pFile, final HttpServletRequest pRequest,
final HttpServletResponse pResponse, final Principal pPrincipal) throws IOException {
public String uploadImage(final MultipartFile pFile, final Principal pPrincipal) {
final String imageFileName = fileUploadService.uploadImage(pFile);
final Optional<User> connectedUser = userService.getUserByPrincipal(pPrincipal);
if(connectedUser.isPresent()) {
final Optional<User> userFromDb = userRepository.findById(connectedUser.get().getId());
if(userFromDb.isPresent()) {
final Image image = new Image();
image.setLink(imageFileName);
image.setDate(new Date());
image.setUser(userFromDb.get());
imageRepository.save(image);
} else {
pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
} else {
pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
userService.getUserByPrincipal(pPrincipal)
.map(User::getId)
.map(userRepository::findById)
.orElseThrow(NoSuchElementException::new)
.ifPresent(user -> {
final Image image = new Image();
image.setLink(imageFileName);
image.setDate(new Date());
image.setUser(user);
imageRepository.save(image);
});
return imageFileName;
}
public Resource loadAvatar(final String pAvatarFileName) {
public Optional<Resource> loadAvatar(final String pAvatarFileName) {
return fileUploadService.loadAvatar(pAvatarFileName);
}
public Resource loadImage(final String pImageLink) {
public Optional<Resource> loadImage(final String pImageLink) {
return fileUploadService.loadImage(pImageLink);
}
public List<ImageDTO> getUserImages(final HttpServletRequest pRequest, final HttpServletResponse pResponse,
final Principal pPrincipal) throws IOException {
List<ImageDTO> result = new LinkedList<>();
final Optional<User> connectedUser = userService.getUserByPrincipal(pPrincipal);
if(connectedUser.isPresent()) {
result = imageRepository.getByUserId(connectedUser.get().getId())
.stream().map(ImageDTO::new).collect(Collectors.toList());
} else {
pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
return result;
public List<ImageDTO> getUserImages(final Principal pPrincipal) {
return userService.getUserByPrincipal(pPrincipal)
.map(User::getId)
.map(imageRepository::getByUserId)
.orElseThrow(NoSuchElementException::new)
.stream()
.map(ImageDTO::new)
.collect(Collectors.toList());
}
public ImageDTO getImageDetails(final String pImageLink, final HttpServletResponse pResponse) throws IOException {
ImageDTO result = null;
final Optional<Image> imageFromDb = imageRepository.findByLink(pImageLink);
if(imageFromDb.isPresent()) {
result = new ImageDTO(imageFromDb.get());
} else {
pResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
}
return result;
public Optional<ImageDTO> getImageDetails(final String pImageLink) {
return imageRepository.findByLink(pImageLink)
.map(ImageDTO::new);
}
}