diff --git a/src/main/java/org/example/gather_back_end/creator/controller/CreatorController.java b/src/main/java/org/example/gather_back_end/creator/controller/CreatorController.java index 24bc7f0..8d79762 100644 --- a/src/main/java/org/example/gather_back_end/creator/controller/CreatorController.java +++ b/src/main/java/org/example/gather_back_end/creator/controller/CreatorController.java @@ -77,10 +77,11 @@ public SuccessResponse createCreator( // 크리에이터 상세 페이지 조회 @GetMapping("/{nickname}") - public SuccessResponse getCreator(@PathVariable String nickname) { - - GetCreatorRes getCreatorRes = creatorService.getCreator(nickname); + public SuccessResponse getCreator(Authentication authentication, @PathVariable String nickname) { + CustomOAuth2User customOAuth2User = (CustomOAuth2User) authentication.getPrincipal(); + String providerId = customOAuth2User.getUsername(); + GetCreatorRes getCreatorRes = creatorService.getCreator(providerId, nickname); return SuccessResponse.of(getCreatorRes); } diff --git a/src/main/java/org/example/gather_back_end/creator/controller/CreatorControllerApi.java b/src/main/java/org/example/gather_back_end/creator/controller/CreatorControllerApi.java index f9a5eea..7c43a39 100644 --- a/src/main/java/org/example/gather_back_end/creator/controller/CreatorControllerApi.java +++ b/src/main/java/org/example/gather_back_end/creator/controller/CreatorControllerApi.java @@ -63,7 +63,7 @@ SuccessResponse createCreator( schema = @Schema(implementation = SuccessResponse.class))) }) @GetMapping - SuccessResponse getCreator(@PathVariable String nickname); + SuccessResponse getCreator(Authentication authentication, @PathVariable String nickname); @Operation(summary = "크리에이터 등록 초기 화면 불러 오기") @ApiResponses(value = { diff --git a/src/main/java/org/example/gather_back_end/creator/service/CreatorService.java b/src/main/java/org/example/gather_back_end/creator/service/CreatorService.java index 2d36bef..490b9cb 100644 --- a/src/main/java/org/example/gather_back_end/creator/service/CreatorService.java +++ b/src/main/java/org/example/gather_back_end/creator/service/CreatorService.java @@ -17,7 +17,7 @@ void createCreator( String contactEmail ); - GetCreatorRes getCreator(String nickname); + GetCreatorRes getCreator(String providerId, String nickname); GetCreatorRes getCreatorInfo(Authentication authentication); PageResponse filteringCreator(Pageable pageable, Integer price, String category, String align); diff --git a/src/main/java/org/example/gather_back_end/creator/service/CreatorServiceImpl.java b/src/main/java/org/example/gather_back_end/creator/service/CreatorServiceImpl.java index 1974a33..cfdeb1b 100644 --- a/src/main/java/org/example/gather_back_end/creator/service/CreatorServiceImpl.java +++ b/src/main/java/org/example/gather_back_end/creator/service/CreatorServiceImpl.java @@ -15,6 +15,7 @@ import org.example.gather_back_end.util.format.WorkTypeConverter; import org.example.gather_back_end.util.jwt.dto.CustomOAuth2User; import org.example.gather_back_end.util.response.PageResponse; +import org.example.gather_back_end.view.service.ViewService; import org.example.gather_back_end.work.dto.GetWorkRes; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -30,6 +31,7 @@ public class CreatorServiceImpl implements CreatorService { private final UserRepository userRepository; private final PortfolioRepository portfolioRepository; private final WorkRepository workRepository; + private final ViewService viewService; // 크리에이터 등록 @Override @@ -49,24 +51,29 @@ public void createCreator( // 크리에이터 상세 페이지 조회 @Override - public GetCreatorRes getCreator(String nickname){ + public GetCreatorRes getCreator(String providerId, String nickname){ - User user = userRepository.getByNickname(nickname); + // 상세 페이지의 유저 + User foundUser = userRepository.getByNickname(nickname); - List getPortfolioResList = portfolioRepository.getAllByUser(user); - List getWorkResList = workRepository.findAllByUser(user); + // 본 기록 저장 + viewService.execute(providerId, foundUser.getNickname()); + + // 응답 담기 + List getPortfolioResList = portfolioRepository.getAllByUser(foundUser); + List getWorkResList = workRepository.findAllByUser(foundUser); // GetCreatorRes에 하나하나 다 담아야함 GetCreatorRes res = new GetCreatorRes( nickname, - user.getProfileImgUrl(), - user.getIntroductionTitle(), - user.getIntroductionContent(), + foundUser.getProfileImgUrl(), + foundUser.getIntroductionTitle(), + foundUser.getIntroductionContent(), getPortfolioResList, getWorkResList, - user.getContactKakaoId(), - user.getContactEmail() - ); + foundUser.getContactKakaoId(), + foundUser.getContactEmail() + ); return res; diff --git a/src/main/java/org/example/gather_back_end/domain/User.java b/src/main/java/org/example/gather_back_end/domain/User.java index 1987f5d..e505e9a 100644 --- a/src/main/java/org/example/gather_back_end/domain/User.java +++ b/src/main/java/org/example/gather_back_end/domain/User.java @@ -83,9 +83,6 @@ public class User extends BaseEntity { @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List workList = new ArrayList<>(); - @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) - private List usersViewRecordList = new ArrayList<>(); - // 유저 생성 public static User createUserInfo(String profileImgUrl, String username, String name, String email, String role, String nickname) { return User.builder() diff --git a/src/main/java/org/example/gather_back_end/domain/UsersViewRecord.java b/src/main/java/org/example/gather_back_end/domain/UsersViewRecord.java deleted file mode 100644 index 7509aa9..0000000 --- a/src/main/java/org/example/gather_back_end/domain/UsersViewRecord.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.example.gather_back_end.domain; - -import jakarta.persistence.Entity; -import jakarta.persistence.FetchType; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import org.example.gather_back_end.util.entity.BaseEntity; - -@Entity -@Table(name = "ViewRecord") -@Getter -@Builder -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor(access = AccessLevel.PROTECTED) -public class UsersViewRecord extends BaseEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - // 회원 연관관계 - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "user_id") - private User user; - - // 기록 테이블 연관관계 - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "view_record_id") - private ViewRecord viewRecord; - -} diff --git a/src/main/java/org/example/gather_back_end/domain/ViewRecord.java b/src/main/java/org/example/gather_back_end/domain/ViewRecord.java index 170476c..b55cf6c 100644 --- a/src/main/java/org/example/gather_back_end/domain/ViewRecord.java +++ b/src/main/java/org/example/gather_back_end/domain/ViewRecord.java @@ -30,11 +30,24 @@ public class ViewRecord extends BaseEntity { // 몇 번 봤는지 @Builder.Default - private Integer viewCount = 0; + private Integer viewCount = 1; - // 크리에이터명 - private String nickname; + // 포폴 본 사람 닉네임 + private String currentLoginUserNickname; - @OneToMany(mappedBy = "viewRecord", cascade = CascadeType.ALL, orphanRemoval = true) - private List usersViewRecordList = new ArrayList<>(); + // 포폴 봄을 당한 사람 닉네임 + private String currentSeenUserNickname; + + // 엔티티 생성 + public static ViewRecord createViewRecord(String currentLoginUserNickname, String currentSeenUserNickname) { + return ViewRecord.builder() + .currentLoginUserNickname(currentLoginUserNickname) + .currentSeenUserNickname(currentSeenUserNickname) + .build(); + } + + // viewCount 증가 + public void updateViewCount() { + this.viewCount++; + } } diff --git a/src/main/java/org/example/gather_back_end/repository/UserRepository.java b/src/main/java/org/example/gather_back_end/repository/UserRepository.java index 54d9e86..ffa6384 100644 --- a/src/main/java/org/example/gather_back_end/repository/UserRepository.java +++ b/src/main/java/org/example/gather_back_end/repository/UserRepository.java @@ -73,11 +73,13 @@ Page customFiltering( Pageable pageable ); - @Query("SELECT u FROM User u " + - "JOIN u.workList w " + - "JOIN u.portfolioList p " + - "WHERE u.introductionTitle IS NOT NULL " + // 소개글 제목 존재 - "AND SIZE(u.workList) > 0 " + // 작업 가능 항목 등록 - "AND SIZE(u.portfolioList) > 0 ") - User findByMyPage(User user); // 마이페이지 유저 찾기 + @Query("SELECT CASE WHEN COUNT(u) > 0 THEN TRUE ELSE FALSE END " + + "FROM User u " + + "JOIN u.workList w " + + "JOIN u.portfolioList p " + + "WHERE u.id = :userId " + + "AND u.introductionTitle IS NOT NULL " + + "AND SIZE(u.workList) > 0 " + + "AND SIZE(u.portfolioList) > 0 ") + boolean isUserCreator(@Param("userId") Long userId); } diff --git a/src/main/java/org/example/gather_back_end/repository/UsersViewRecordRepository.java b/src/main/java/org/example/gather_back_end/repository/UsersViewRecordRepository.java deleted file mode 100644 index 5fce22c..0000000 --- a/src/main/java/org/example/gather_back_end/repository/UsersViewRecordRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.example.gather_back_end.repository; - -import java.util.Optional; -import org.example.gather_back_end.domain.UsersViewRecord; -import org.example.gather_back_end.view.exception.UsersViewRecordNotFoundException; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface UsersViewRecordRepository extends JpaRepository { - - default UsersViewRecord getById(Long id) { - return findById(id).orElseThrow(UsersViewRecordNotFoundException::new); - } - - Optional findById(Long id); -} diff --git a/src/main/java/org/example/gather_back_end/repository/ViewRecordRepository.java b/src/main/java/org/example/gather_back_end/repository/ViewRecordRepository.java index 0d8e175..42fbcf2 100644 --- a/src/main/java/org/example/gather_back_end/repository/ViewRecordRepository.java +++ b/src/main/java/org/example/gather_back_end/repository/ViewRecordRepository.java @@ -1,5 +1,6 @@ package org.example.gather_back_end.repository; +import java.util.List; import java.util.Optional; import org.example.gather_back_end.domain.ViewRecord; import org.example.gather_back_end.view.exception.ViewRecordNotFoundException; @@ -14,4 +15,10 @@ default ViewRecord getById(Long id) { } Optional findById(Long id); + Optional findByCurrentLoginUserNicknameAndCurrentSeenUserNickname( + String currentLoginUserNickname, + String currentSeenUserNickname + ); + + List findByCurrentLoginUserNickname(String currentLoginUserNickname); } diff --git a/src/main/java/org/example/gather_back_end/user/controller/UserController.java b/src/main/java/org/example/gather_back_end/user/controller/UserController.java index e0f98aa..c1218a4 100644 --- a/src/main/java/org/example/gather_back_end/user/controller/UserController.java +++ b/src/main/java/org/example/gather_back_end/user/controller/UserController.java @@ -1,8 +1,10 @@ package org.example.gather_back_end.user.controller; import lombok.RequiredArgsConstructor; +import org.example.gather_back_end.user.dto.GetMyPageRes; import org.example.gather_back_end.user.dto.GetUserRes; import org.example.gather_back_end.user.service.UserService; +import org.example.gather_back_end.util.jwt.dto.CustomOAuth2User; import org.example.gather_back_end.util.response.SuccessResponse; import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.*; @@ -17,17 +19,17 @@ public class UserController implements UserControllerApi { // 유저 프로필 이미지 & 이름 GetMapping @GetMapping("/header-info") public SuccessResponse getUser(Authentication authentication){ - GetUserRes res = userService.getUser(authentication); - return SuccessResponse.of(res); } // 마이페이지 @GetMapping("/my-page") - public SuccessResponse getMyPage(Authentication authentication){ - - return SuccessResponse.of(userService.getMyPage(authentication)); + public SuccessResponse getMyPage(Authentication authentication) { + CustomOAuth2User customOAuth2User = (CustomOAuth2User) authentication.getPrincipal(); + String providerId = customOAuth2User.getUsername(); + GetMyPageRes res = userService.getMyPage(providerId); + return SuccessResponse.of(res); } } diff --git a/src/main/java/org/example/gather_back_end/user/dto/GetMyPageProfileInfo.java b/src/main/java/org/example/gather_back_end/user/dto/GetMyPageProfileInfo.java new file mode 100644 index 0000000..8aa7337 --- /dev/null +++ b/src/main/java/org/example/gather_back_end/user/dto/GetMyPageProfileInfo.java @@ -0,0 +1,14 @@ +package org.example.gather_back_end.user.dto; + +public record GetMyPageProfileInfo( + String profileImgUrl, // 프로필 이미지 + String role, // 크리에이터인지 아닌지 + String email +) { + + // 정적 팩토리 메서드 + public static GetMyPageProfileInfo of(String profileImgUrl, String role, String email) { + return new GetMyPageProfileInfo(profileImgUrl, role, email); + } + +} diff --git a/src/main/java/org/example/gather_back_end/user/dto/GetMyPagePromotionRes.java b/src/main/java/org/example/gather_back_end/user/dto/GetMyPagePromotionRes.java index ff14eff..5e564ff 100644 --- a/src/main/java/org/example/gather_back_end/user/dto/GetMyPagePromotionRes.java +++ b/src/main/java/org/example/gather_back_end/user/dto/GetMyPagePromotionRes.java @@ -2,20 +2,22 @@ import lombok.Builder; import org.example.gather_back_end.domain.PromotionRequest; - -import java.time.LocalDateTime; +import org.example.gather_back_end.util.format.DateUtils; @Builder public record GetMyPagePromotionRes( - LocalDateTime createDay, + String createDay, String title, Integer period, Integer targetNumberOfPeople, Integer budget ) { public static GetMyPagePromotionRes from(PromotionRequest promotionRequest) { + + String formattedDate = DateUtils.formatToDate(promotionRequest.getCreateAt()); + return GetMyPagePromotionRes.builder() - .createDay(promotionRequest.getCreateAt()) + .createDay(formattedDate) .title(promotionRequest.getTitle()) .period(promotionRequest.getPeriod()) .targetNumberOfPeople(promotionRequest.getTargetNumberOfPeople()) diff --git a/src/main/java/org/example/gather_back_end/user/dto/GetMyPageRes.java b/src/main/java/org/example/gather_back_end/user/dto/GetMyPageRes.java index b20109a..70b092c 100644 --- a/src/main/java/org/example/gather_back_end/user/dto/GetMyPageRes.java +++ b/src/main/java/org/example/gather_back_end/user/dto/GetMyPageRes.java @@ -1,15 +1,13 @@ package org.example.gather_back_end.user.dto; -import lombok.Builder; -import org.example.gather_back_end.domain.User; - import java.util.List; +import lombok.Builder; +import org.example.gather_back_end.creator.dto.filtering.CreatorInfo; @Builder public record GetMyPageRes( - String profileImgUrl, // 프로필 이미지 - String role, // 크리에이터인지 아닌지 - String email, - List getMyPagePromotionResList + GetMyPageProfileInfo profileInfo, // 프로필 정보 + List promotionInfo, // 홍보 전략 요청 사항 + List creatorInfo // 내가 조회한 크리에이터 목록 ) { } diff --git a/src/main/java/org/example/gather_back_end/user/service/UserService.java b/src/main/java/org/example/gather_back_end/user/service/UserService.java index 85110ad..0d72a23 100644 --- a/src/main/java/org/example/gather_back_end/user/service/UserService.java +++ b/src/main/java/org/example/gather_back_end/user/service/UserService.java @@ -10,5 +10,5 @@ public interface UserService { GetUserRes getUser(Authentication authentication); // 마이페이지 정보 가져오기 - GetMyPageRes getMyPage(Authentication authentication); + GetMyPageRes getMyPage(String providerId); } diff --git a/src/main/java/org/example/gather_back_end/user/service/UserServiceImpl.java b/src/main/java/org/example/gather_back_end/user/service/UserServiceImpl.java index 516bcca..0f65ea0 100644 --- a/src/main/java/org/example/gather_back_end/user/service/UserServiceImpl.java +++ b/src/main/java/org/example/gather_back_end/user/service/UserServiceImpl.java @@ -1,14 +1,18 @@ package org.example.gather_back_end.user.service; +import java.util.Optional; import lombok.RequiredArgsConstructor; +import org.example.gather_back_end.creator.dto.filtering.CreatorInfo; import org.example.gather_back_end.domain.PromotionRequest; import org.example.gather_back_end.domain.User; import org.example.gather_back_end.repository.PromotionRequestRepository; import org.example.gather_back_end.repository.UserRepository; +import org.example.gather_back_end.user.dto.GetMyPageProfileInfo; import org.example.gather_back_end.user.dto.GetMyPagePromotionRes; import org.example.gather_back_end.user.dto.GetMyPageRes; import org.example.gather_back_end.user.dto.GetUserRes; import org.example.gather_back_end.util.jwt.dto.CustomOAuth2User; +import org.example.gather_back_end.view.service.ViewService; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -20,6 +24,7 @@ public class UserServiceImpl implements UserService { private final UserRepository userRepository; private final PromotionRequestRepository promotionRequestRepository; + private final ViewService viewService; // 사용자 프로필과 이름 가져오는 서비스 @Override @@ -30,42 +35,34 @@ public GetUserRes getUser(Authentication authentication) { } @Override - public GetMyPageRes getMyPage(Authentication authentication) { - CustomOAuth2User customOAuth2User = (CustomOAuth2User) authentication.getPrincipal(); + public GetMyPageRes getMyPage(String providerId) { // 유저 정보 - User user = userRepository.getByUsername(customOAuth2User.getUsername()); + User user = userRepository.getByUsername(providerId); - // 데이터베이스에서 특정 유저 조회 - User myUser = userRepository.findByMyPage(user); + // 프로필 정보 생성 + boolean isUserCreator = userRepository.isUserCreator(user.getId()); + GetMyPageProfileInfo profileInfo = GetMyPageProfileInfo.of( + user.getProfileImgUrl(), + isUserCreator ? "크리에이터" : null, + user.getEmail() + ); - // 전달 할 응답 - GetMyPageRes getMyPageRes; + // 홍보 전략 요청 내역 생성 List promotionRequestList = promotionRequestRepository.findAllByUser(user); - List getMyPagePromotionResList = new ArrayList<>(); + List promotionInfo = promotionRequestList.stream() + .map(GetMyPagePromotionRes::from) + .toList(); - // 문의 했던 홍보 - for(PromotionRequest promotionRequest : promotionRequestList) { - getMyPagePromotionResList.add(GetMyPagePromotionRes.from(promotionRequest)); - } + // 내가 조회한 크리에이터 정보 생성 + List creatorInfo = viewService.getViewCreatorList(providerId); - // 유저 정보 담기 - if(myUser != null) { - getMyPageRes = new GetMyPageRes( - user.getProfileImgUrl(), - "크리에이터", - user.getEmail(), - getMyPagePromotionResList - ); - } - else - getMyPageRes = new GetMyPageRes( - user.getProfileImgUrl(), - "", - user.getEmail(), - getMyPagePromotionResList - ); - - return getMyPageRes; + // 마이페이지 응답 생성 + return GetMyPageRes.builder() + .profileInfo(profileInfo) + .promotionInfo(promotionInfo) + .creatorInfo(creatorInfo) + .build(); } + } diff --git a/src/main/java/org/example/gather_back_end/util/format/DateUtils.java b/src/main/java/org/example/gather_back_end/util/format/DateUtils.java new file mode 100644 index 0000000..b8e0e97 --- /dev/null +++ b/src/main/java/org/example/gather_back_end/util/format/DateUtils.java @@ -0,0 +1,21 @@ +package org.example.gather_back_end.util.format; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class DateUtils { + + public static String formatToDate(LocalDateTime dateTime) { + if (dateTime == null) { + return null; // 혹은 기본값 반환 + } + // LocalDate로 변환 후 형식 지정 + LocalDate localDate = dateTime.toLocalDate(); + return localDate.format(DateTimeFormatter.ofPattern("yyyy.MM.dd")); + } +} + diff --git a/src/main/java/org/example/gather_back_end/view/service/ViewServiceImpl.java b/src/main/java/org/example/gather_back_end/view/service/ViewServiceImpl.java new file mode 100644 index 0000000..3906656 --- /dev/null +++ b/src/main/java/org/example/gather_back_end/view/service/ViewServiceImpl.java @@ -0,0 +1,81 @@ +package org.example.gather_back_end.view.service; + +import jakarta.transaction.Transactional; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.example.gather_back_end.creator.dto.filtering.CreatorInfo; +import org.example.gather_back_end.domain.Portfolio; +import org.example.gather_back_end.domain.User; +import org.example.gather_back_end.domain.ViewRecord; +import org.example.gather_back_end.repository.UserRepository; +import org.example.gather_back_end.repository.ViewRecordRepository; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +@RequiredArgsConstructor +public class ViewServiceImpl implements ViewService { + + private final UserRepository userRepository; + private final ViewRecordRepository viewRecordRepository; + + @Transactional + @Override + public void execute(String providerId, String nickname) { + + // 사용자 닉네임 추출 + String currentLoginUserNickname = userRepository.getByUsername(providerId).getNickname(); // 현재 로그인한 사용자 + String currentSeenUserNickname = userRepository.getByNickname(nickname).getNickname(); // 현재 로그인한 사용자가 본 포폴 사용자 + + // 기록 찾기 + Optional viewRecord = viewRecordRepository.findByCurrentLoginUserNicknameAndCurrentSeenUserNickname( + currentLoginUserNickname, currentSeenUserNickname + ); + + // 기록이 없다면 단순 저장 + if (viewRecord.isEmpty()) { + viewRecordRepository.save(ViewRecord.createViewRecord(currentLoginUserNickname, currentSeenUserNickname)); + } else { // 기록이 있다면 본 count 증가 + viewRecord.get().updateViewCount(); + } + } + + @Override + public List getViewCreatorList(String providerId) { + + // 현재 로그인한 사용자의 닉네임 가져오기 + String currentLoginUserNickname = userRepository.getByUsername(providerId).getNickname(); + + // ViewRecord에서 현재 로그인한 사용자가 본 기록 가져오기 + List byCurrentLoginUserNickname = viewRecordRepository.findByCurrentLoginUserNickname(currentLoginUserNickname); + + // CreatorInfo 리스트 생성 + List creatorInfoList = new ArrayList<>(); + + // ViewRecord 리스트를 순회하며 CreatorInfo 변환 + for (ViewRecord record : byCurrentLoginUserNickname) { + String seenUserNickname = record.getCurrentSeenUserNickname(); + User seenUser = userRepository.getByNickname(seenUserNickname); + + if (seenUser != null) { + // Work 리스트의 카테고리 가져오기 + List availableWork = seenUser.getWorkList() + .stream() + .map(work -> work.getCategory().name()) + .toList(); + + // Portfolio 리스트 가져오기 + List portfolioList = seenUser.getPortfolioList(); + + // CreatorInfo 변환 및 추가 + creatorInfoList.add(CreatorInfo.from(seenUser, availableWork, portfolioList, "lowPrice", null)); + } + } + + return creatorInfoList; + } + +}