Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a22da31

Browse files
committed
Applied patch - 7_02_HW6_meals
1 parent 38c429b commit a22da31

10 files changed

Lines changed: 227 additions & 243 deletions

File tree

config/messages/app.properties

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,28 @@ app.title=Calories management
22
app.home=Home
33
app.footer=Internship <a href="https://github.com/JavaOPs/topjava" target=_blank>Spring 5/JPA Enterprise (Topjava)</a> application
44
app.login=Login as
5+
56
user.title=Users
67
user.name=Name
78
user.email=Email
89
user.roles=Roles
910
user.active=Active
1011
user.registered=Registered
12+
1113
meal.title=Meals
12-
common.select=Select
14+
meal.edit=Edit meal
15+
meal.add=Add meal
16+
meal.filter=Filter
17+
meal.startDate=From date
18+
meal.endDate=To date
19+
meal.startTime=From time
20+
meal.endTime=To time
21+
meal.description=Description
22+
meal.dateTime=Date/Time
23+
meal.calories=Calories
24+
25+
common.select=Select
26+
common.delete=Delete
27+
common.update=Update
28+
common.save=Save
29+
common.cancel=Cancel

config/messages/app_ru.properties

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,28 @@ app.title=Подсчет калорий
22
app.home=Главная
33
app.footer=Приложение стажировки <a href="https://github.com/JavaOPs/topjava" target=_blank>Spring 5/JPA Enterprise (Topjava)</a>
44
app.login=Зайти как
5+
56
user.title=Пользователи
67
user.name=Имя
78
user.email=Почта
89
user.roles=Роли
910
user.active=Активный
1011
user.registered=Зарегистрирован
12+
1113
meal.title=Моя еда
12-
common.select=Выбрать
14+
meal.edit=Редактирование еды
15+
meal.add=Добавление еды
16+
meal.filter=Отфильтровать
17+
meal.startDate=От даты
18+
meal.endDate=До даты
19+
meal.startTime=От времени
20+
meal.endTime=До времени
21+
meal.description=Описание
22+
meal.dateTime=Дата/Время
23+
meal.calories=Калории
24+
25+
common.select=Выбрать
26+
common.delete=Удалить
27+
common.update=Обновить
28+
common.save=Сохранить
29+
common.cancel=Отменить

src/main/java/ru/javawebinar/topjava/web/MealServlet.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

src/main/java/ru/javawebinar/topjava/web/RootController.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
import org.springframework.ui.Model;
66
import org.springframework.web.bind.annotation.GetMapping;
77
import org.springframework.web.bind.annotation.PostMapping;
8+
import ru.javawebinar.topjava.service.MealService;
89
import ru.javawebinar.topjava.service.UserService;
10+
import ru.javawebinar.topjava.util.MealsUtil;
911

1012
import javax.servlet.http.HttpServletRequest;
1113

1214
@Controller
1315
public class RootController {
1416
@Autowired
15-
private UserService service;
17+
private UserService userService;
18+
19+
@Autowired
20+
private MealService mealService;
1621

1722
@GetMapping("/")
1823
public String root() {
@@ -21,7 +26,7 @@ public String root() {
2126

2227
@GetMapping("/users")
2328
public String getUsers(Model model) {
24-
model.addAttribute("users", service.getAll());
29+
model.addAttribute("users", userService.getAll());
2530
return "users";
2631
}
2732

@@ -31,4 +36,11 @@ public String setUser(HttpServletRequest request) {
3136
SecurityUtil.setAuthUserId(userId);
3237
return "redirect:meals";
3338
}
39+
40+
@GetMapping("/meals")
41+
public String getMeals(Model model) {
42+
model.addAttribute("meals",
43+
MealsUtil.getTos(mealService.getAll(SecurityUtil.authUserId()), SecurityUtil.authUserCaloriesPerDay()));
44+
return "meals";
45+
}
3446
}

src/main/java/ru/javawebinar/topjava/web/UserServlet.java

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package ru.javawebinar.topjava.web.meal;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.lang.Nullable;
7+
import ru.javawebinar.topjava.model.Meal;
8+
import ru.javawebinar.topjava.service.MealService;
9+
import ru.javawebinar.topjava.to.MealTo;
10+
import ru.javawebinar.topjava.util.MealsUtil;
11+
import ru.javawebinar.topjava.web.SecurityUtil;
12+
13+
import java.time.LocalDate;
14+
import java.time.LocalTime;
15+
import java.util.List;
16+
17+
import static ru.javawebinar.topjava.util.ValidationUtil.assureIdConsistent;
18+
import static ru.javawebinar.topjava.util.ValidationUtil.checkNew;
19+
20+
public abstract class AbstractMealController {
21+
private final Logger log = LoggerFactory.getLogger(getClass());
22+
23+
@Autowired
24+
private MealService service;
25+
26+
public Meal get(int id) {
27+
int userId = SecurityUtil.authUserId();
28+
log.info("get meal {} for user {}", id, userId);
29+
return service.get(id, userId);
30+
}
31+
32+
public void delete(int id) {
33+
int userId = SecurityUtil.authUserId();
34+
log.info("delete meal {} for user {}", id, userId);
35+
service.delete(id, userId);
36+
}
37+
38+
public List<MealTo> getAll() {
39+
int userId = SecurityUtil.authUserId();
40+
log.info("getAll for user {}", userId);
41+
return MealsUtil.getTos(service.getAll(userId), SecurityUtil.authUserCaloriesPerDay());
42+
}
43+
44+
public Meal create(Meal meal) {
45+
int userId = SecurityUtil.authUserId();
46+
checkNew(meal);
47+
log.info("create {} for user {}", meal, userId);
48+
return service.create(meal, userId);
49+
}
50+
51+
public void update(Meal meal, int id) {
52+
int userId = SecurityUtil.authUserId();
53+
assureIdConsistent(meal, id);
54+
log.info("update {} for user {}", meal, userId);
55+
service.update(meal, userId);
56+
}
57+
58+
/**
59+
* <ol>Filter separately
60+
* <li>by date</li>
61+
* <li>by time for every date</li>
62+
* </ol>
63+
*/
64+
public List<MealTo> getBetween(@Nullable LocalDate startDate, @Nullable LocalTime startTime,
65+
@Nullable LocalDate endDate, @Nullable LocalTime endTime) {
66+
int userId = SecurityUtil.authUserId();
67+
log.info("getBetween dates({} - {}) time({} - {}) for user {}", startDate, endDate, startTime, endTime, userId);
68+
69+
List<Meal> mealsDateFiltered = service.getBetweenDates(startDate, endDate, userId);
70+
return MealsUtil.getFilteredTos(mealsDateFiltered, SecurityUtil.authUserCaloriesPerDay(), startTime, endTime);
71+
}
72+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package ru.javawebinar.topjava.web.meal;
2+
3+
import org.springframework.stereotype.Controller;
4+
import org.springframework.ui.Model;
5+
import org.springframework.web.bind.annotation.GetMapping;
6+
import org.springframework.web.bind.annotation.PostMapping;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import ru.javawebinar.topjava.model.Meal;
9+
10+
import javax.servlet.http.HttpServletRequest;
11+
import java.time.LocalDate;
12+
import java.time.LocalDateTime;
13+
import java.time.LocalTime;
14+
import java.time.temporal.ChronoUnit;
15+
import java.util.Objects;
16+
17+
import static ru.javawebinar.topjava.util.DateTimeUtil.parseLocalDate;
18+
import static ru.javawebinar.topjava.util.DateTimeUtil.parseLocalTime;
19+
20+
@Controller
21+
@RequestMapping(value = "/meals")
22+
public class JspMealController extends AbstractMealController {
23+
24+
@GetMapping("/delete")
25+
public String delete(HttpServletRequest request) {
26+
super.delete(getId(request));
27+
return "redirect:meals";
28+
}
29+
30+
@GetMapping("/update")
31+
public String update(HttpServletRequest request, Model model) {
32+
model.addAttribute("meal", super.get(getId(request)));
33+
return "mealForm";
34+
}
35+
36+
@GetMapping("/create")
37+
public String create(Model model) {
38+
model.addAttribute("meal", new Meal(LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS), "", 1000));
39+
return "mealForm";
40+
}
41+
42+
@PostMapping
43+
public String updateOrCreate(HttpServletRequest request) {
44+
Meal meal = new Meal(LocalDateTime.parse(request.getParameter("dateTime")),
45+
request.getParameter("description"),
46+
Integer.valueOf(request.getParameter("calories")));
47+
48+
if (request.getParameter("id").isEmpty()) {
49+
super.create(meal);
50+
} else {
51+
super.update(meal, getId(request));
52+
}
53+
return "redirect:meals";
54+
}
55+
56+
@GetMapping("/filter")
57+
public String getBetween(HttpServletRequest request, Model model) {
58+
LocalDate startDate = parseLocalDate(request.getParameter("startDate"));
59+
LocalDate endDate = parseLocalDate(request.getParameter("endDate"));
60+
LocalTime startTime = parseLocalTime(request.getParameter("startTime"));
61+
LocalTime endTime = parseLocalTime(request.getParameter("endTime"));
62+
model.addAttribute("meals", super.getBetween(startDate, startTime, endDate, endTime));
63+
return "meals";
64+
}
65+
66+
private int getId(HttpServletRequest request) {
67+
String paramId = Objects.requireNonNull(request.getParameter("id"));
68+
return Integer.valueOf(paramId);
69+
}
70+
}

0 commit comments

Comments
 (0)