From 54dc1076cb8100a32d023f726438be51b02e4b85 Mon Sep 17 00:00:00 2001 From: chyun Date: Sat, 25 Jan 2025 03:02:53 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat=20[#216]=20=ED=95=98=EB=82=98=EC=9D=98?= =?UTF-8?q?=20=EC=95=84=ED=8B=B0=EC=8A=A4=ED=8A=B8=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EB=94=94=20=EA=B0=92=EC=9D=B4=20=EC=97=AC=EB=9F=AC=20=EA=B0=9C?= =?UTF-8?q?=EC=9D=98=20=EA=B0=9D=EC=B2=B4=EC=97=90=20=EB=A7=A4=ED=95=91?= =?UTF-8?q?=EB=90=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/artistsearcher/ArtistResolver.java | 37 ++++++++++++++----- .../artistsearcher/SpotifyAPIHandler.java | 2 + 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/sopt/confeti/global/util/artistsearcher/ArtistResolver.java b/src/main/java/org/sopt/confeti/global/util/artistsearcher/ArtistResolver.java index 87fd309..3b48476 100644 --- a/src/main/java/org/sopt/confeti/global/util/artistsearcher/ArtistResolver.java +++ b/src/main/java/org/sopt/confeti/global/util/artistsearcher/ArtistResolver.java @@ -2,9 +2,12 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Objects; +import java.util.Queue; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.sopt.confeti.annotation.Resolver; @@ -12,6 +15,8 @@ import org.sopt.confeti.domain.concert.Concert; import org.sopt.confeti.domain.festival.Festival; import org.sopt.confeti.domain.festivaldate.FestivalDate; +import org.sopt.confeti.global.exception.ConfetiException; +import org.sopt.confeti.global.message.ErrorMessage; import org.sopt.confeti.global.util.IntegrateFunction; @Resolver @@ -39,7 +44,7 @@ public class ArtistResolver { }}; private List artistIds; - private HashMap artistMapper; + private HashMap> artistMapper; private final SpotifyAPIHandler spotifyAPIHandler; @@ -97,17 +102,14 @@ private void collectArtistFavorite(final Object target) { ArtistFavorite artistFavorite = (ArtistFavorite) target; ConfetiArtist confetiArtist = artistFavorite.getArtist(); artistIds.add(confetiArtist.getArtistId()); - artistMapper.put(confetiArtist.getArtistId(), artistFavorite.getArtist()); + addArtistToMapper(confetiArtist.getArtistId(), artistFavorite.getArtist()); } private void collectConcert(final Object target) { Concert concert = (Concert) target; concert.getArtists().forEach(artist -> { artistIds.add(artist.getArtist().getArtistId()); - artistMapper.put( - artist.getArtist().getArtistId(), - artist.getArtist() - ); + addArtistToMapper(artist.getArtist().getArtistId(), artist.getArtist()); }); } @@ -119,7 +121,7 @@ private void collectFestival(final Object target) { .flatMap(time -> time.getArtists().stream()) .forEach(artist -> { artistIds.add(artist.getArtist().getArtistId()); - artistMapper.put(artist.getArtist().getArtistId(), artist.getArtist()); + addArtistToMapper(artist.getArtist().getArtistId(), artist.getArtist()); }); } @@ -130,13 +132,18 @@ private void collectFestivalDate(final Object target) { .flatMap(time -> time.getArtists().stream()) .forEach(artist -> { artistIds.add(artist.getArtist().getArtistId()); - artistMapper.put(artist.getArtist().getArtistId(), artist.getArtist()); + addArtistToMapper(artist.getArtist().getArtistId(), artist.getArtist()); }); } private void injection(final List confetiArtists) { confetiArtists.forEach((confetiArtist -> { - ConfetiArtist mappedConfetiArtist = artistMapper.get(confetiArtist.getArtistId()); + ConfetiArtist mappedConfetiArtist = artistMapper.get(confetiArtist.getArtistId()).poll(); + + if (mappedConfetiArtist == null) { + throw new ConfetiException(ErrorMessage.INTERNAL_SERVER_ERROR); + } + mappedConfetiArtist.setName(confetiArtist.getName()); mappedConfetiArtist.setProfileUrl(confetiArtist.getProfileUrl()); })); @@ -145,4 +152,16 @@ private void injection(final List confetiArtists) { private List searchByArtistIds(final List artistIds) { return spotifyAPIHandler.findArtistsByArtistIdsEntry(artistIds); } + + private void addArtistToMapper(final String artistId, final ConfetiArtist artist) { + if (!artistMapper.containsKey(artistId)) { + createQueueToMapper(artistId); + } + + artistMapper.get(artistId).add(artist); + } + + private void createQueueToMapper(final String artistId) { + artistMapper.put(artistId, new LinkedList<>()); + } } diff --git a/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java b/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java index adda83c..0ca98f4 100644 --- a/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java +++ b/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java @@ -130,6 +130,8 @@ public List findArtistsByArtistIdsEntry(final List artist } public List findArtistsByArtistIds(final List artistIds) { + artistIds.forEach(artistId -> System.out.print(artistId + ",")); + System.out.println(); if (artistIds.isEmpty()) { return Collections.emptyList(); } From 9b932b1b62c55689e2d039664a42503349c4dd14 Mon Sep 17 00:00:00 2001 From: chyun Date: Sat, 25 Jan 2025 03:08:47 +0900 Subject: [PATCH 2/2] =?UTF-8?q?style=20[#216]=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../confeti/global/util/artistsearcher/SpotifyAPIHandler.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java b/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java index 0ca98f4..adda83c 100644 --- a/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java +++ b/src/main/java/org/sopt/confeti/global/util/artistsearcher/SpotifyAPIHandler.java @@ -130,8 +130,6 @@ public List findArtistsByArtistIdsEntry(final List artist } public List findArtistsByArtistIds(final List artistIds) { - artistIds.forEach(artistId -> System.out.print(artistId + ",")); - System.out.println(); if (artistIds.isEmpty()) { return Collections.emptyList(); }