diff --git a/src/main/java/eu/sshopencloud/marketplace/repositories/items/ItemRepository.java b/src/main/java/eu/sshopencloud/marketplace/repositories/items/ItemRepository.java index 0f7cd8da55212e36a5b9a35a07dd9d5750341f3e..52bf28b6b185b53c66c4bbc871e46ad8656e297a 100644 --- a/src/main/java/eu/sshopencloud/marketplace/repositories/items/ItemRepository.java +++ b/src/main/java/eu/sshopencloud/marketplace/repositories/items/ItemRepository.java @@ -1,11 +1,8 @@ package eu.sshopencloud.marketplace.repositories.items; -import eu.sshopencloud.marketplace.model.auth.User; -import eu.sshopencloud.marketplace.model.items.DraftItem; import eu.sshopencloud.marketplace.model.items.Item; +import eu.sshopencloud.marketplace.model.items.ItemStatus; import eu.sshopencloud.marketplace.model.vocabularies.Concept; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @@ -100,10 +97,12 @@ public interface ItemRepository extends ItemVersionRepository { " AND v.status = 'DELETED' AND i.category != 'STEP'", nativeQuery = true) List getDeletedItemsIds(); - @Query(value = "SELECT DISTINCT (v.curr_ver_id) FROM items i\n" + - " INNER JOIN versioned_items v \n" + - " ON v.id = i.persistent_id\n" + - " WHERE i.info_contributor_id = :contributorId ", nativeQuery = true) + @Query(value = " SELECT DISTINCT(v.curr_ver_id) FROM items i" + + " INNER JOIN versioned_items v " + + " ON v.id = i.persistent_id" + + " WHERE i.info_contributor_id = :contributorId", nativeQuery = true) List getContributedItemsIds(Long contributorId); + @Query("select i from Item i where i.id in :idList AND i.status in :itemStatusList AND i.category <> 'STEP' ") + List findByIdInAndStatusIsIn(@Param("idList") List idList, @Param("itemStatusList") List itemStatusList); } diff --git a/src/main/java/eu/sshopencloud/marketplace/services/items/ItemsService.java b/src/main/java/eu/sshopencloud/marketplace/services/items/ItemsService.java index 5ce61733d06e86dc7a1c36b1be8207cbc2722068..1927699f31c6f2f03a25611352d55d8b8e87358f 100644 --- a/src/main/java/eu/sshopencloud/marketplace/services/items/ItemsService.java +++ b/src/main/java/eu/sshopencloud/marketplace/services/items/ItemsService.java @@ -9,17 +9,14 @@ import eu.sshopencloud.marketplace.mappers.items.ItemConverter; import eu.sshopencloud.marketplace.model.actors.Actor; import eu.sshopencloud.marketplace.model.actors.ActorRole; import eu.sshopencloud.marketplace.model.auth.User; -import eu.sshopencloud.marketplace.model.items.DraftItem; -import eu.sshopencloud.marketplace.model.items.Item; -import eu.sshopencloud.marketplace.model.items.ItemCategory; -import eu.sshopencloud.marketplace.model.items.ItemContributor; +import eu.sshopencloud.marketplace.model.items.*; import eu.sshopencloud.marketplace.model.search.IndexItem; import eu.sshopencloud.marketplace.model.sources.Source; import eu.sshopencloud.marketplace.repositories.items.*; import eu.sshopencloud.marketplace.repositories.search.SearchItemRepository; import eu.sshopencloud.marketplace.repositories.sources.SourceRepository; import eu.sshopencloud.marketplace.services.auth.LoggedInUserHolder; -import eu.sshopencloud.marketplace.services.items.exception.BasicItemsComparator; +import eu.sshopencloud.marketplace.services.items.exception.ItemsComparator; import eu.sshopencloud.marketplace.services.search.SearchConverter; import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Lazy; @@ -271,25 +268,21 @@ public class ItemsService extends ItemVersionService { public PaginatedItemsBasic getContributedItems(ItemOrder order, PageCoords pageCoords) { - BasicItemsComparator comparator = new BasicItemsComparator(); User currentUser = LoggedInUserHolder.getLoggedInUser(); - if (currentUser == null ) return null; if (order == null) order = ItemOrder.MODIFIED_ON; - List list = itemRepository.getContributedItemsIds(currentUser.getId()).stream().map(id -> itemRepository.findById(id).get()).collect(Collectors.toList()); + List list = itemRepository.findByIdInAndStatusIsIn(itemRepository.getContributedItemsIds(currentUser.getId()), List.of(ItemStatus.APPROVED, ItemStatus.INGESTED, ItemStatus.SUGGESTED)); Page pages = new PageImpl<>(list, PageRequest.of(pageCoords.getPage() - 1, pageCoords.getPerpage(), Sort.by(getSortOrderByItemOrder(order))), list.size()); - List items = pages.stream().map(ItemConverter::convertItem).collect(Collectors.toList()); - if(order != ItemOrder.MODIFIED_ON) - items.sort(comparator); + list.sort(new ItemsComparator()); - return PaginatedItemsBasic.builder().items(items) + return PaginatedItemsBasic.builder().items(ItemConverter.convertItem(list)) .count(pages.getContent().size()).hits(pages.getTotalElements()) .page(pageCoords.getPage()).perpage(pageCoords.getPerpage()) .pages(pages.getTotalPages()) diff --git a/src/main/java/eu/sshopencloud/marketplace/services/items/exception/BasicItemsComparator.java b/src/main/java/eu/sshopencloud/marketplace/services/items/exception/BasicItemsComparator.java deleted file mode 100644 index c96eaa4724e0d35c22b9571060ae072bb08416a3..0000000000000000000000000000000000000000 --- a/src/main/java/eu/sshopencloud/marketplace/services/items/exception/BasicItemsComparator.java +++ /dev/null @@ -1,16 +0,0 @@ -package eu.sshopencloud.marketplace.services.items.exception; - -import eu.sshopencloud.marketplace.dto.items.ItemBasicDto; -import lombok.experimental.UtilityClass; -import org.apache.commons.lang3.StringUtils; - -import java.util.Comparator; - - -public class BasicItemsComparator implements Comparator { - - @Override - public int compare(ItemBasicDto firstPlayer, ItemBasicDto secondPlayer) { - return StringUtils.compare(firstPlayer.getLabel(), secondPlayer.getLabel()); - } -} \ No newline at end of file diff --git a/src/main/java/eu/sshopencloud/marketplace/services/items/exception/ItemsComparator.java b/src/main/java/eu/sshopencloud/marketplace/services/items/exception/ItemsComparator.java new file mode 100644 index 0000000000000000000000000000000000000000..5348f0da514bcbd88772d3a6a5f77cdd9766eaf5 --- /dev/null +++ b/src/main/java/eu/sshopencloud/marketplace/services/items/exception/ItemsComparator.java @@ -0,0 +1,15 @@ +package eu.sshopencloud.marketplace.services.items.exception; + +import eu.sshopencloud.marketplace.model.items.Item; +import org.apache.commons.lang3.StringUtils; + +import java.util.Comparator; + + +public class ItemsComparator implements Comparator { + + @Override + public int compare(Item firstPlayer, Item secondPlayer) { + return StringUtils.compare(firstPlayer.getLabel(), secondPlayer.getLabel()); + } +} \ No newline at end of file