Changeset 188ee53 for trip-planner/src/main
- Timestamp:
- 10/19/21 16:40:43 (3 years ago)
- Branches:
- master
- Children:
- 6a80231
- Parents:
- eed0bf8
- Location:
- trip-planner/src/main/java/finki/diplomska/tripplanner
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trip-planner/src/main/java/finki/diplomska/tripplanner/repository/jpa/JpaLocationRepository.java
reed0bf8 r188ee53 46 46 47 47 @Query(value = "SELECT * FROM locations AS l " + 48 "LEFT JOIN recommended_companion AS rc ON l.id_location = rc.id_location " + 49 "LEFT JOIN companions AS com ON rc.id_companion = com.id_companion " + 50 "LEFT JOIN locations_belong lb ON l.id_location = lb.id_location " + 51 "LEFT JOIN categories AS cate ON lb.id_category = cate.id_category " + 52 "LEFT JOIN regions AS r" + 53 " ON l.id_region = r.id_region" + 54 " LEFT JOIN cities AS cit" + 55 " ON r.id_region = cit.id_region AND cit.id_city = l.id_city " + 56 "WHERE cit.id_city = :locationId and com.id_companion = :companionId and cate.id_category in (:categories) " + 57 "GROUP BY l.id_location " + 58 "ORDER BY CASE l.priority WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END", nativeQuery = true) 59 List<Location> findLocationsFromForm(@Param("locationId") Long locationId, @Param("companionId") Long companionId, @Param("categories") List<Long> categories); 48 "LEFT JOIN recommended_companion AS rc " + 49 "ON l.id_location = rc.id_location " + 50 "LEFT JOIN companions AS companion " + 51 "ON rc.id_companion = companion.id_companion " + 52 "LEFT JOIN locations_belong lb " + 53 "ON l.id_location = lb.id_location " + 54 "LEFT JOIN categories AS category " + 55 "ON lb.id_category = category.id_category " + 56 "LEFT JOIN cities AS city " + 57 "ON city.id_city = l.id_city " + 58 "WHERE city.id_city = :cityId and companion.id_companion = :companionId and category.id_category IN (:categoryIds) " + 59 "GROUP BY l.id_location ORDER BY CASE l.priority WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END", nativeQuery = true) 60 List<Location> findLocationsFromCityForm(@Param("cityId") Long cityId, @Param("companionId") Long companionId, @Param("categoryIds") List<Long> categoryIds); 61 62 @Query(value="SELECT * FROM locations AS location " + 63 "LEFT JOIN recommended_companion AS rc " + 64 "ON location.id_location = rc.id_location " + 65 "LEFT JOIN companions AS companion " + 66 "ON rc.id_companion = companion.id_companion " + 67 "LEFT JOIN locations_belong lb " + 68 "ON location.id_location = lb.id_location " + 69 "LEFT JOIN categories AS category " + 70 "ON lb.id_category = category.id_category " + 71 "LEFT JOIN regions AS region " + 72 "ON location.id_region = region.id_region " + 73 "LEFT JOIN cities AS city " + 74 "ON region.id_region = city.id_region " + 75 "AND city.id_city = location.id_city " + 76 "WHERE region.id_region = :regionId AND companion.id_companion = :companionId AND category.id_category IN (:categoryIds) " + 77 "GROUP BY location.id_location ORDER BY CASE location.priority WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END", nativeQuery = true) 78 List<Location> findLocationsFromRegionForm(@Param("regionId") Long regionId, @Param("companionId") Long companionId, @Param("categoryIds") List<Long> categoryIds); 60 79 } -
trip-planner/src/main/java/finki/diplomska/tripplanner/service/LocationService.java
reed0bf8 r188ee53 10 10 public interface LocationService { 11 11 List<Location> findLocationsFromCity(String locName, String companion, List<String> categories); 12 List<Location> findLocationsFromCountry (String locName, String companion,String region, List<String> categories ); 12 13 List<Location> findAll(); 13 14 Location getById(Long id); 14 List<Location> findLocationsFromCountry (String locName, String companion,String region, List<String> categories );15 15 List<Location> scheduleLocations(String locName, String companion,String region, List<String> categories, int numberOfDays); 16 16 Optional<Location> findById(Long id); 17 18 List<Location> findLocations (Long locationId, Long companionId, Long lengthOfStay, String categoryIds);17 List<Location> findLocationsFromCityForm(Long cityId, Long companionId, Long lengthOfStay, String categoryIds); 18 List<Location> findLocationsFromRegionForm(Long regionId, Long companionId, Long lengthOfStay, String categoryIds); 19 19 } -
trip-planner/src/main/java/finki/diplomska/tripplanner/service/impl/LocationServiceImpl.java
reed0bf8 r188ee53 50 50 51 51 @Override 52 public List<Location> findLocations (Long locationId, Long companionId, Long lengthOfStay, String categoryIds) {52 public List<Location> findLocationsFromCityForm(Long cityId, Long companionId, Long lengthOfStay, String categoryIds) { 53 53 List<Long> categories = null; 54 54 if(categoryIds != null && !categoryIds.isEmpty()){ … … 56 56 categories = ids.stream().map(Long::valueOf).collect(Collectors.toList()); 57 57 } 58 List<Location> foundLocations = locationRepository.findLocationsFromForm(locationId, companionId, categories); 59 return foundLocations; 58 Long maxMinutesPerDay = lengthOfStay *6 * 60; 59 int minutesPerDay = 0; 60 List<Location> citylocations = this.locationRepository.findLocationsFromCityForm(cityId, companionId, categories); 61 List<Location> newList = new ArrayList<>(); 62 int listSize = citylocations.size(); 63 64 while(minutesPerDay < maxMinutesPerDay ){ 65 for(Location l: citylocations) { 66 if (minutesPerDay < maxMinutesPerDay && l.getDuration() + minutesPerDay <= maxMinutesPerDay && listSize != 0) { 67 newList.add(l); 68 listSize --; 69 } 70 minutesPerDay += l.getDuration(); 71 if (minutesPerDay > maxMinutesPerDay) { 72 break; 73 } 74 } 75 } 76 77 List<Location> foundLocations = locationRepository.findLocationsFromCityForm(cityId, companionId, categories); 78 return newList; 60 79 } 80 81 @Override 82 public List<Location> findLocationsFromRegionForm(Long regionId, Long companionId, Long lengthOfStay, String categoryIds) { 83 List<Long> categories = null; 84 if(categoryIds != null && !categoryIds.isEmpty()){ 85 List<String> ids = Arrays.asList(categoryIds.split(",")); 86 categories = ids.stream().map(Long::valueOf).collect(Collectors.toList()); 87 } 88 Long maxMinutesPerDay = lengthOfStay *6 * 60; 89 int minutesPerDay = 0; 90 List<Location> countryLocations = this.locationRepository.findLocationsFromRegionForm(regionId, companionId, categories); 91 List<Location> newList = new ArrayList<>(); 92 int listCountrySize = countryLocations.size(); 93 94 while(minutesPerDay < maxMinutesPerDay){ 95 for(Location l: countryLocations) { 96 if (minutesPerDay < maxMinutesPerDay && l.getDuration() + minutesPerDay <= maxMinutesPerDay && listCountrySize != 0) { 97 newList.add(l); 98 listCountrySize --; 99 } 100 minutesPerDay += l.getDuration(); 101 if (minutesPerDay > maxMinutesPerDay) { 102 break; 103 } 104 } 105 106 } 107 return newList; 108 } 109 61 110 62 111 @Override -
trip-planner/src/main/java/finki/diplomska/tripplanner/web/rest/LocationRestController.java
reed0bf8 r188ee53 34 34 } 35 35 36 @GetMapping(value = "/ trip/locations")37 public List<Location> allLocationsAfterSubmittedForm(@RequestParam(required = false) Long locationId,36 @GetMapping(value = "/city/locations") 37 public List<Location> getAllLocationsFromCity(@RequestParam(required = false) Long cityId, 38 38 @RequestParam(required = false) Long companionId, 39 39 @RequestParam(required = false) Long lengthOfStay, 40 40 @RequestParam(required = false) String categoryIds) { 41 return this.locationService.findLocations(locationId, companionId, lengthOfStay, categoryIds); 42 /* List<Location> generatedLocations = this.locationService.scheduleLocations(locName, companion, region, categories, numberOfDays); 43 if(locName.equals("Macedonia")){ 44 return generatedLocations; 45 }else{ 46 return generatedLocations; 47 }*/ 41 return this.locationService.findLocationsFromCityForm(cityId, companionId, lengthOfStay, categoryIds); 42 43 } 44 45 @GetMapping(value = "/region/locations") 46 public List<Location> getAllLocationsFromRegion(@RequestParam(required = false) Long regionId, 47 @RequestParam(required = false) Long companionId, 48 @RequestParam(required = false) Long lengthOfStay, 49 @RequestParam(required = false) String categoryIds){ 50 return this.locationService.findLocationsFromRegionForm(regionId, companionId,lengthOfStay, categoryIds); 48 51 } 49 52 }
Note:
See TracChangeset
for help on using the changeset viewer.