Add dependency to pictures in publications.

This commit is contained in:
Florian THIERRY
2024-03-14 09:55:51 +01:00
parent 5c5304ff98
commit adc3cdf9a3
16 changed files with 62 additions and 40 deletions

View File

@@ -1,10 +1,10 @@
package org.codiki.application.picture;
import java.io.File;
import java.util.Optional;
import java.util.UUID;
import static org.codiki.domain.picture.model.builder.PictureBuilder.aPicture;
import org.codiki.domain.picture.exception.PictureNotFoundException;
import org.codiki.domain.picture.model.Picture;
import org.codiki.domain.picture.port.PicturePort;
import org.springframework.stereotype.Service;
@@ -32,8 +32,7 @@ public class PictureUseCases {
picturePort.deleteById(pictureId);
}
public Picture findById(UUID pictureId) {
return picturePort.findById(pictureId)
.orElseThrow(() -> new PictureNotFoundException(pictureId));
public Optional<Picture> findById(UUID pictureId) {
return picturePort.findById(pictureId);
}
}

View File

@@ -19,8 +19,8 @@ public class PublicationCreationRequestValidator {
throw new PublicationEditionException("description cannot be null");
}
if (request.image() == null) {
throw new PublicationEditionException("image cannot be null");
if (request.pictureId() == null) {
throw new PublicationEditionException("pictureId cannot be null");
}
}
}

View File

@@ -13,7 +13,7 @@ public class PublicationUpdateRequestValidator {
isNull(request.title()) &&
isNull(request.text()) &&
isNull(request.description()) &&
isNull(request.image()) &&
isNull(request.pictureId()) &&
isNull(request.categoryId())
) {
throw new PublicationEditionException("no any field is filled");

View File

@@ -8,10 +8,13 @@ import java.util.UUID;
import static org.codiki.domain.publication.model.builder.AuthorBuilder.anAuthor;
import static org.codiki.domain.publication.model.builder.PublicationBuilder.aPublication;
import org.codiki.application.category.CategoryUseCases;
import org.codiki.application.picture.PictureUseCases;
import org.codiki.application.user.UserUseCases;
import org.codiki.domain.category.exception.CategoryNotFoundException;
import org.codiki.domain.category.model.Category;
import org.codiki.domain.exception.AuthenticationRequiredException;
import org.codiki.domain.picture.exception.PictureNotFoundException;
import org.codiki.domain.picture.model.Picture;
import org.codiki.domain.publication.exception.PublicationEditionException;
import org.codiki.domain.publication.exception.PublicationNotFoundException;
import org.codiki.domain.publication.exception.PublicationUpdateForbiddenException;
@@ -25,19 +28,22 @@ import org.springframework.stereotype.Service;
@Service
public class PublicationUseCases {
private final CategoryUseCases categoryUseCases;
private final Clock clock;
private final KeyGenerator keyGenerator;
private final PictureUseCases pictureUseCases;
private final PublicationPort publicationPort;
private final PublicationCreationRequestValidator publicationCreationRequestValidator;
private final PublicationUpdateRequestValidator publicationUpdateRequestValidator;
private final UserUseCases userUseCases;
private final Clock clock;
public PublicationUseCases(
CategoryUseCases categoryUseCases,
Clock clock,
KeyGenerator keyGenerator,
PictureUseCases pictureUseCases,
PublicationCreationRequestValidator publicationCreationRequestValidator,
PublicationPort publicationPort, PublicationUpdateRequestValidator publicationUpdateRequestValidator,
PublicationPort publicationPort,
PublicationUpdateRequestValidator publicationUpdateRequestValidator,
UserUseCases userUseCases
) {
this.categoryUseCases = categoryUseCases;
@@ -47,6 +53,7 @@ public class PublicationUseCases {
this.publicationPort = publicationPort;
this.publicationUpdateRequestValidator = publicationUpdateRequestValidator;
this.userUseCases = userUseCases;
this.pictureUseCases = pictureUseCases;
}
public Publication createPublication(PublicationEditionRequest request) {
@@ -60,13 +67,18 @@ public class PublicationUseCases {
new CategoryNotFoundException(request.categoryId())
));
Picture picture = pictureUseCases.findById(request.pictureId())
.orElseThrow(() -> new PublicationEditionException(
new PictureNotFoundException(request.pictureId())
));
Publication newPublication = aPublication()
.withId(UUID.randomUUID())
.withKey(keyGenerator.generateKey())
.withTitle(request.title())
.withText(request.text())
.withDescription(request.description())
.withImage(request.image())
.withPicture(picture)
.withCreationDate(ZonedDateTime.now(clock))
.withAuthor(anAuthor().basedOn(authenticatedUser).build())
.withCategory(category)
@@ -104,8 +116,12 @@ public class PublicationUseCases {
publicationBuilder.withDescription(request.description());
}
if (!isNull(request.image())) {
publicationBuilder.withImage(request.image());
if (!isNull(request.pictureId())) {
Picture picture = pictureUseCases.findById(request.pictureId())
.orElseThrow(() -> new PublicationEditionException(
new PictureNotFoundException(request.pictureId())
));
publicationBuilder.withPicture(picture);
}
if (!isNull(request.categoryId())) {