From 0932461ce2e0e10356b912c0c62c2c564a37cfe9 Mon Sep 17 00:00:00 2001 From: hyeonjilee Date: Mon, 14 Oct 2024 23:54:55 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=EC=97=90=20=ED=95=98=EC=9D=B4=EB=9D=BC=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=20=EB=A7=A4=ED=95=91=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../highlight/service/HighlightService.java | 61 ++----------------- .../service/HighlightServiceTest.java | 24 +++----- 2 files changed, 13 insertions(+), 72 deletions(-) diff --git a/backend/src/main/java/reviewme/highlight/service/HighlightService.java b/backend/src/main/java/reviewme/highlight/service/HighlightService.java index 13e1891d2..ddcfdc45a 100644 --- a/backend/src/main/java/reviewme/highlight/service/HighlightService.java +++ b/backend/src/main/java/reviewme/highlight/service/HighlightService.java @@ -1,19 +1,13 @@ package reviewme.highlight.service; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import reviewme.highlight.domain.Highlight; -import reviewme.highlight.domain.HighlightLines; import reviewme.highlight.repository.HighlightRepository; -import reviewme.highlight.service.dto.HighlightIndexRangeRequest; -import reviewme.highlight.service.dto.HighlightRequest; -import reviewme.highlight.service.dto.HighlightedLineRequest; import reviewme.highlight.service.dto.HighlightsRequest; +import reviewme.highlight.service.mapper.HighlightMapper; import reviewme.highlight.service.validator.HighlightValidator; import reviewme.review.domain.TextAnswer; import reviewme.review.domain.TextAnswers; @@ -30,6 +24,7 @@ public class HighlightService { private final TextAnswerRepository textAnswerRepository; private final HighlightValidator highlightValidator; + private final HighlightMapper highlightMapper; @Transactional public void editHighlight(HighlightsRequest highlightsRequest, String reviewRequestCode) { @@ -37,60 +32,14 @@ public void editHighlight(HighlightsRequest highlightsRequest, String reviewRequ .orElseThrow(() -> new ReviewGroupNotFoundByReviewRequestCodeException(reviewRequestCode)) .getId(); List textAnswersByIds = textAnswerRepository.findAllById(highlightsRequest.getUniqueAnswerIds()); - TextAnswers textAnswers = new TextAnswers(textAnswersByIds); highlightValidator.validate(highlightsRequest, reviewGroupId); - Map highlightLines = mapHighlightLines(highlightsRequest, textAnswers); - - deleteBeforeHighlight(highlightsRequest.questionId(), textAnswers); - saveHighlights(highlightLines); - } - - private Map mapHighlightLines(HighlightsRequest highlightsRequest, TextAnswers textAnswers) { - Map> answerLineIndexes = highlightsRequest.highlights() - .stream() - .collect(Collectors.toMap(HighlightRequest::answerId, HighlightRequest::getLineIndexes)); - - Map highlightLinesByAnswerId = new HashMap<>(); - for (HighlightRequest highlightRequest : highlightsRequest.highlights()) { - long answerId = highlightRequest.answerId(); - highlightLinesByAnswerId.put(answerId, - mapHighlightLine(highlightRequest, textAnswers.get(answerId), answerLineIndexes.get(answerId)) - ); - } - return highlightLinesByAnswerId; - } + List highlights = highlightMapper.mapToHighlights(highlightsRequest, textAnswersByIds); - private HighlightLines mapHighlightLine(HighlightRequest highlightRequest, - TextAnswer answer, List answerLineIndex) { - HighlightLines highlightLines = new HighlightLines(answer.getContent(), answerLineIndex); - for (HighlightedLineRequest lineRequest : highlightRequest.lines()) { - for (HighlightIndexRangeRequest rangeRequest : lineRequest.ranges()) { - highlightLines.addRange(lineRequest.index(), rangeRequest.startIndex(), rangeRequest.endIndex()); - } - } - return highlightLines; - } - - private void deleteBeforeHighlight(long questionId, TextAnswers textAnswers) { - List answerIds = textAnswers.getIdsByQuestionId(questionId); + TextAnswers textAnswers = new TextAnswers(textAnswersByIds); + List answerIds = textAnswers.getIdsByQuestionId(highlightsRequest.questionId()); highlightRepository.deleteAllByIds(answerIds); - } - private void saveHighlights(Map highlightLines) { - List highlights = highlightLines.entrySet() - .stream() - .flatMap(highlightLinesByAnswer -> - createHighlight(highlightLinesByAnswer.getKey(), highlightLinesByAnswer.getValue()).stream()) - .collect(Collectors.toList()); highlightRepository.saveAll(highlights); } - - private List createHighlight(long answerId, HighlightLines lines) { - return lines.getLines() - .stream() - .flatMap(line -> line.getRanges().stream() - .map(range -> new Highlight(answerId, line.getLineIndex(), range))) - .toList(); - } } diff --git a/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java b/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java index 41af0734b..138b36629 100644 --- a/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java +++ b/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java @@ -95,34 +95,26 @@ class HighlightServiceTest { long reviewGroupId = reviewGroupRepository.save(ReviewGroupFixture.리뷰_그룹(reviewRequestCode, "groupAccessCode")) .getId(); - TextAnswer textAnswer1 = new TextAnswer(questionId, "text answer1"); - TextAnswer textAnswer2 = new TextAnswer(questionId, "text answer2"); - Review review = reviewRepository.save(new Review(templateId, reviewGroupId, List.of(textAnswer1, textAnswer2))); - + TextAnswer textAnswer = new TextAnswer(questionId, "text answer1"); + Review review = reviewRepository.save(new Review(templateId, reviewGroupId, List.of(textAnswer))); highlightRepository.save(new Highlight(1, 1, new HighlightRange(1, 1))); int startIndex = 2; int endIndex = 2; - int lineIndex = 0; HighlightIndexRangeRequest indexRangeRequest = new HighlightIndexRangeRequest(startIndex, endIndex); - HighlightedLineRequest lineRequest1 = new HighlightedLineRequest(lineIndex, List.of(indexRangeRequest)); - HighlightedLineRequest lineRequest2 = new HighlightedLineRequest(lineIndex, List.of(indexRangeRequest)); - HighlightRequest highlightRequest1 = new HighlightRequest(textAnswer1.getId(), List.of(lineRequest1)); - HighlightRequest highlightRequest2 = new HighlightRequest(textAnswer2.getId(), List.of(lineRequest2)); - HighlightsRequest highlightsRequest = new HighlightsRequest(questionId, - List.of(highlightRequest1, highlightRequest2)); + HighlightedLineRequest lineRequest = new HighlightedLineRequest(0, List.of(indexRangeRequest)); + HighlightRequest highlightRequest = new HighlightRequest(textAnswer.getId(), List.of(lineRequest)); + HighlightsRequest highlightsRequest = new HighlightsRequest(questionId, List.of(highlightRequest)); // when highlightService.editHighlight(highlightsRequest, reviewRequestCode); // then List highlights = highlightRepository.findAll(); - HighlightRange position = new HighlightRange(startIndex, endIndex); assertAll( - () -> assertThat(highlights.get(0).getAnswerId()).isEqualTo(textAnswer1.getId()), - () -> assertThat(highlights.get(1).getAnswerId()).isEqualTo(textAnswer2.getId()), - () -> assertThat(highlights.get(0).getHighlightRange()).isEqualTo(position), - () -> assertThat(highlights.get(0).getHighlightRange()).isEqualTo(position) + () -> assertThat(highlights.get(0).getAnswerId()).isEqualTo(textAnswer.getId()), + () -> assertThat(highlights.get(0).getHighlightRange()).isEqualTo( + new HighlightRange(startIndex, endIndex)) ); } }