Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 28 additions & 12 deletions src/main/java/com/google/sps/servlets/MealServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -97,8 +98,24 @@ private void getMealList(HttpServletRequest request, HttpServletResponse respons
// Every object Meal adds if it contains at least one keyword in at least one field
// (type, title, description, ingredients).
List<Meal> searchedMeal = new ArrayList<>();
HashMap<Integer, List<Meal>> sortedMeal = new HashMap<>();
for (Meal meal : meals) {
if (isResultOfSearch(meal, params)) {
int count = isResultOfSearch(meal, params);
Comment thread
polinasand marked this conversation as resolved.
Outdated
if (count > 0) {
List<Meal> list = new ArrayList<>();
if (sortedMeal.get(count) != null) {
list = sortedMeal.get(count);
}
list.add(meal);
sortedMeal.put(count, list);
}
}
for (int i = params.size(); i > 0; i --) {
Comment thread
polinasand marked this conversation as resolved.
Outdated
if (sortedMeal.get(i) == null) {
continue;
}
List<Meal> list = sortedMeal.get(i);
Comment thread
polinasand marked this conversation as resolved.
Outdated
for (Meal meal : list) {
searchedMeal.add(meal);
}
}
Expand Down Expand Up @@ -187,24 +204,23 @@ private Meal pickRandomMeal(List<Meal> mealList) {
return (Meal)mealList.get(index);
}

private Boolean isResultOfSearch(Meal meal, List<String> params) {
private int isResultOfSearch(Meal meal, List<String> params) {
Comment thread
polinasand marked this conversation as resolved.
Outdated
int counter = 0;
for (String param : params) {
if (meal.getTitle().contains(param)) {
return true;
}
if (meal.getDescription().contains(param)) {
return true;
if (meal.getTitle().contains(param) ||
meal.getDescription().contains(param) ||
meal.getType().contains(param)) {
counter ++;
Comment thread
polinasand marked this conversation as resolved.
Outdated
break;
Comment thread
polinasand marked this conversation as resolved.
Outdated
}
if (meal.getType().contains(param)) {
return true;
}
for (String ingredient : meal.getIngredients()) {
if (ingredient.contains(param)) {
return true;
counter ++;
break;
}
}
}
return false;
return counter;
}
private String getParameter(HttpServletRequest request, String name, String defaultValue) {
String value = request.getParameter(name);
Expand Down