From df6143da19b4ac307d7b6e06fb23bdf5e944a529 Mon Sep 17 00:00:00 2001 From: Erik Foris Date: Thu, 20 Jun 2024 15:38:09 +0200 Subject: [PATCH] Refactor DatasetController and DatasetService, improve search query and add optional criteria --- .../DataDash/controler/DatasetController.java | 51 +++++-------------- .../PADAS/group3/DataDash/model/Dataset.java | 16 +++--- .../group3/DataDash/model/dataRepository.java | 1 + 3 files changed, 23 insertions(+), 45 deletions(-) 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 215c412..e4ede5c 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 @@ -11,7 +11,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.web.config.EnableSpringDataWebSupport; import org.springframework.data.domain.Sort; - import java.util.List; import java.util.UUID; @@ -51,36 +50,6 @@ public class DatasetController { datasetService.deleteDataset(id); } - @GetMapping("/title/{title}") - public List getByTitle(@PathVariable("title") String title) { - return datasetService.getDatasetsByTitleLike(title); - } - - @GetMapping("/description/{description}") - public List getbyDescription(@PathVariable("description") String description) { - return datasetService.findByDescriptionLike(description); - } - - @GetMapping("/author/{author}") - public List getByAuthor(@PathVariable("author") String author) { - return datasetService.getDatasetsByAuthorLike(author); - } - - @GetMapping("/abst/{abst}") - public List getByAbstract(@PathVariable("abst") String abst) { - return datasetService.getDatasetsByAbstLike(abst); - } - - @GetMapping("/type/{type}") - public List getByType(@PathVariable("type") Type type) { - return datasetService.getDatasetsByType(type); - } - - @GetMapping("/rating/{rating}") - public List getByType(@PathVariable("rating") float rating) { - return datasetService.getDatasetsByRaitingGreaterThan(rating); - } - @PostMapping("/id/{id}/upvote") public Dataset upvote(@PathVariable("id") UUID id) { datasetService.upvoteDataset(id); @@ -93,26 +62,30 @@ public class DatasetController { return null; // new ResponseEntity<>(null, HttpStatus.OK); } - @GetMapping("/find") + @GetMapping 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 = "page", required = false) int page, - @RequestParam(value = "size", required = false) int size) { - Pageable pageable = PageRequest.of(page, size); - return datasetService.getDatasetsByOptionalCriteria(title, description, author, abst, type, raiting, pageable); + @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) { + 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, pageable); } - @GetMapping + @GetMapping("/search") public Page search(@RequestParam(value = "search", required = false, defaultValue = "%") String search, @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){ - Pageable pageable = PageRequest.of(page, size, Sort.by(direction.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC, sort)); + @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction) { + Pageable pageable = PageRequest.of(page, size, + Sort.by(direction.equals("asc") ? Sort.Direction.ASC : Sort.Direction.DESC, sort)); return datasetService.searchByOptionalCriteria(search, pageable); } diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java index aba5a6f..5585eff 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/model/Dataset.java @@ -2,7 +2,11 @@ package de.uni_passau.fim.PADAS.group3.DataDash.model; import java.net.URL; import java.sql.Date; +import java.time.LocalDate; import java.util.UUID; + +import org.springframework.cglib.core.Local; + import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; @@ -28,7 +32,7 @@ public class Dataset { private String author; - private Date date; + private LocalDate date; private float raiting; @@ -40,7 +44,7 @@ public class Dataset { private String[] categories; - public Dataset(String title, String abst, String description, String author, Date date, String[] categories, Type type) { + public Dataset(String title, String abst, String description, String author, String[] categories, Type type) { this.raiting = 0; this.votes = 0; @@ -49,7 +53,7 @@ public class Dataset { setAbst(abst); setDescription(description); setAuthor(author); - setDate(date); + setDate(LocalDate.now()); setCategories(categories); setType(type); setUrl(url); @@ -71,7 +75,7 @@ public class Dataset { return categories; } - public Date getDate() { + public LocalDate getDate() { return date; } @@ -119,8 +123,8 @@ public class Dataset { this.categories = categories; } - public void setDate(Date date) { - this.date = date; + public void setDate(LocalDate localDate) { + this.date = localDate; } public void setDescription(String description) { 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 ecfb331..b2934d8 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 @@ -28,6 +28,7 @@ public interface dataRepository extends JpaRepository{ List findByDateAfter(Date date); List findByDateBefore(Date date); List findByDateBetween(Date date1, Date date2); + @SuppressWarnings("null") Page findAll(Pageable pageable); @Query("SELECT d FROM Dataset d WHERE " +