Refactor publication parser location.
This commit is contained in:
@@ -33,6 +33,10 @@
|
||||
<groupId>com.auth0</groupId>
|
||||
<artifactId>java-jwt</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-text</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.codiki.infrastructure.publication;
|
||||
package org.codiki.application.publication;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
|
||||
import static org.apache.commons.text.StringEscapeUtils.escapeHtml4;
|
||||
|
||||
@Service
|
||||
public class ParserService {
|
||||
@@ -9,6 +9,8 @@ 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 static org.springframework.util.ObjectUtils.isEmpty;
|
||||
|
||||
import org.codiki.application.category.CategoryUseCases;
|
||||
import org.codiki.application.picture.PictureUseCases;
|
||||
import org.codiki.application.user.UserUseCases;
|
||||
@@ -31,6 +33,7 @@ public class PublicationUseCases {
|
||||
private final CategoryUseCases categoryUseCases;
|
||||
private final Clock clock;
|
||||
private final KeyGenerator keyGenerator;
|
||||
private final ParserService parserService;
|
||||
private final PictureUseCases pictureUseCases;
|
||||
private final PublicationCreationRequestValidator publicationCreationRequestValidator;
|
||||
private final PublicationPort publicationPort;
|
||||
@@ -42,6 +45,7 @@ public class PublicationUseCases {
|
||||
CategoryUseCases categoryUseCases,
|
||||
Clock clock,
|
||||
KeyGenerator keyGenerator,
|
||||
ParserService parserService,
|
||||
PictureUseCases pictureUseCases,
|
||||
PublicationCreationRequestValidator publicationCreationRequestValidator,
|
||||
PublicationPort publicationPort,
|
||||
@@ -52,6 +56,7 @@ public class PublicationUseCases {
|
||||
this.categoryUseCases = categoryUseCases;
|
||||
this.clock = clock;
|
||||
this.keyGenerator = keyGenerator;
|
||||
this.parserService = parserService;
|
||||
this.publicationCreationRequestValidator = publicationCreationRequestValidator;
|
||||
this.publicationPort = publicationPort;
|
||||
this.publicationUpdateRequestValidator = publicationUpdateRequestValidator;
|
||||
@@ -83,6 +88,7 @@ public class PublicationUseCases {
|
||||
.withKey(keyGenerator.generateKey())
|
||||
.withTitle(request.title())
|
||||
.withText(request.text())
|
||||
.withParsedText(parserService.parse(request.text()))
|
||||
.withDescription(request.description())
|
||||
.withCreationDate(ZonedDateTime.now(clock))
|
||||
.withIllustrationId(request.illustrationId())
|
||||
@@ -116,6 +122,7 @@ public class PublicationUseCases {
|
||||
|
||||
if (!isNull(request.text())) {
|
||||
publicationBuilder.withText(request.text());
|
||||
publicationBuilder.withParsedText(parserService.parse(request.text()));
|
||||
}
|
||||
|
||||
if (!isNull(request.description())) {
|
||||
@@ -163,7 +170,19 @@ public class PublicationUseCases {
|
||||
}
|
||||
|
||||
public Optional<Publication> findById(UUID publicationId) {
|
||||
return publicationPort.findById(publicationId);
|
||||
return publicationPort.findById(publicationId)
|
||||
.map(publication -> {
|
||||
Publication result = publication;
|
||||
if (isEmpty(publication.parsedText())) {
|
||||
Publication editedPublication = aPublication()
|
||||
.basedOn(publication)
|
||||
.withParsedText(parserService.parse(publication.text()))
|
||||
.build();
|
||||
publicationPort.save(editedPublication);
|
||||
result = editedPublication;
|
||||
}
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
public List<Publication> searchPublications(String searchQuery) {
|
||||
|
||||
@@ -14,23 +14,18 @@ import java.util.UUID;
|
||||
|
||||
import static java.util.Collections.reverseOrder;
|
||||
import static java.util.Comparator.comparingInt;
|
||||
import static org.codiki.domain.publication.model.builder.PublicationBuilder.aPublication;
|
||||
import static org.springframework.util.ObjectUtils.isEmpty;
|
||||
|
||||
@Component
|
||||
public class PublicationJpaAdapter implements PublicationPort {
|
||||
private final PublicationRepository repository;
|
||||
private final PublicationSearchCriteriaJpaAdapter publicationSearchCriteriaJpaAdapter;
|
||||
private final ParserService parserService;
|
||||
|
||||
public PublicationJpaAdapter(
|
||||
PublicationRepository repository,
|
||||
PublicationSearchCriteriaJpaAdapter publicationSearchCriteriaJpaAdapter,
|
||||
ParserService parserService
|
||||
PublicationSearchCriteriaJpaAdapter publicationSearchCriteriaJpaAdapter
|
||||
) {
|
||||
this.repository = repository;
|
||||
this.publicationSearchCriteriaJpaAdapter = publicationSearchCriteriaJpaAdapter;
|
||||
this.parserService = parserService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -41,24 +36,8 @@ public class PublicationJpaAdapter implements PublicationPort {
|
||||
|
||||
@Override
|
||||
public Optional<Publication> findById(UUID publicationId) {
|
||||
Optional<Publication> result = repository.findById(publicationId)
|
||||
return repository.findById(publicationId)
|
||||
.map(PublicationEntity::toDomain);
|
||||
|
||||
if (result.isPresent()) {
|
||||
Publication publication = result.get();
|
||||
if (isEmpty(publication.parsedText())) {
|
||||
Publication editedPublication = aPublication()
|
||||
.basedOn(publication)
|
||||
.withParsedText(parserService.parse(publication.text()))
|
||||
.build();
|
||||
PublicationEntity editedPublicationEntity = new PublicationEntity(editedPublication);
|
||||
repository.save(editedPublicationEntity);
|
||||
|
||||
result = Optional.of(editedPublication);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<java-jwt.version>4.4.0</java-jwt.version>
|
||||
<postgresql.version>42.7.0</postgresql.version>
|
||||
<tika-core.version>2.9.0</tika-core.version>
|
||||
<commons-text.version>1.12.0</commons-text.version>
|
||||
</properties>
|
||||
|
||||
<modules>
|
||||
@@ -78,6 +79,12 @@
|
||||
<artifactId>tika-core</artifactId>
|
||||
<version>${tika-core.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-text</artifactId>
|
||||
<version>${commons-text.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user