Skip to content

Commit 44a7068

Browse files
committed
refactor: matchKeyword 메소드 분리
1 parent 88146f2 commit 44a7068

1 file changed

Lines changed: 23 additions & 21 deletions

File tree

src/main/java/in/koreatech/koin/domain/community/util/KeywordExtractor.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,34 @@ public List<KeywordMatchResult> matchKeyword(
2020
Set<KeywordMatchResult> keywordMatchResults = new HashSet<>();
2121

2222
for (Article article : articles) {
23-
String title = article.getTitle();
24-
2523
for (ArticleKeywordUserMap articleKeywordUserMap : articleKeywordUserMaps) {
26-
if (Objects.equals(articleKeywordUserMap.getUserId(), authorId)) {
27-
continue;
28-
}
29-
30-
String keyword = articleKeywordUserMap.getKeyword();
31-
if (!title.contains(keyword)) {
32-
continue;
24+
if (isMatchable(article, articleKeywordUserMap, authorId)) {
25+
addOrUpdateResult(keywordMatchResults, article, articleKeywordUserMap);
3326
}
34-
35-
KeywordMatchResult keywordMatchResult = KeywordMatchResult.of(
36-
article.getId(), articleKeywordUserMap.getUserId(), keyword
37-
);
38-
39-
keywordMatchResults.stream()
40-
.filter(result -> result.equals(keywordMatchResult))
41-
.findFirst()
42-
.ifPresentOrElse(
43-
existing -> existing.updateKeywordIfLonger(keyword),
44-
() -> keywordMatchResults.add(keywordMatchResult)
45-
);
4627
}
4728
}
4829

4930
return keywordMatchResults.stream().toList();
5031
}
32+
33+
private boolean isMatchable(Article article, ArticleKeywordUserMap articleKeywordUserMap, Integer authorId) {
34+
return !Objects.equals(articleKeywordUserMap.getUserId(), authorId)
35+
&& article.getTitle().contains(articleKeywordUserMap.getKeyword());
36+
}
37+
38+
private void addOrUpdateResult(
39+
Set<KeywordMatchResult> results, Article article, ArticleKeywordUserMap userMap
40+
) {
41+
KeywordMatchResult keywordMatchResult = KeywordMatchResult.of(
42+
article.getId(), userMap.getUserId(), userMap.getKeyword()
43+
);
44+
45+
results.stream()
46+
.filter(result -> result.equals(keywordMatchResult))
47+
.findFirst()
48+
.ifPresentOrElse(
49+
existing -> existing.updateKeywordIfLonger(userMap.getKeyword()),
50+
() -> results.add(keywordMatchResult)
51+
);
52+
}
5153
}

0 commit comments

Comments
 (0)