diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java index ab56d9f..8a69a50 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/controler/DatasetController.java @@ -75,20 +75,20 @@ public class DatasetController { } @GetMapping - public Page getDatasetsByDateAfter(@RequestParam(value = "author", required = false) String author, + public Page getDatasetsByDateAfter(@RequestParam(value = "author", required = false) String author, @RequestParam(value = "title", required = false) String title, @RequestParam(value = "description", required = false) String description, @RequestParam(value = "abst", required = false) String abst, @RequestParam(value = "type", required = false) Type type, - @RequestParam(value = "min-raiting", required = false) Float raiting, + @RequestParam(value = "min-rating", required = false) Float rating, @RequestParam(value = "page", required = false, defaultValue = "0") int page, @RequestParam(value = "size", required = false, defaultValue = "20") int size, @RequestParam(value = "sort", required = false, defaultValue = "upvotes") String sort, @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction, - @RequestParam(value = "categorie", required = false) Category categories) { + @RequestParam(value = "category", required = false) Category category) { Pageable pageable = PageRequest.of(page, size, Sort.by(direction.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC, sort)); - return datasetService.getDatasetsByOptionalCriteria(title, description, author, abst, type, raiting, categories,pageable); + return datasetService.getDatasetsByOptionalCriteria(title, description, author, abst, type, rating, category,pageable); } @GetMapping("/search") @@ -96,10 +96,12 @@ public class DatasetController { @RequestParam(value = "page", required = false, defaultValue = "0") int page, @RequestParam(value = "size", required = false, defaultValue = "20") int size, @RequestParam(value = "sort", required = false, defaultValue = "upvotes") String sort, - @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction) { + @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction, + @RequestParam(value = "category", required = false, defaultValue = "%") String category, + @RequestParam(value = "type", required = false, defaultValue = "%") String type){ Pageable pageable = PageRequest.of(page, size, Sort.by(direction.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC, sort)); - return datasetService.searchByOptionalCriteria(search, pageable); + return datasetService.searchByOptionalCriteria(search, category, type, pageable); } } \ No newline at end of file diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java index cc39821..a3ac52d 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/DatasetService.java @@ -93,10 +93,11 @@ public class DatasetService { Optional.ofNullable(raiting), pageable); } - public Page searchByOptionalCriteria(String search, Pageable pageable) { - if (search.equals("%")) { - return datasetRepository.findAll(pageable); - } - return datasetRepository.searchByOptionalCriteria(Optional.ofNullable(search), pageable); + public Page searchByOptionalCriteria(String search, String categories, String type, Pageable pageable) { + //TODO: make it not Crash + Category category = categories.equals("%") ? null : Category.valueOf(categories); + Type t = type.equals("%") ? null : Type.valueOf(type); + + return datasetRepository.searchByOptionalCriteria(Optional.ofNullable(search), Optional.ofNullable(category), Optional.ofNullable(t),pageable); } } \ No newline at end of file diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java index 310930a..17fde64 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/dataRepository.java @@ -11,7 +11,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; - public interface dataRepository extends JpaRepository { Dataset getDatasetById(UUID id); @@ -63,9 +62,13 @@ public interface dataRepository extends JpaRepository { Pageable pageable); @Query("SELECT d FROM Dataset d WHERE " + - "(LOWER(d.title) LIKE LOWER(:search)) OR " + + "((LOWER(d.title) LIKE LOWER(:search)) OR " + "(LOWER(d.description) LIKE LOWER(:search)) OR " + - "(LOWER(d.author) LIKE LOWER(:search))") + "(LOWER(d.author) LIKE LOWER(:search))) AND" + + "(:categorie IS NULL OR d.categorie = :categorie) AND" + + "(:type IS NULL OR d.type = :type)") Page searchByOptionalCriteria(@Param("search") Optional search, + @Param("categorie") Optional categories, + @Param("type") Optional type, Pageable pageable); } \ No newline at end of file