diff --git a/src/main/java/TechVault/services/homepage/HomepageService.java b/src/main/java/TechVault/services/homepage/HomepageService.java index a4c45ec..cef6385 100644 --- a/src/main/java/TechVault/services/homepage/HomepageService.java +++ b/src/main/java/TechVault/services/homepage/HomepageService.java @@ -8,13 +8,13 @@ public interface HomepageService { - public List getTrending(Integer pageNo); + public List getTrending(Integer pageNo, String type); - public List getLatest(Integer pageNo); + public List getLatest(Integer pageNo, String type); - public List getTopDiscussed(Integer pageNo); + public List getTopDiscussed(Integer pageNo, String type); - public List getTopLiked(Integer pageNo); + public List getTopLiked(Integer pageNo, String type); List getBlogsCountByCompany(); diff --git a/src/main/java/TechVault/services/homepage/HomepageServiceImpl.java b/src/main/java/TechVault/services/homepage/HomepageServiceImpl.java index cd4be82..4247639 100644 --- a/src/main/java/TechVault/services/homepage/HomepageServiceImpl.java +++ b/src/main/java/TechVault/services/homepage/HomepageServiceImpl.java @@ -23,27 +23,27 @@ public class HomepageServiceImpl implements HomepageService { private HomepageDao homepageDao; @Override - public List getTrending(Integer pageNo) { - return getBlogs(pageNo, VIEWED); + public List getTrending(Integer pageNo, String type) { + return getBlogs(pageNo, type, VIEWED); } @Override - public List getLatest(Integer pageNo) { - return getBlogs(pageNo, DATE); + public List getLatest(Integer pageNo, String type) { + return getBlogs(pageNo, type, DATE); } @Override - public List getTopDiscussed(Integer pageNo) { - return getBlogs(pageNo, DISCUSSED); + public List getTopDiscussed(Integer pageNo, String type) { + return getBlogs(pageNo, type, DISCUSSED); } @Override - public List getTopLiked(Integer pageNo) { - return getBlogs(pageNo, LIKED); + public List getTopLiked(Integer pageNo, String type) { + return getBlogs(pageNo, type, LIKED); } - private List getBlogs(Integer pageNo, String sortBy) { - return homepageDao.getBlog(pageNo, PAGESIZE, sortBy); + private List getBlogs(Integer pageNo, String type, String sortBy) { + return homepageDao.getBlog(pageNo, type, PAGESIZE, sortBy); } @Override diff --git a/src/main/java/TechVault/services/homepage/SearchService.java b/src/main/java/TechVault/services/homepage/SearchService.java index 95e3dac..a7b1d93 100644 --- a/src/main/java/TechVault/services/homepage/SearchService.java +++ b/src/main/java/TechVault/services/homepage/SearchService.java @@ -5,7 +5,7 @@ import java.util.List; public interface SearchService { - public List searchByCompanyNames(List companyNames, Integer pageNo); + public List searchByCompanyNames(List companyNames, String type, Integer pageNo); - public List searchByKeywords(List keywords, Integer pageNo); + public List searchByKeywords(List keywords, String type, Integer pageNo); } diff --git a/src/main/java/TechVault/services/homepage/SearchServiceImpl.java b/src/main/java/TechVault/services/homepage/SearchServiceImpl.java index 7e15d3f..9d96161 100644 --- a/src/main/java/TechVault/services/homepage/SearchServiceImpl.java +++ b/src/main/java/TechVault/services/homepage/SearchServiceImpl.java @@ -16,12 +16,12 @@ public class SearchServiceImpl implements SearchService { private HomepageDao homepageDao; @Override - public List searchByCompanyNames(List companyNames, Integer pageNo) { - return homepageDao.getBlogsByCompanies(companyNames, pageNo, PAGE_SIZE, DATE); + public List searchByCompanyNames(List companyNames, String type, Integer pageNo) { + return homepageDao.getBlogsByCompanies(companyNames, type, pageNo, PAGE_SIZE, DATE); } @Override - public List searchByKeywords(List keywords, Integer pageNo) { - return homepageDao.getContentsByKeywords(keywords, pageNo, PAGE_SIZE, DATE); + public List searchByKeywords(List keywords, String type, Integer pageNo) { + return homepageDao.getContentsByKeywords(keywords, type, pageNo, PAGE_SIZE, DATE); } } diff --git a/src/main/java/TechVault/services/homepage/controller/HomepageController.java b/src/main/java/TechVault/services/homepage/controller/HomepageController.java index 08de021..c8d8701 100644 --- a/src/main/java/TechVault/services/homepage/controller/HomepageController.java +++ b/src/main/java/TechVault/services/homepage/controller/HomepageController.java @@ -29,10 +29,11 @@ public class HomepageController { */ @CrossOrigin @RequestMapping(method = RequestMethod.GET, value = "/liked") - public ResponseEntity getTopLiked(@RequestParam(defaultValue = "0") Integer pageNo) { + public ResponseEntity getTopLiked(@RequestParam(defaultValue = "0") Integer pageNo, + @RequestParam(defaultValue = "all") String type) { List blogs = null; try { - blogs = service.getTopLiked(pageNo); + blogs = service.getTopLiked(pageNo, type); } catch (Exception e) { LOGGER.error("Unable to get blogs ", e); return new ResponseEntity<>("ERROR", HttpStatus.INTERNAL_SERVER_ERROR); @@ -46,10 +47,11 @@ public ResponseEntity getTopLiked(@RequestParam(defaultValue = "0") Integer p */ @CrossOrigin @RequestMapping(method = RequestMethod.GET, value = "/discussed") - public ResponseEntity getTopDiscussed(@RequestParam(defaultValue = "0") Integer pageNo) { + public ResponseEntity getTopDiscussed(@RequestParam(defaultValue = "0") Integer pageNo, + @RequestParam(defaultValue = "all") String type) { List blogs = null; try { - blogs = service.getTopDiscussed(pageNo); + blogs = service.getTopDiscussed(pageNo, type); } catch (Exception e) { LOGGER.error("Unable to get blogs ", e); return new ResponseEntity<>("ERROR", HttpStatus.INTERNAL_SERVER_ERROR); @@ -64,10 +66,11 @@ public ResponseEntity getTopDiscussed(@RequestParam(defaultValue = "0") Integ */ @CrossOrigin @RequestMapping(method = RequestMethod.GET, value = "/latest") - public ResponseEntity getLatest(@RequestParam(defaultValue = "0") Integer pageNo) { + public ResponseEntity getLatest(@RequestParam(defaultValue = "0") Integer pageNo, + @RequestParam(defaultValue = "all") String type) { List blogs = null; try { - blogs = service.getLatest(pageNo); + blogs = service.getLatest(pageNo, type); } catch (Exception e) { LOGGER.error("Unable to get blogs ", e); return new ResponseEntity<>("ERROR", HttpStatus.INTERNAL_SERVER_ERROR); @@ -81,10 +84,11 @@ public ResponseEntity getLatest(@RequestParam(defaultValue = "0") Integer pag */ @CrossOrigin @RequestMapping(method = RequestMethod.GET, value = "") - public ResponseEntity getTrending(@RequestParam(defaultValue = "0") Integer pageNo) { + public ResponseEntity getTrending(@RequestParam(defaultValue = "0") Integer pageNo, + @RequestParam(defaultValue = "all") String type) { List blogs = null; try { - blogs = service.getTrending(pageNo); + blogs = service.getTrending(pageNo, type); } catch (Exception e) { LOGGER.error("Unable to get blogs ", e); return new ResponseEntity<>("ERROR", HttpStatus.INTERNAL_SERVER_ERROR); diff --git a/src/main/java/TechVault/services/homepage/controller/SearchController.java b/src/main/java/TechVault/services/homepage/controller/SearchController.java index f8a66ef..376834e 100644 --- a/src/main/java/TechVault/services/homepage/controller/SearchController.java +++ b/src/main/java/TechVault/services/homepage/controller/SearchController.java @@ -29,10 +29,11 @@ public class SearchController { @CrossOrigin @RequestMapping(method = RequestMethod.POST, value = "/company") public ResponseEntity searchByCompanyName(@RequestBody @Valid SearchByCompanyOrKeywordRequest searchByCompanyOrKeywordRequest, - @RequestParam(defaultValue = "0") Integer pageNo) { + @RequestParam(defaultValue = "0") Integer pageNo, + @RequestParam(defaultValue = "all") String type) { List blogs = null; try { - blogs = service.searchByCompanyNames(searchByCompanyOrKeywordRequest.getSearchWords(), pageNo); + blogs = service.searchByCompanyNames(searchByCompanyOrKeywordRequest.getSearchWords(), type, pageNo); } catch (Exception e) { return new ResponseEntity<>("ERROR", HttpStatus.INTERNAL_SERVER_ERROR); } @@ -45,10 +46,11 @@ public ResponseEntity searchByCompanyName(@RequestBody @Valid SearchByCompany @CrossOrigin @RequestMapping(method = RequestMethod.POST, value = "/keyword") public ResponseEntity searchByKeyword(@RequestBody @Valid SearchByCompanyOrKeywordRequest searchByCompanyOrKeywordRequest, - @RequestParam(defaultValue = "0") Integer pageNo) { + @RequestParam(defaultValue = "0") Integer pageNo, + @RequestParam(defaultValue = "all") String type) { List blogs = null; try { - blogs = service.searchByKeywords(searchByCompanyOrKeywordRequest.getSearchWords(), pageNo); + blogs = service.searchByKeywords(searchByCompanyOrKeywordRequest.getSearchWords(), type, pageNo); } catch (Exception e) { return new ResponseEntity<>("ERROR", HttpStatus.INTERNAL_SERVER_ERROR); } diff --git a/src/main/java/TechVault/services/homepage/persistence/HomepageDao.java b/src/main/java/TechVault/services/homepage/persistence/HomepageDao.java index 849f792..d1e9898 100644 --- a/src/main/java/TechVault/services/homepage/persistence/HomepageDao.java +++ b/src/main/java/TechVault/services/homepage/persistence/HomepageDao.java @@ -9,13 +9,13 @@ public interface HomepageDao { - List getBlog(Integer pageNo, Integer pageSize, String sortBy); + List getBlog(Integer pageNo, String type, Integer pageSize, String sortBy); List getBlogsCountByCompany(); List getBlogsCountByKeywords(); - List getBlogsByCompanies(List companyName, Integer pageNo, Integer pageSize, String sortBy); + List getBlogsByCompanies(List companyName, String type, Integer pageNo, Integer pageSize, String sortBy); - List getContentsByKeywords(List keyword, Integer pageNo, Integer pageSize, String sortBy); + List getContentsByKeywords(List keyword, String type, Integer pageNo, Integer pageSize, String sortBy); } \ No newline at end of file diff --git a/src/main/java/TechVault/services/homepage/persistence/HomepageDaoImpl.java b/src/main/java/TechVault/services/homepage/persistence/HomepageDaoImpl.java index 59efb5a..24cca43 100644 --- a/src/main/java/TechVault/services/homepage/persistence/HomepageDaoImpl.java +++ b/src/main/java/TechVault/services/homepage/persistence/HomepageDaoImpl.java @@ -22,24 +22,38 @@ public class HomepageDaoImpl implements HomepageDao { private HomepageRepository repo; @Override - public List getBlog(Integer pageNo, Integer pageSize, String sortBy) { - Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy).descending()); - Page page = repo.findAll(pageable); - + public List getBlog(Integer pageNo, String type, Integer pageSize, String sortBy) { + Pageable pageable = pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy).descending()); + Page page; + if (type.equals("all")) { + page = repo.findAll(pageable); + } else { + page = repo.findByType(type, pageable); + } return page.getContent(); } @Override - public List getBlogsByCompanies(List companyNames, Integer pageNo, Integer pageSize, String sortBy) { + public List getBlogsByCompanies(List companyNames, String type, Integer pageNo, Integer pageSize, String sortBy) { Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy).descending()); - Page page = repo.findByCompanyIn(companyNames, pageable); + Page page = null; + if (type.equals("all")) { + page = repo.findByCompanyIn(companyNames, pageable); + } else { + page = repo.findByTypeAndCompanyIn(type, companyNames, pageable); + } return page.getContent(); } @Override - public List getContentsByKeywords(List keyword, Integer pageNo, Integer pageSize, String sortBy) { + public List getContentsByKeywords(List keyword, String type, Integer pageNo, Integer pageSize, String sortBy) { Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.by(sortBy).descending()); - Page page = repo.findAnyOfTheseValues(keyword, pageable); + Page page = null; + if (type.equals("all")) { + page = repo.findAnyOfTheseValues(keyword, pageable); + } else { + page = repo.findByTypeAndAnyOfTheseValues(keyword, type, pageable); + } return page.getContent(); } diff --git a/src/main/java/TechVault/services/homepage/persistence/HomepageRepository.java b/src/main/java/TechVault/services/homepage/persistence/HomepageRepository.java index fbdda4e..10aaff5 100644 --- a/src/main/java/TechVault/services/homepage/persistence/HomepageRepository.java +++ b/src/main/java/TechVault/services/homepage/persistence/HomepageRepository.java @@ -26,6 +26,13 @@ public interface HomepageRepository extends PagingAndSortingRepository findByCompanyIn(List companyName, Pageable pageable); + Page findByTypeAndCompanyIn(String type, List companyName, Pageable pageable); + + Page findByType(String type, Pageable pageable); + @Query(value = "{ 'keywords' : {$all : [?0] }}") Page findAnyOfTheseValues(List arrayValues, Pageable pageable); + + @Query(value = "{$and: [{ 'keywords' : {$all : [?0] }}, { 'type' : ?1}]}") + Page findByTypeAndAnyOfTheseValues(List arrayValues, String type, Pageable pageable); }