diff --git a/codigos/backend/docs/diagram.asta b/codigos/backend/docs/diagram.asta index 0a3205f..420d8ea 100644 Binary files a/codigos/backend/docs/diagram.asta and b/codigos/backend/docs/diagram.asta differ diff --git a/codigos/backend/docs/diagram.jpg b/codigos/backend/docs/diagram.jpg index cf6a367..32d2d86 100644 Binary files a/codigos/backend/docs/diagram.jpg and b/codigos/backend/docs/diagram.jpg differ diff --git a/codigos/backend/docs/diagram.jpg.bak b/codigos/backend/docs/diagram.jpg.bak index ae30bfc..cf6a367 100644 Binary files a/codigos/backend/docs/diagram.jpg.bak and b/codigos/backend/docs/diagram.jpg.bak differ diff --git a/codigos/backend/src/main/java/com/srh/api/controller/ItemRatingController.java b/codigos/backend/src/main/java/com/srh/api/controller/ItemRatingController.java index 67301e1..c9361ff 100644 --- a/codigos/backend/src/main/java/com/srh/api/controller/ItemRatingController.java +++ b/codigos/backend/src/main/java/com/srh/api/controller/ItemRatingController.java @@ -73,4 +73,17 @@ public class ItemRatingController { itemRatingService.delete(id); return ResponseEntity.noContent().build(); } + + @GetMapping("/itens/{itemId}") + public ResponseEntity> listItensRatingsByItem(@PathVariable Integer itemId, Pageable pageInfo) { + Page itensRatings = itemRatingService.listItensRatingsByItem(itemId, pageInfo); + return ResponseEntity.ok(ItemRatingDto.convert(itensRatings)); + } + + @GetMapping("/tags/{tagId}") + public ResponseEntity> listItensRatingsByTag(@PathVariable Integer tagId, + Pageable pageInfo) { + Page itensRatings = itemRatingService.listItensRAtingsByTag(tagId, pageInfo); + return ResponseEntity.ok(ItemRatingDto.convert(itensRatings)); + } } diff --git a/codigos/backend/src/main/java/com/srh/api/controller/RecommendationController.java b/codigos/backend/src/main/java/com/srh/api/controller/RecommendationController.java index e4a3ac2..ff3e419 100644 --- a/codigos/backend/src/main/java/com/srh/api/controller/RecommendationController.java +++ b/codigos/backend/src/main/java/com/srh/api/controller/RecommendationController.java @@ -70,4 +70,28 @@ public class RecommendationController { return ResponseEntity.noContent().build(); } + @GetMapping("/performances/{algorithmId}") + public ResponseEntity> listRecommendationsPerformance( + @PathVariable Integer algorithmId, Pageable pageInfo) { + Page recommendations = recommendationService.listRecommendationsByAlgorithm( + algorithmId, pageInfo + ); + return ResponseEntity.ok(RecommendationDto.convert(recommendations)); + } + + @GetMapping("/matrices/{matrixId}") + public ResponseEntity> listRecommendationsMatrix( + @PathVariable Integer matrixId, Pageable pageInfo) { + Page recommendations = recommendationService.listRecommendationsByMatrixId( + matrixId, pageInfo); + return ResponseEntity.ok(RecommendationDto.convert(recommendations)); + } + + @GetMapping("/tags/{tagId}") + public ResponseEntity> listRecommendationsByTag( + @PathVariable Integer tagId, Pageable pageInfo + ) { + Page recommendations = recommendationService.listRecommendationsByTag(tagId, pageInfo); + return ResponseEntity.ok(RecommendationDto.convert(recommendations)); + } } diff --git a/codigos/backend/src/main/java/com/srh/api/repository/ItemRatingRepository.java b/codigos/backend/src/main/java/com/srh/api/repository/ItemRatingRepository.java index 4567a28..6bf0d62 100644 --- a/codigos/backend/src/main/java/com/srh/api/repository/ItemRatingRepository.java +++ b/codigos/backend/src/main/java/com/srh/api/repository/ItemRatingRepository.java @@ -1,7 +1,11 @@ package com.srh.api.repository; +import com.srh.api.model.Item; import com.srh.api.model.ItemRating; import org.springframework.data.repository.PagingAndSortingRepository; +import java.util.List; + public interface ItemRatingRepository extends PagingAndSortingRepository { + List findByItem(Item item); } diff --git a/codigos/backend/src/main/java/com/srh/api/repository/ItemRepository.java b/codigos/backend/src/main/java/com/srh/api/repository/ItemRepository.java index 9e87c6c..345333d 100644 --- a/codigos/backend/src/main/java/com/srh/api/repository/ItemRepository.java +++ b/codigos/backend/src/main/java/com/srh/api/repository/ItemRepository.java @@ -2,10 +2,12 @@ package com.srh.api.repository; import com.srh.api.model.Item; import com.srh.api.model.Project; +import com.srh.api.model.Tag; import org.springframework.data.repository.PagingAndSortingRepository; import java.util.List; public interface ItemRepository extends PagingAndSortingRepository { List findByProject(Project project); + List findByTags(Tag tag); } diff --git a/codigos/backend/src/main/java/com/srh/api/repository/RecommendationRepository.java b/codigos/backend/src/main/java/com/srh/api/repository/RecommendationRepository.java index cf20c07..8ad6d9e 100644 --- a/codigos/backend/src/main/java/com/srh/api/repository/RecommendationRepository.java +++ b/codigos/backend/src/main/java/com/srh/api/repository/RecommendationRepository.java @@ -1,7 +1,14 @@ package com.srh.api.repository; +import com.srh.api.model.Algorithm; import com.srh.api.model.Recommendation; +import org.springframework.data.domain.Page; import org.springframework.data.repository.PagingAndSortingRepository; +import java.util.List; + public interface RecommendationRepository extends PagingAndSortingRepository { + List findByAlgorithm(Algorithm algorithm); + List findByMatrixId(Integer matrixId); + List findByItem(Integer itemId); } diff --git a/codigos/backend/src/main/java/com/srh/api/service/ItemRatingService.java b/codigos/backend/src/main/java/com/srh/api/service/ItemRatingService.java index 1eb1b94..9f61283 100644 --- a/codigos/backend/src/main/java/com/srh/api/service/ItemRatingService.java +++ b/codigos/backend/src/main/java/com/srh/api/service/ItemRatingService.java @@ -3,7 +3,10 @@ package com.srh.api.service; import com.srh.api.model.Item; import com.srh.api.model.ItemRating; import com.srh.api.model.Evaluator; +import com.srh.api.model.Tag; import com.srh.api.repository.ItemRatingRepository; +import com.srh.api.repository.ItemRepository; +import com.srh.api.utils.PageUtil; import lombok.Setter; import org.hibernate.ObjectNotFoundException; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +14,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; @Service @@ -19,11 +24,17 @@ public class ItemRatingService { private ItemRatingRepository itemRatingRepository; @Autowired + private ItemRepository itemRepository; + + @Autowired private EvaluatorService evaluatorService; @Autowired private ItemService itemService; + @Autowired + private TagService tagService; + @Setter private String authorizationHeaderValue; @@ -62,4 +73,24 @@ public class ItemRatingService { find(id); itemRatingRepository.deleteById(id); } + + public Page listItensRatingsByItem(Integer itemId, Pageable pageInfo) { + Item item = itemService.find(itemId); + List itensRatings = itemRatingRepository.findByItem(item); + PageUtil pageUtil = new PageUtil<>(pageInfo, itensRatings); + return pageUtil.getPage(); + } + + public Page listItensRAtingsByTag(Integer tagId, Pageable pageInfo) { + Tag tag = tagService.find(tagId); + List itensWithTag = itemRepository.findByTags(tag); + List itensRatings = new ArrayList<>(); + + for (Item item: itensWithTag) { + itensRatings.addAll(item.getItemRatings()); + } + + PageUtil pageUtil = new PageUtil<>(pageInfo, itensRatings); + return pageUtil.getPage(); + } } diff --git a/codigos/backend/src/main/java/com/srh/api/service/RecommendationService.java b/codigos/backend/src/main/java/com/srh/api/service/RecommendationService.java index b79c321..dd73151 100644 --- a/codigos/backend/src/main/java/com/srh/api/service/RecommendationService.java +++ b/codigos/backend/src/main/java/com/srh/api/service/RecommendationService.java @@ -4,9 +4,10 @@ import com.srh.api.algorithms.AlgorithmCalc; import com.srh.api.algorithms.AlgorithmStrategy; import com.srh.api.algorithms.structure.RecommendationsByUser; import com.srh.api.dto.resource.RecommendationForm; -import com.srh.api.model.Evaluator; -import com.srh.api.model.Recommendation; +import com.srh.api.model.*; +import com.srh.api.repository.ItemRepository; import com.srh.api.repository.RecommendationRepository; +import com.srh.api.utils.PageUtil; import org.hibernate.ObjectNotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -22,6 +23,15 @@ public class RecommendationService { @Autowired private RecommendationRepository recommendationRepository; + @Autowired + private ItemRepository itemRepository; + + @Autowired + private TagService tagService; + + @Autowired + private AlgorithmService algorithmService; + public Recommendation find(Integer id) { Optional recommendation = recommendationRepository.findById(id); @@ -53,4 +63,30 @@ public class RecommendationService { AlgorithmCalc algorithm = AlgorithmStrategy.findInstance(recommendationInfo.getAlgorithmId()); return algorithm.calc(recommendationInfo); } + + public Page listRecommendationsByAlgorithm(Integer algorithmId, Pageable pageInfo) { + Algorithm algorithm = algorithmService.find(algorithmId); + List recommendations = recommendationRepository.findByAlgorithm(algorithm); + PageUtil pageUtil = new PageUtil<>(pageInfo, recommendations); + return pageUtil.getPage(); + } + + public Page listRecommendationsByMatrixId(Integer matrixId, Pageable pageInfo) { + List recommendations = recommendationRepository.findByMatrixId(matrixId); + PageUtil pageUtil = new PageUtil<>(pageInfo, recommendations); + return pageUtil.getPage(); + } + + public Page listRecommendationsByTag(Integer tagId, Pageable pageInfo) { + Tag tag = tagService.find(tagId); + List itens = itemRepository.findByTags(tag); + List recommendations = new ArrayList<>(); + + for (Item item : itens) { + recommendations.addAll(item.getRecommendations()); + } + + PageUtil pageUtil = new PageUtil<>(pageInfo, recommendations); + return pageUtil.getPage(); + } } -- libgit2 0.21.2