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