From 76dc2d26b409c19adff70942dabf8b21d8b27c67 Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Wed, 5 Dec 2018 19:37:48 +0300 Subject: [PATCH 01/19] upd - mealServlet --- .../javawebinar/topjava/web/MealServlet.java | 26 +++++++++++++++++++ .../javawebinar/topjava/web/UserServlet.java | 2 +- src/main/webapp/WEB-INF/web.xml | 11 ++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/javawebinar/topjava/web/MealServlet.java diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java new file mode 100644 index 0000000..1a48714 --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -0,0 +1,26 @@ +package ru.javawebinar.topjava.web; + +import org.slf4j.Logger; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +import static org.slf4j.LoggerFactory.getLogger; + +/** + * User: gkislin + * Date: 19.08.2014 + */ +public class MealServlet extends HttpServlet { + private static final Logger LOG = getLogger(MealServlet.class); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { +// LOG.debug("redirect to userList"); + + request.getRequestDispatcher("userList.jsp").forward(request, response); +// response.sendRedirect("userList.jsp"); + } +} diff --git a/src/main/java/ru/javawebinar/topjava/web/UserServlet.java b/src/main/java/ru/javawebinar/topjava/web/UserServlet.java index d4024e4..90a2555 100644 --- a/src/main/java/ru/javawebinar/topjava/web/UserServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/UserServlet.java @@ -20,7 +20,7 @@ public class UserServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // LOG.debug("redirect to userList"); - request.getRequestDispatcher("topjava/userList.jsp").forward(request, response); + request.getRequestDispatcher("userList.jsp").forward(request, response); // response.sendRedirect("userList.jsp"); } } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index f346a5e..0d3a50d 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -15,4 +15,15 @@ /users + + mealServlet + ru.javawebinar.topjava.web.MealServlet + 0 + + + mealServlet + /meals + + + From 73dac4d0f15dc3588686ee0b30f46340a9e143b9 Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Tue, 11 Dec 2018 05:46:47 +0300 Subject: [PATCH 02/19] repatch --- src/main/webapp/index.html | 3 +++ src/main/webapp/meals.jsp | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/main/webapp/meals.jsp diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index c65c875..9a62184 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -10,5 +10,8 @@

Проект "User List + diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp new file mode 100644 index 0000000..77c893f --- /dev/null +++ b/src/main/webapp/meals.jsp @@ -0,0 +1,17 @@ +<%-- + Created by IntelliJ IDEA. + User: HOME + Date: 11.12.2018 + Time: 5:36 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Meals + + +

Home

+

Meal list

+ + From 326482c63618e2985b9e7b93dfc967584218b632 Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Tue, 11 Dec 2018 05:54:16 +0300 Subject: [PATCH 03/19] create mealList.jsp --- src/main/webapp/index.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 9a62184..892cf56 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -9,8 +9,6 @@

Проект "User List - - From 4e0fc02e02af49be36406b205ef1e1a47f496996 Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Sat, 15 Dec 2018 08:57:20 +0300 Subject: [PATCH 04/19] upd --- pom.xml | 6 +++++ .../java/ru/javawebinar/topjava/web/Avg.java | 24 +++++++++++++++++ .../javawebinar/topjava/web/MealServlet.java | 3 +++ .../ru/javawebinar/topjava/web/AvgTest.java | 27 +++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 src/main/java/ru/javawebinar/topjava/web/Avg.java create mode 100644 src/test/java/ru/javawebinar/topjava/web/AvgTest.java diff --git a/pom.xml b/pom.xml index 204e2d0..4a0b7db 100644 --- a/pom.xml +++ b/pom.xml @@ -67,6 +67,12 @@ 3.1.0 provided + + junit + junit + 4.12 + test + diff --git a/src/main/java/ru/javawebinar/topjava/web/Avg.java b/src/main/java/ru/javawebinar/topjava/web/Avg.java new file mode 100644 index 0000000..f547631 --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/web/Avg.java @@ -0,0 +1,24 @@ +package ru.javawebinar.topjava.web; + +import java.util.Arrays; +import java.util.List; + +public class Avg { + + public static void main(String[] args) { + List listInt = Arrays.asList(1, 2, 3, 4, 5, 0); + System.out.println(midInt(listInt)); + } + + static double midInt(List listInt) { + long sum = 0; + if (listInt.size() < 1) { + throw new UnsupportedOperationException("List size must be bigger than 0 elements"); + } + for (Integer integer : listInt) { + sum += integer; + } + double result = ((double) sum) / listInt.size(); + return result; + } +} diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index 1a48714..d67cdfe 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -15,6 +15,7 @@ * Date: 19.08.2014 */ public class MealServlet extends HttpServlet { + private static final Logger LOG = getLogger(MealServlet.class); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -22,5 +23,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t request.getRequestDispatcher("userList.jsp").forward(request, response); // response.sendRedirect("userList.jsp"); + + System.out.println(); } } diff --git a/src/test/java/ru/javawebinar/topjava/web/AvgTest.java b/src/test/java/ru/javawebinar/topjava/web/AvgTest.java new file mode 100644 index 0000000..0c267a6 --- /dev/null +++ b/src/test/java/ru/javawebinar/topjava/web/AvgTest.java @@ -0,0 +1,27 @@ +package ru.javawebinar.topjava.web; + +import org.junit.Assert; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; +import static ru.javawebinar.topjava.web.Avg.midInt; + +public class AvgTest { + + + @org.junit.Test + public void midIntTest1() { + List listInt = Arrays.asList(1, 2, 3, 4, 5, 0); + Double expected = BigDecimal.valueOf(((double) 15) / 6) + .setScale(3, RoundingMode.HALF_UP) + .doubleValue(); + Double actual = BigDecimal.valueOf(midInt(listInt)) + .setScale(3, RoundingMode.HALF_UP) + .doubleValue(); + assertEquals(expected, actual); + } +} \ No newline at end of file From f310c0eedcd3821332642b42b808d4a3bfea45f3 Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Sun, 16 Dec 2018 15:55:55 +0300 Subject: [PATCH 05/19] mealList.jsp viev of mealList done --- pom.xml | 27 +++++++++++-- .../javawebinar/topjava/web/MealServlet.java | 19 ++++++++- src/main/webapp/meals.jsp | 40 ++++++++++++++++++- 3 files changed, 79 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 4a0b7db..1c487b2 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,13 @@ + + junit + junit + 4.12 + test + + javax.servlet javax.servlet-api @@ -68,11 +75,23 @@ provided - junit - junit - 4.12 - test + javax.servlet.jsp + javax.servlet.jsp-api + 2.3.0 + provided + + + javax.el + javax.el-api + 3.0.0 + provided + + javax.servlet + jstl + 1.2 + + diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index d67cdfe..f52ba33 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -1,12 +1,17 @@ package ru.javawebinar.topjava.web; import org.slf4j.Logger; +import ru.javawebinar.topjava.model.Meal; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.time.LocalDateTime; +import java.time.Month; +import java.util.Arrays; +import java.util.List; import static org.slf4j.LoggerFactory.getLogger; @@ -20,8 +25,18 @@ public class MealServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // LOG.debug("redirect to userList"); - - request.getRequestDispatcher("userList.jsp").forward(request, response); + List meals = Arrays.asList( + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500), + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000), + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510) + ); + + request.setAttribute("mealList", meals); + + request.getRequestDispatcher("meals.jsp").forward(request, response); // response.sendRedirect("userList.jsp"); System.out.println(); diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index 77c893f..5615074 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -1,3 +1,4 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- Created by IntelliJ IDEA. User: HOME @@ -5,13 +6,50 @@ Time: 5:36 To change this template use File | Settings | File Templates. --%> + + <%@ page contentType="text/html;charset=UTF-8" language="java" %> + + Meals + + + + +

Home

Meal list

+ + + + + + + + + + + + + + + + + +
ОписаниеКол-во калорий
${meal.description}${meal.calories}
+ + - + \ No newline at end of file From eaa5ae81c353bf18951c4f07d4c52b83787b448e Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Sun, 16 Dec 2018 17:09:15 +0300 Subject: [PATCH 06/19] upd --- .../topjava/model/MealWithExceed.java | 26 +++++++++++++++++++ .../javawebinar/topjava/web/MealServlet.java | 17 ++++++------ src/main/webapp/meals.jsp | 12 ++++----- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java b/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java index d14128b..6747615 100644 --- a/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java +++ b/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java @@ -1,6 +1,8 @@ package ru.javawebinar.topjava.model; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; /** * GKislin @@ -22,6 +24,30 @@ public MealWithExceed(LocalDateTime dateTime, String description, int calories, this.exceed = exceed; } + public LocalDateTime getDateTime() { + return dateTime; + } + + public String getDescription() { + return description; + } + + public int getCalories() { + return calories; + } + + public LocalDate getDate() { + return dateTime.toLocalDate(); + } + + public LocalTime getTime() { + return dateTime.toLocalTime(); + } + + public boolean getExceed() { + return exceed; + } + @Override public String toString() { return "UserMealWithExceed{" + diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index f52ba33..16990f0 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -2,6 +2,7 @@ import org.slf4j.Logger; import ru.javawebinar.topjava.model.Meal; +import ru.javawebinar.topjava.model.MealWithExceed; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -25,16 +26,16 @@ public class MealServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // LOG.debug("redirect to userList"); - List meals = Arrays.asList( - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500), - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000), - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510) + List meals = Arrays.asList( + new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500, false), + new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000, false), + new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500, false), + new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000, true), + new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500, true), + new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510, true) ); - request.setAttribute("mealList", meals); + request.setAttribute("meals", meals); request.getRequestDispatcher("meals.jsp").forward(request, response); // response.sendRedirect("userList.jsp"); diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index 5615074..7f12b5f 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -1,4 +1,5 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + <%-- Created by IntelliJ IDEA. User: HOME @@ -12,11 +13,9 @@ - Meals - +

Home

Meal list

@@ -35,21 +33,60 @@ + id Дата Описание Кол-во калорий + Удалить: + Обновить: + ${meal.id} ${meal.date} ${meal.description} ${meal.calories} + ">Update + ">Delete +
+ADD/Edit meal +
+
+ User ID : " />
+ Прием пищи: "/>
+ Каллории : "/>
+ Дата : "/>
+ +
+ + - \ No newline at end of file + + + + + + + + + + + + + + From 003b6ab5727f3bba6721e58345e91c52f3237a40 Mon Sep 17 00:00:00 2001 From: nmice Date: Mon, 31 Dec 2018 16:25:45 +0300 Subject: [PATCH 11/19] upd --- src/main/java/ru/javawebinar/topjava/util/MealsUtil.java | 4 ++-- src/main/java/ru/javawebinar/topjava/web/MealServlet.java | 8 ++++---- src/main/webapp/meals.jsp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java index c487809..e29e8ac 100644 --- a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java +++ b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java @@ -43,7 +43,7 @@ public static void initMealsBase() { }*/ - public static List getFilteredWithExceededByStream(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { +/* public static List getFilteredWithExceededByStream(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { Map caloriesSumByDate = meals.stream() .collect( Collectors.groupingBy(Meal::getDate, Collectors.summingInt(Meal::getCalories)) @@ -54,7 +54,7 @@ public static List getFilteredWithExceededByStream(List me .filter(meal -> TimeUtil.isBetween(meal.getTime(), startTime, endTime)) .map(meal -> createWithExceed(meal, caloriesSumByDate.get(meal.getDate()) > caloriesPerDay)) .collect(Collectors.toList()); - } + }*/ public static List getFilteredWithExceeded(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index c44b50a..6ecf1fb 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -79,15 +79,15 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t String action = request.getParameter("action"); if (action.equalsIgnoreCase("delete")) { - int userId = Integer.parseInt(request.getParameter("userid")); - MealsUtil.deleteMeal(userId); + int id = Integer.parseInt(request.getParameter("id")); + MealsUtil.deleteMeal(id); List mealsWithExceeded = MealsUtil.getFilteredWithExceeded(MealsUtil.getAllMeals(), LocalTime.of(0, 0), LocalTime.of(23, 59), 2000); request.setAttribute("meals", mealsWithExceeded); } else if (action.equalsIgnoreCase("edit")) { - int userId = Integer.parseInt(request.getParameter("userid")); + int id = Integer.parseInt(request.getParameter("id")); - Meal meal = MealsUtil.getMealById(userId); + Meal meal = MealsUtil.getMealById(id); request.setAttribute("meal", meal); } else if (action.equalsIgnoreCase("listMeals")) { diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index c0d58b5..055181d 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -48,8 +48,8 @@ ${meal.date} ${meal.description} ${meal.calories} - ">Update - ">Delete + ">Update + ">Delete From bfb15ed2e6f11f61f1edd1f3c69aa192f743a4b1 Mon Sep 17 00:00:00 2001 From: nmice Date: Sat, 19 Jan 2019 21:06:20 +0300 Subject: [PATCH 12/19] create class MealDaoImpl --- .../ru/javawebinar/topjava/Dao/MealDao.java | 1 + .../javawebinar/topjava/Dao/MealDaoImpl.java | 36 ++++++++++++++++ .../topjava/controller/Bootstrap.java | 24 +++++++++++ .../javawebinar/topjava/util/MealsUtil.java | 41 ------------------- 4 files changed, 61 insertions(+), 41 deletions(-) create mode 100644 src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java create mode 100644 src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java index c8b344f..53bd74c 100644 --- a/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java @@ -1,5 +1,6 @@ package ru.javawebinar.topjava.Dao; +import java.sql.PreparedStatement; import java.util.List; import java.util.Optional; diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java new file mode 100644 index 0000000..3d51c13 --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java @@ -0,0 +1,36 @@ +package ru.javawebinar.topjava.Dao; + +import ru.javawebinar.topjava.model.Meal; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; +import java.util.Optional; + +public class MealDaoImpl implements MealDao { + + @Override + public Optional get(long id) { + return Optional.empty(); + } + + @Override + public List getAll() { + return null; + } + + @Override + public void save(Meal meal) { + + } + + @Override + public void update(Meal meal, String[] params) { + + } + + @Override + public void delete(Meal meal) { + } + +} \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java b/src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java new file mode 100644 index 0000000..9e2970f --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java @@ -0,0 +1,24 @@ +package ru.javawebinar.topjava.controller; + +import ru.javawebinar.topjava.model.Meal; + +import java.time.LocalDateTime; +import java.time.Month; +import java.util.Arrays; +import java.util.List; + +public class Bootstrap { + + private static final List MEALSDEMO = Arrays.asList(new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500, 1), + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000, 2), + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500, 3), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000, 4), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500, 5), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510, 6)); + + public void initMealsBase() { + for (Meal meal : MEALSDEMO) { + MEALS_BASE.put(meal.getId(), meal); + } + } +} diff --git a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java index e29e8ac..de23d8e 100644 --- a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java +++ b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java @@ -4,11 +4,8 @@ import ru.javawebinar.topjava.model.MealWithExceed; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.Month; import java.util.*; -import java.util.stream.Collectors; /** * GKislin @@ -18,44 +15,6 @@ public class MealsUtil { private static final Map MEALS_BASE = new HashMap<>(); - private static List meals = new ArrayList<>(); - - static { - initMealsBase(); - } - - public static void initMealsBase() { - meals = Arrays.asList( - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500, 1), - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000, 2), - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500, 3), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000, 4), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500, 5), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510, 6) - ); - for (Meal meal : meals) { - MEALS_BASE.put(meal.getId(), meal); - } - } - - -/* public static void main(String[] args) { - - }*/ - -/* public static List getFilteredWithExceededByStream(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { - Map caloriesSumByDate = meals.stream() - .collect( - Collectors.groupingBy(Meal::getDate, Collectors.summingInt(Meal::getCalories)) -// Collectors.toMap(Meal::getDate, Meal::getCalories, Integer::sum) - ); - - return meals.stream() - .filter(meal -> TimeUtil.isBetween(meal.getTime(), startTime, endTime)) - .map(meal -> createWithExceed(meal, caloriesSumByDate.get(meal.getDate()) > caloriesPerDay)) - .collect(Collectors.toList()); - }*/ - public static List getFilteredWithExceeded(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { final Map caloriesSumByDate = new HashMap<>(); From dfd88814c5d939de37bf63dcbef66a4f333e88de Mon Sep 17 00:00:00 2001 From: nmice Date: Mon, 28 Jan 2019 00:58:26 +0300 Subject: [PATCH 13/19] upd --- .../ru/javawebinar/topjava/Dao/MealDao.java | 12 +- .../javawebinar/topjava/Dao/MealDaoImpl.java | 26 ++-- .../java/ru/javawebinar/topjava/Main.java | 11 +- .../topjava/controller/Bootstrap.java | 24 ---- .../ru/javawebinar/topjava/model/Meal.java | 45 ++++-- .../topjava/model/MealWithExceed.java | 34 ++--- .../javawebinar/topjava/util/MealsUtil.java | 62 ++++---- .../ru/javawebinar/topjava/util/TimeUtil.java | 1 + .../javawebinar/topjava/web/MealServlet.java | 96 +++++-------- .../javawebinar/topjava/web/UserServlet.java | 9 +- src/main/resources/logback.xml | 2 +- src/main/webapp/WEB-INF/web.xml | 5 +- src/main/webapp/form.jsp | 84 +++++++++++ src/main/webapp/meals.jsp | 136 ++++++++---------- src/main/webapp/userList.jsp | 6 +- 15 files changed, 304 insertions(+), 249 deletions(-) delete mode 100644 src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java create mode 100644 src/main/webapp/form.jsp diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java index 53bd74c..2d4760f 100644 --- a/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java @@ -1,19 +1,17 @@ package ru.javawebinar.topjava.Dao; -import java.sql.PreparedStatement; import java.util.List; -import java.util.Optional; public interface MealDao { - Optional get(long id); + void add(T t); - List getAll(); + T getById(int id); - void save(T t); + List getAll(); - void update(T t, String[] params); + void update(T t); - void delete(T t); + void delete(int id); } diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java index 3d51c13..7d599bf 100644 --- a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java @@ -1,36 +1,36 @@ package ru.javawebinar.topjava.Dao; import ru.javawebinar.topjava.model.Meal; +import ru.javawebinar.topjava.util.MealsUtil; -import java.sql.PreparedStatement; -import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; -import java.util.Optional; public class MealDaoImpl implements MealDao { + @Override - public Optional get(long id) { - return Optional.empty(); + public void add(Meal meal) { + MealsUtil.mealsMap.put(getAll().size() + 1, meal); } @Override - public List getAll() { - return null; + public Meal getById(int id) { + return MealsUtil.mealsMap.get(id); } @Override - public void save(Meal meal) { - + public List getAll() { + return new ArrayList<>(MealsUtil.mealsMap.values()); } @Override - public void update(Meal meal, String[] params) { - + public void update(Meal meal) { + MealsUtil.mealsMap.put(meal.getId(), meal); } @Override - public void delete(Meal meal) { + public void delete(int id) { + MealsUtil.mealsMap.remove(id); } - } \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/Main.java b/src/main/java/ru/javawebinar/topjava/Main.java index b23a2f0..542396f 100644 --- a/src/main/java/ru/javawebinar/topjava/Main.java +++ b/src/main/java/ru/javawebinar/topjava/Main.java @@ -1,5 +1,12 @@ package ru.javawebinar.topjava; +import ru.javawebinar.topjava.model.Meal; + +import java.time.LocalDateTime; +import java.time.Month; +import java.util.Arrays; +import java.util.List; + /** * User: gkislin * Date: 05.08.2015 @@ -7,8 +14,10 @@ * @link http://caloriesmng.herokuapp.com/ * @link https://github.com/JavaOPs/topjava */ + public class Main { + public static void main(String[] args) { System.out.format("Hello Topjava Enterprise!"); } -} +} \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java b/src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java deleted file mode 100644 index 9e2970f..0000000 --- a/src/main/java/ru/javawebinar/topjava/controller/Bootstrap.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.javawebinar.topjava.controller; - -import ru.javawebinar.topjava.model.Meal; - -import java.time.LocalDateTime; -import java.time.Month; -import java.util.Arrays; -import java.util.List; - -public class Bootstrap { - - private static final List MEALSDEMO = Arrays.asList(new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500, 1), - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000, 2), - new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500, 3), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000, 4), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500, 5), - new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510, 6)); - - public void initMealsBase() { - for (Meal meal : MEALSDEMO) { - MEALS_BASE.put(meal.getId(), meal); - } - } -} diff --git a/src/main/java/ru/javawebinar/topjava/model/Meal.java b/src/main/java/ru/javawebinar/topjava/model/Meal.java index 146d42d..c58de27 100644 --- a/src/main/java/ru/javawebinar/topjava/model/Meal.java +++ b/src/main/java/ru/javawebinar/topjava/model/Meal.java @@ -3,25 +3,38 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; /** * GKislin * 11.01.2015. */ public class Meal { - private final LocalDateTime dateTime; - private final String description; + public final static AtomicInteger ID = new AtomicInteger(-1); - private final int calories; + private int id; - private final int id; + private LocalDateTime dateTime; - public Meal(LocalDateTime dateTime, String description, int calories, int id) { + private String description; + + private int calories; + + public Meal(LocalDateTime dateTime, String description, int calories) { + this.id = getNewId(); this.dateTime = dateTime; this.description = description; this.calories = calories; - this.id = id; + } + + public static void resetId() { + ID.set(-1); + } + + public int getId() { + return id; } public LocalDateTime getDateTime() { @@ -44,7 +57,23 @@ public LocalTime getTime() { return dateTime.toLocalTime(); } - public int getId() { - return id; + private int getNewId(){ + return ID.addAndGet(1); + } + + public void setId(int id) { + this.id = id; + } + + public void setDateTime(LocalDateTime dateTime) { + this.dateTime = dateTime; + } + + public void setDescription(String description) { + this.description = description; + } + + public void setCalories(int calories) { + this.calories = calories; } } diff --git a/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java b/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java index 8d36566..f42b076 100644 --- a/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java +++ b/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java @@ -3,30 +3,43 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; /** * GKislin * 11.01.2015. */ public class MealWithExceed { + + private final static AtomicInteger ID = new AtomicInteger(-1); + + private final int id; + private final LocalDateTime dateTime; private final String description; private final int calories; - private final int id; - private final boolean exceed; public MealWithExceed(LocalDateTime dateTime, String description, int calories, int id, boolean exceed) { + this.id = getNewId(); this.dateTime = dateTime; this.description = description; this.calories = calories; - this.id = id; this.exceed = exceed; } + public static void resetId(){ + ID.set(-1); + } + + public int getId() { + return id; + } + public LocalDateTime getDateTime() { return dateTime; } @@ -47,22 +60,11 @@ public LocalTime getTime() { return dateTime.toLocalTime(); } - public int getId() { - return id; - } - public boolean getExceed() { return exceed; } - @Override - public String toString() { - return "UserMealWithExceed{" + - "dateTime=" + dateTime + - ", description='" + description + '\'' + - ", calories=" + calories + - ", id=" + id + - ", exceed=" + exceed + - '}'; + private int getNewId(){ + return ID.addAndGet(1); } } \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java index de23d8e..bf90fec 100644 --- a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java +++ b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java @@ -4,8 +4,13 @@ import ru.javawebinar.topjava.model.MealWithExceed; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.Month; import java.util.*; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.toList; /** * GKislin @@ -13,7 +18,22 @@ */ public class MealsUtil { - private static final Map MEALS_BASE = new HashMap<>(); + public static final Map mealsMap = new HashMap<>(); + + static { + mealsMap.put(0, new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500)); + mealsMap.put(1, new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000)); + mealsMap.put(2, new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500)); + mealsMap.put(3, new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000)); + mealsMap.put(4, new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500)); + mealsMap.put(5, new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510)); + } + + + public static void resetId() { + Meal.resetId(); + MealWithExceed.resetId(); + } public static List getFilteredWithExceeded(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { @@ -29,38 +49,18 @@ public static List getFilteredWithExceeded(List meals, Loc return mealExceeded; } - public static MealWithExceed createWithExceed(Meal meal, boolean exceeded) { - return new MealWithExceed(meal.getDateTime(), meal.getDescription(), meal.getCalories(), meal.getId(), exceeded); - } - - public static void addMeal(Meal meal) { - MEALS_BASE.put(meal.getId(), meal); - } + public static List convertToMealWithExceed(List meals, int caloriesPerDay) { + resetId(); + Map caloriesSumByDate = meals.stream() + .collect(Collectors.groupingBy(Meal::getDate, Collectors.summingInt(Meal::getCalories))); - public static Meal getMealById(int id) { - return MEALS_BASE.get(id); + return meals.stream() + .map(meal -> createWithExceed(meal, caloriesSumByDate.get(meal.getDate()) > caloriesPerDay)) + .sorted((o1, o2) -> o1.getDateTime().compareTo(o2.getDateTime())) + .collect(toList()); } - public static List getAllMeals() { - Collection c = MEALS_BASE.values(); - List allMealsList = new ArrayList<>(); - allMealsList.addAll(c); - return allMealsList; - } - - public static void updateMeal(Meal meal) { - addMeal(meal); - } - - public static void deleteMeal(int id) { - MEALS_BASE.remove(id); - } - - public static int getMealsBaseSize() { - return MEALS_BASE.size(); - } - - public static int getNewId() { - return getMealsBaseSize() + 1; + private static MealWithExceed createWithExceed(Meal meal, boolean exceeded) { + return new MealWithExceed(meal.getDateTime(), meal.getDescription(), meal.getCalories(), meal.getId(), exceeded); } } \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java b/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java index 02399b7..4be1358 100644 --- a/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java +++ b/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java @@ -7,6 +7,7 @@ * 07.01.2015. */ public class TimeUtil { + public static boolean isBetween(LocalTime lt, LocalTime startTime, LocalTime endTime) { return lt.compareTo(startTime) >= 0 && lt.compareTo(endTime) <= 0; } diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index 6ecf1fb..adf0628 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -1,6 +1,7 @@ package ru.javawebinar.topjava.web; import org.slf4j.Logger; +import ru.javawebinar.topjava.Dao.MealDaoImpl; import ru.javawebinar.topjava.model.Meal; import ru.javawebinar.topjava.model.MealWithExceed; import ru.javawebinar.topjava.util.MealsUtil; @@ -16,6 +17,7 @@ import java.time.LocalTime; import java.time.Month; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -26,76 +28,48 @@ * Date: 19.08.2014 */ public class MealServlet extends HttpServlet { + private int id; + private boolean add; + private MealDaoImpl mealDao = new MealDaoImpl(); - private static final Logger LOG = getLogger(MealServlet.class); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); -/* protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { -// LOG.debug("redirect to userList"); - List meals = Arrays.asList( - new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500, false), - new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000, false), - new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500, false), - new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000, true), - new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500, true), - new MealWithExceed(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510, true) - ); - - request.setAttribute("meals", meals); - - request.getRequestDispatcher("meals.jsp").forward(request, response); -// response.sendRedirect("userList.jsp"); - }*/ - - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - request.setCharacterEncoding("UTF-8"); - String userid = request.getParameter("userid"); - - if(userid == null || userid.isEmpty()) - { - Meal meal = new Meal(LocalDateTime.parse(request.getParameter("dateTime"), formatter), - request.getParameter("description"), Integer.parseInt(request.getParameter("calories")), MealsUtil.getNewId()); - MealsUtil.addMeal(meal); + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.setCharacterEncoding("UTF-8"); // set encoding (only for method Post!) + try { + LocalDateTime localDateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").parse(request.getParameter("date").trim(), LocalDateTime::from); + String description = request.getParameter("description"); + int calories = Integer.parseInt(request.getParameter("calories")); + if (add) + mealDao.add(new Meal(localDateTime, description, calories)); + else { + Meal meal = mealDao.getById(id); + meal.setDateTime(localDateTime); + meal.setDescription(description); + meal.setCalories(calories); + mealDao.update(meal); + } + } catch (Exception e) { + e.printStackTrace(); } - else - { - Meal meal = new Meal(LocalDateTime.parse(request.getParameter("dateTime"), formatter), - request.getParameter("description"), Integer.parseInt(request.getParameter("calories")), Integer.parseInt(userid)); - MealsUtil.updateMeal(meal); - } - List mealsWithExceeded = MealsUtil.getFilteredWithExceeded(MealsUtil.getAllMeals(), LocalTime.of(0, 0), - LocalTime.of(23, 59), 2000); - request.setAttribute("meals", mealsWithExceeded); - RequestDispatcher view = request.getRequestDispatcher("/meals.jsp"); - view.forward(request, response); + doGet(request, response); } - @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - LOG.debug("redirect to meals"); - response.setContentType("text/html;charset=utf-8"); - String action = request.getParameter("action"); + if (request.getParameter("id") != null) { + id = Integer.parseInt(request.getParameter("id")); + if (request.getParameter("del") != null) + mealDao.delete(id); +// MealsUtil.mealsMap.remove(id); + } else id = -1; - if (action.equalsIgnoreCase("delete")) { - int id = Integer.parseInt(request.getParameter("id")); - MealsUtil.deleteMeal(id); - List mealsWithExceeded = MealsUtil.getFilteredWithExceeded(MealsUtil.getAllMeals(), LocalTime.of(0, 0), - LocalTime.of(23, 59), 2000); - request.setAttribute("meals", mealsWithExceeded); - } else if (action.equalsIgnoreCase("edit")) { - int id = Integer.parseInt(request.getParameter("id")); + if (request.getParameter("add") != null) + add = true; + else add = false; + + List mealWithExceeds = MealsUtil.convertToMealWithExceed(new ArrayList<>(MealsUtil.mealsMap.values()), 2000); + request.setAttribute("meals", mealWithExceeds); - Meal meal = MealsUtil.getMealById(id); - request.setAttribute("meal", meal); - } - else if (action.equalsIgnoreCase("listMeals")) { - List mealsWithExceeded = MealsUtil.getFilteredWithExceeded(MealsUtil.getAllMeals(), - LocalTime.of(0, 0), LocalTime.of(23, 59), 2000); - request.setAttribute("meals", mealsWithExceeded); - request.getRequestDispatcher("/meals.jsp").forward(request, response); - } request.getRequestDispatcher("/meals.jsp").forward(request, response); } diff --git a/src/main/java/ru/javawebinar/topjava/web/UserServlet.java b/src/main/java/ru/javawebinar/topjava/web/UserServlet.java index 90a2555..5ddd38f 100644 --- a/src/main/java/ru/javawebinar/topjava/web/UserServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/UserServlet.java @@ -15,12 +15,13 @@ * Date: 19.08.2014 */ public class UserServlet extends HttpServlet { - private static final Logger LOG = getLogger(UserServlet.class); + private static final Logger log = getLogger(UserServlet.class); + @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { -// LOG.debug("redirect to userList"); + log.debug("redirect to users"); - request.getRequestDispatcher("userList.jsp").forward(request, response); -// response.sendRedirect("userList.jsp"); +// request.getRequestDispatcher("/users.jsp").forward(request, response); + response.sendRedirect("users.jsp"); } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 8ee5f21..a92e8c9 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -30,4 +30,4 @@ - + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 0d3a50d..8a261ba 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -4,7 +4,6 @@ http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> Topjava - userServlet ru.javawebinar.topjava.web.UserServlet @@ -24,6 +23,4 @@ mealServlet /meals - - - + \ No newline at end of file diff --git a/src/main/webapp/form.jsp b/src/main/webapp/form.jsp new file mode 100644 index 0000000..0437cfc --- /dev/null +++ b/src/main/webapp/form.jsp @@ -0,0 +1,84 @@ +<%-- + Created by IntelliJ IDEA. + User: User + Date: 28.01.2019 + Time: 0:36 + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Editing + <%-- Popup window--%> + + + + +<%-- popup window --%> +
+
+ Set meal properties
+ +
+ + + + + + + + + + + + + +
Date
Description
Calories
+ + Cancel +
+
+
+ +<%--Meal editing--%> + + \ No newline at end of file diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index 055181d..b24a3fc 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -1,23 +1,6 @@ -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> - -<%-- - Created by IntelliJ IDEA. - User: HOME - Date: 11.12.2018 - Time: 5:36 - To change this template use File | Settings | File Templates. ---%> - -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - - Meals - - - -

Home

-

Meal list

- - +--%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> - + + + Meals + + + +
- - - - - - + + - - - - - - - - - - - - -
idДатаОписаниеКол-во калорийУдалить:Обновить:

Home

Add meal

${meal.id}${meal.date}${meal.description}${meal.calories}">Update">Delete
+
+ + + <%-- table head--%> + + + + + + + -
-ADD/Edit meal -
- - User ID : " />
- Прием пищи: "/>
- Каллории : "/>
- Дата : "/>
- - - + <%-- table data--%> + + <%--set color--%> + + + + + + + + + <%-- set horizontal line--%> + + + + + + + + <%-- editing. Add id to url for getting it in method doGet()--%> + + <%-- deleting. Add id to url for getting it in method doGet()--%> + + + +
DateDescriptionCaloriesEditDelete
+
+
<%--deleting 'T' from date--%> + + ${time} + + ${meal.getDescription()}${meal.getCalories()}editdelete
+
+ +<%@ include file="form.jsp"%> - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/main/webapp/userList.jsp b/src/main/webapp/userList.jsp index fbd40d3..9b04c17 100644 --- a/src/main/webapp/userList.jsp +++ b/src/main/webapp/userList.jsp @@ -1,10 +1,10 @@ <%@ page contentType="text/html;charset=UTF-8" language="java" %> - User list + Users -

Home

-

User list

+

Home

+

Users

From 471e38149e8352ff7d0781a2e322e30004dbb367 Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Wed, 6 Feb 2019 07:10:59 +0300 Subject: [PATCH 14/19] upd --- .../ru/javawebinar/topjava/Dao/MealDao.java | 4 +- .../javawebinar/topjava/Dao/MealDaoImpl.java | 14 +++--- .../ru/javawebinar/topjava/model/Meal.java | 18 ++----- .../topjava/model/MealWithExceed.java | 17 ++----- .../javawebinar/topjava/util/MealsUtil.java | 50 +++++++------------ .../javawebinar/topjava/web/MealServlet.java | 18 ++----- src/main/webapp/users.jsp | 10 ++++ 7 files changed, 50 insertions(+), 81 deletions(-) create mode 100644 src/main/webapp/users.jsp diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java index 2d4760f..71baf3a 100644 --- a/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDao.java @@ -6,12 +6,12 @@ public interface MealDao { void add(T t); - T getById(int id); + T getById(String id); List getAll(); void update(T t); - void delete(int id); + void delete(String id); } diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java index 7d599bf..95facb5 100644 --- a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java @@ -11,26 +11,26 @@ public class MealDaoImpl implements MealDao { @Override public void add(Meal meal) { - MealsUtil.mealsMap.put(getAll().size() + 1, meal); + MealsUtil.MEALS_BASE.put(meal.getId(), meal); } @Override - public Meal getById(int id) { - return MealsUtil.mealsMap.get(id); + public Meal getById(String id) { + return MealsUtil.MEALS_BASE.get(id); } @Override public List getAll() { - return new ArrayList<>(MealsUtil.mealsMap.values()); + return new ArrayList<>(MealsUtil.MEALS_BASE.values()); } @Override public void update(Meal meal) { - MealsUtil.mealsMap.put(meal.getId(), meal); + MealsUtil.MEALS_BASE.put(meal.getId(), meal); } @Override - public void delete(int id) { - MealsUtil.mealsMap.remove(id); + public void delete(String id) { + MealsUtil.MEALS_BASE.remove(id); } } \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/model/Meal.java b/src/main/java/ru/javawebinar/topjava/model/Meal.java index c58de27..e2d7597 100644 --- a/src/main/java/ru/javawebinar/topjava/model/Meal.java +++ b/src/main/java/ru/javawebinar/topjava/model/Meal.java @@ -12,9 +12,7 @@ */ public class Meal { - public final static AtomicInteger ID = new AtomicInteger(-1); - - private int id; + private String id; private LocalDateTime dateTime; @@ -23,17 +21,13 @@ public class Meal { private int calories; public Meal(LocalDateTime dateTime, String description, int calories) { - this.id = getNewId(); + this.id = UUID.randomUUID().toString(); this.dateTime = dateTime; this.description = description; this.calories = calories; } - public static void resetId() { - ID.set(-1); - } - - public int getId() { + public String getId() { return id; } @@ -57,11 +51,7 @@ public LocalTime getTime() { return dateTime.toLocalTime(); } - private int getNewId(){ - return ID.addAndGet(1); - } - - public void setId(int id) { + public void setId(String id) { this.id = id; } diff --git a/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java b/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java index f42b076..64a63c6 100644 --- a/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java +++ b/src/main/java/ru/javawebinar/topjava/model/MealWithExceed.java @@ -12,9 +12,7 @@ */ public class MealWithExceed { - private final static AtomicInteger ID = new AtomicInteger(-1); - - private final int id; + private final String id; private final LocalDateTime dateTime; @@ -24,19 +22,15 @@ public class MealWithExceed { private final boolean exceed; - public MealWithExceed(LocalDateTime dateTime, String description, int calories, int id, boolean exceed) { - this.id = getNewId(); + public MealWithExceed(String id, LocalDateTime dateTime, String description, int calories, boolean exceed) { + this.id = id; this.dateTime = dateTime; this.description = description; this.calories = calories; this.exceed = exceed; } - public static void resetId(){ - ID.set(-1); - } - - public int getId() { + public String getId() { return id; } @@ -64,7 +58,4 @@ public boolean getExceed() { return exceed; } - private int getNewId(){ - return ID.addAndGet(1); - } } \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java index bf90fec..6bf7030 100644 --- a/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java +++ b/src/main/java/ru/javawebinar/topjava/util/MealsUtil.java @@ -18,49 +18,35 @@ */ public class MealsUtil { - public static final Map mealsMap = new HashMap<>(); + public static final Map MEALS_BASE = new HashMap<>(); - static { - mealsMap.put(0, new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500)); - mealsMap.put(1, new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000)); - mealsMap.put(2, new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500)); - mealsMap.put(3, new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000)); - mealsMap.put(4, new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500)); - mealsMap.put(5, new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510)); - } + private static final List MEALSDEMO = Arrays.asList( + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500), + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000), + new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500), + new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510) + ); - - public static void resetId() { - Meal.resetId(); - MealWithExceed.resetId(); + static { + for (Meal meal : MEALSDEMO) { + MEALS_BASE.put(meal.getId(), meal); + } } - public static List getFilteredWithExceeded(List meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { - + public static List getFilteredWithExceeded(List meals, int caloriesPerDay) { final Map caloriesSumByDate = new HashMap<>(); meals.forEach(meal -> caloriesSumByDate.merge(meal.getDate(), meal.getCalories(), Integer::sum)); final List mealExceeded = new ArrayList<>(); - meals.forEach(meal -> { - if (TimeUtil.isBetween(meal.getTime(), startTime, endTime)) { - mealExceeded.add(createWithExceed(meal, caloriesSumByDate.get(meal.getDate()) > caloriesPerDay)); - } - }); + meals.forEach(meal -> + mealExceeded.add(createWithExceed(meal, caloriesSumByDate.get(meal.getDate()) > caloriesPerDay)) + ); return mealExceeded; } - public static List convertToMealWithExceed(List meals, int caloriesPerDay) { - resetId(); - Map caloriesSumByDate = meals.stream() - .collect(Collectors.groupingBy(Meal::getDate, Collectors.summingInt(Meal::getCalories))); - - return meals.stream() - .map(meal -> createWithExceed(meal, caloriesSumByDate.get(meal.getDate()) > caloriesPerDay)) - .sorted((o1, o2) -> o1.getDateTime().compareTo(o2.getDateTime())) - .collect(toList()); - } - private static MealWithExceed createWithExceed(Meal meal, boolean exceeded) { - return new MealWithExceed(meal.getDateTime(), meal.getDescription(), meal.getCalories(), meal.getId(), exceeded); + return new MealWithExceed(meal.getId(), meal.getDateTime(), meal.getDescription(), meal.getCalories(), exceeded); } } \ No newline at end of file diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index adf0628..5056f58 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -1,34 +1,26 @@ package ru.javawebinar.topjava.web; -import org.slf4j.Logger; import ru.javawebinar.topjava.Dao.MealDaoImpl; import ru.javawebinar.topjava.model.Meal; import ru.javawebinar.topjava.model.MealWithExceed; import ru.javawebinar.topjava.util.MealsUtil; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.Month; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import static org.slf4j.LoggerFactory.getLogger; - /** * User: gkislin * Date: 19.08.2014 */ public class MealServlet extends HttpServlet { - private int id; + private String id; private boolean add; private MealDaoImpl mealDao = new MealDaoImpl(); @@ -57,17 +49,17 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (request.getParameter("id") != null) { - id = Integer.parseInt(request.getParameter("id")); + id = request.getParameter("id"); if (request.getParameter("del") != null) mealDao.delete(id); -// MealsUtil.mealsMap.remove(id); - } else id = -1; + MealsUtil.MEALS_BASE.remove(id); + }/* else id = -1;*/ if (request.getParameter("add") != null) add = true; else add = false; - List mealWithExceeds = MealsUtil.convertToMealWithExceed(new ArrayList<>(MealsUtil.mealsMap.values()), 2000); + List mealWithExceeds = MealsUtil.getFilteredWithExceeded(new ArrayList<>(MealsUtil.MEALS_BASE.values()), 2000); request.setAttribute("meals", mealWithExceeds); diff --git a/src/main/webapp/users.jsp b/src/main/webapp/users.jsp new file mode 100644 index 0000000..4693c19 --- /dev/null +++ b/src/main/webapp/users.jsp @@ -0,0 +1,10 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + User list + + +

Home

+

User list

+ + From 2151977ff9ed8d35e7a514439f87c32d911801fd Mon Sep 17 00:00:00 2001 From: "n.mice" Date: Sat, 9 Feb 2019 09:44:32 +0300 Subject: [PATCH 15/19] upd --- .../javawebinar/topjava/Dao/MealDaoImpl.java | 1 - .../javawebinar/topjava/web/MealServlet.java | 23 +++++----- src/main/webapp/meals.jsp | 46 ++++++------------- src/main/webapp/userList.jsp | 10 ---- 4 files changed, 27 insertions(+), 53 deletions(-) delete mode 100644 src/main/webapp/userList.jsp diff --git a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java index 95facb5..d3db4d3 100644 --- a/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java +++ b/src/main/java/ru/javawebinar/topjava/Dao/MealDaoImpl.java @@ -8,7 +8,6 @@ public class MealDaoImpl implements MealDao { - @Override public void add(Meal meal) { MealsUtil.MEALS_BASE.put(meal.getId(), meal); diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index 5056f58..e39d7db 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -1,5 +1,6 @@ package ru.javawebinar.topjava.web; +import ru.javawebinar.topjava.Dao.MealDao; import ru.javawebinar.topjava.Dao.MealDaoImpl; import ru.javawebinar.topjava.model.Meal; import ru.javawebinar.topjava.model.MealWithExceed; @@ -21,16 +22,17 @@ */ public class MealServlet extends HttpServlet { private String id; - private boolean add; - private MealDaoImpl mealDao = new MealDaoImpl(); + private boolean isAdding; + private MealDao mealDao = new MealDaoImpl(); + public static final String PATTERN = "yyyy-MM-dd HH:mm"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); // set encoding (only for method Post!) try { - LocalDateTime localDateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").parse(request.getParameter("date").trim(), LocalDateTime::from); + LocalDateTime localDateTime = LocalDateTime.parse(request.getParameter("date").trim(),DateTimeFormatter.ofPattern(PATTERN)); String description = request.getParameter("description"); int calories = Integer.parseInt(request.getParameter("calories")); - if (add) + if (isAdding) mealDao.add(new Meal(localDateTime, description, calories)); else { Meal meal = mealDao.getById(id); @@ -53,15 +55,14 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t if (request.getParameter("del") != null) mealDao.delete(id); MealsUtil.MEALS_BASE.remove(id); - }/* else id = -1;*/ - - if (request.getParameter("add") != null) - add = true; - else add = false; + } - List mealWithExceeds = MealsUtil.getFilteredWithExceeded(new ArrayList<>(MealsUtil.MEALS_BASE.values()), 2000); - request.setAttribute("meals", mealWithExceeds); + if (request.getParameter("isAdding") != null) + isAdding = true; + else isAdding = false; + List mealsWithExceed = MealsUtil.getFilteredWithExceeded(new ArrayList<>(MealsUtil.MEALS_BASE.values()), 2000); + request.setAttribute("meals", mealsWithExceed); request.getRequestDispatcher("/meals.jsp").forward(request, response); } diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index b24a3fc..e28c0a2 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -1,41 +1,29 @@ - - -<%----%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> Meals - - +

Home

Add meal

Add meal


- - - <%-- table head--%> - - - - - - - +
DateDescriptionCaloriesEditDelete
+ + + + + + + + + <%-- table data--%> <%--set color--%> @@ -54,23 +42,19 @@ - + <%-- editing. Add id to url for getting it in method doGet()--%> - + <%-- deleting. Add id to url for getting it in method doGet()--%>
ДатаОписаниеКол-во калорийEditDelete
<%--deleting 'T' from date--%> - - ${time} - - ${meal.getDate()} ${meal.getTime()} ${meal.getDescription()} ${meal.getCalories()}editeditdelete
-
-<%@ include file="form.jsp"%> + +<%@ include file="form.jsp" %> \ No newline at end of file diff --git a/src/main/webapp/userList.jsp b/src/main/webapp/userList.jsp deleted file mode 100644 index 9b04c17..0000000 --- a/src/main/webapp/userList.jsp +++ /dev/null @@ -1,10 +0,0 @@ -<%@ page contentType="text/html;charset=UTF-8" language="java" %> - - - Users - - -

Home

-

Users

- - From cce4c3cabac52bf92bf78175c24360acc5744b57 Mon Sep 17 00:00:00 2001 From: nmice Date: Mon, 11 Feb 2019 01:11:25 +0300 Subject: [PATCH 16/19] crud done --- .../java/ru/javawebinar/topjava/Main.java | 20 ++++++----- .../javawebinar/topjava/web/MealServlet.java | 36 ++++++++++--------- src/main/webapp/meals.jsp | 9 +++-- 3 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/main/java/ru/javawebinar/topjava/Main.java b/src/main/java/ru/javawebinar/topjava/Main.java index 542396f..f894b6b 100644 --- a/src/main/java/ru/javawebinar/topjava/Main.java +++ b/src/main/java/ru/javawebinar/topjava/Main.java @@ -1,12 +1,5 @@ package ru.javawebinar.topjava; -import ru.javawebinar.topjava.model.Meal; - -import java.time.LocalDateTime; -import java.time.Month; -import java.util.Arrays; -import java.util.List; - /** * User: gkislin * Date: 05.08.2015 @@ -20,4 +13,15 @@ public class Main { public static void main(String[] args) { System.out.format("Hello Topjava Enterprise!"); } -} \ No newline at end of file +} + +/*На странице кнопка add, update, delete +По кнопке add появляется форма пустая - добавляется дата, описание и кол-во каллорий + Заполняются данные, передается add=true и параметры передаются в конструктор, дефолт уникальный id, пут в лист милов, + считается эксид, рендерится страница со всеми миламиэксид. +По кнопке update появляется форма, заполненная данными мила, меняются данные. Кнопка обновить + При нажатии передается update=true и параметры передаются в конструктор, id из мила, пут в лист милов + считается эксид, рендерится страница со всеми миламиэксид +ПО кнопке delete передаётся параметр delete=true, id параметр передается на сервлет, удаляется мил с данным id, + считается эксид, рендерится страница со всеми миламиэксид + */ diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index e39d7db..3ec4250 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -6,6 +6,7 @@ import ru.javawebinar.topjava.model.MealWithExceed; import ru.javawebinar.topjava.util.MealsUtil; +import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; @@ -21,24 +22,26 @@ * Date: 19.08.2014 */ public class MealServlet extends HttpServlet { - private String id; - private boolean isAdding; private MealDao mealDao = new MealDaoImpl(); - public static final String PATTERN = "yyyy-MM-dd HH:mm"; + public static final String PATTERN = "yyyy/MM/dd HH:mm"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); // set encoding (only for method Post!) try { - LocalDateTime localDateTime = LocalDateTime.parse(request.getParameter("date").trim(),DateTimeFormatter.ofPattern(PATTERN)); - String description = request.getParameter("description"); - int calories = Integer.parseInt(request.getParameter("calories")); - if (isAdding) + if (Boolean.parseBoolean(request.getParameter("add"))) { + String description = request.getParameter("description"); + int calories = Integer.parseInt(request.getParameter("calories")); + LocalDateTime localDateTime = null;//LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); mealDao.add(new Meal(localDateTime, description, calories)); - else { - Meal meal = mealDao.getById(id); - meal.setDateTime(localDateTime); + } + if (Boolean.parseBoolean(request.getParameter("edit"))) { + Meal meal = mealDao.getById(request.getParameter("description")); + String description = request.getParameter("description"); + int calories = Integer.parseInt(request.getParameter("calories")); + LocalDateTime localDateTime = null;//LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); meal.setDescription(description); meal.setCalories(calories); + meal.setDateTime(localDateTime); mealDao.update(meal); } } catch (Exception e) { @@ -51,19 +54,20 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (request.getParameter("id") != null) { - id = request.getParameter("id"); + String id = request.getParameter("id"); if (request.getParameter("del") != null) mealDao.delete(id); - MealsUtil.MEALS_BASE.remove(id); + //MealsUtil.MEALS_BASE.remove(id); } - if (request.getParameter("isAdding") != null) - isAdding = true; - else isAdding = false; + /*if (request.getParameter("add") != null) + add = true; + else add = false;*/ List mealsWithExceed = MealsUtil.getFilteredWithExceeded(new ArrayList<>(MealsUtil.MEALS_BASE.values()), 2000); request.setAttribute("meals", mealsWithExceed); - request.getRequestDispatcher("/meals.jsp").forward(request, response); + RequestDispatcher requestDispatcher = request.getRequestDispatcher("/meals.jsp"); + requestDispatcher.forward(request, response); } } \ No newline at end of file diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index e28c0a2..112e6c0 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -4,17 +4,19 @@ Meals + - +

Home

Add meal

Add meal


- + +
@@ -46,12 +48,13 @@ <%-- editing. Add id to url for getting it in method doGet()--%> - + <%-- deleting. Add id to url for getting it in method doGet()--%>
Дата${meal.getDescription()} ${meal.getCalories()}editeditdelete
+ <%@ include file="form.jsp" %> From 1c91a2dc6b8151011492b73f66c52a86d16a4821 Mon Sep 17 00:00:00 2001 From: nmice Date: Tue, 12 Feb 2019 04:44:21 +0300 Subject: [PATCH 17/19] upd --- .../javawebinar/topjava/web/MealServlet.java | 47 ++++------ src/main/webapp/WEB-INF/web.xml | 41 +++++++-- src/main/webapp/form.jsp | 87 +++++-------------- src/main/webapp/{index.html => index.jsp} | 4 +- src/main/webapp/meals.jsp | 24 ++--- src/main/webapp/users.jsp | 2 +- 6 files changed, 87 insertions(+), 118 deletions(-) rename src/main/webapp/{index.html => index.jsp} (72%) diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index 3ec4250..3bcec68 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -26,29 +26,6 @@ public class MealServlet extends HttpServlet { public static final String PATTERN = "yyyy/MM/dd HH:mm"; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.setCharacterEncoding("UTF-8"); // set encoding (only for method Post!) - try { - if (Boolean.parseBoolean(request.getParameter("add"))) { - String description = request.getParameter("description"); - int calories = Integer.parseInt(request.getParameter("calories")); - LocalDateTime localDateTime = null;//LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); - mealDao.add(new Meal(localDateTime, description, calories)); - } - if (Boolean.parseBoolean(request.getParameter("edit"))) { - Meal meal = mealDao.getById(request.getParameter("description")); - String description = request.getParameter("description"); - int calories = Integer.parseInt(request.getParameter("calories")); - LocalDateTime localDateTime = null;//LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); - meal.setDescription(description); - meal.setCalories(calories); - meal.setDateTime(localDateTime); - mealDao.update(meal); - } - } catch (Exception e) { - e.printStackTrace(); - } - - doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -57,17 +34,31 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t String id = request.getParameter("id"); if (request.getParameter("del") != null) mealDao.delete(id); - //MealsUtil.MEALS_BASE.remove(id); } - /*if (request.getParameter("add") != null) - add = true; + if (request.getParameter("add") != null) { + String description = request.getParameter("description"); + int calories = Integer.parseInt(request.getParameter("calories")); + LocalDateTime localDateTime = LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); + mealDao.add(new Meal(localDateTime, description, calories)); + } + /*if (Boolean.parseBoolean(request.getParameter("edit"))) { + Meal meal = mealDao.getById(request.getParameter("description")); + String description = request.getParameter("description"); + int calories = Integer.parseInt(request.getParameter("calories")); + LocalDateTime localDateTime = null;//LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); + meal.setDescription(description); + meal.setCalories(calories); + meal.setDateTime(localDateTime); + mealDao.update(meal); + }*/ + /*add = true; else add = false;*/ List mealsWithExceed = MealsUtil.getFilteredWithExceeded(new ArrayList<>(MealsUtil.MEALS_BASE.values()), 2000); - request.setAttribute("meals", mealsWithExceed); + request.setAttribute("mealsWithExceedList", mealsWithExceed); - RequestDispatcher requestDispatcher = request.getRequestDispatcher("/meals.jsp"); + RequestDispatcher requestDispatcher = request.getRequestDispatcher("/meals-jsp"); requestDispatcher.forward(request, response); } } \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 8a261ba..9428947 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -4,23 +4,54 @@ http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> Topjava + - userServlet + UserServlet ru.javawebinar.topjava.web.UserServlet 0 - userServlet + UserServlet /users - mealServlet + MealServlet ru.javawebinar.topjava.web.MealServlet 0 - mealServlet - /meals + MealServlet + /mealServlet + + + + UsersJsp + /users.jsp + 0 + + + UsersJsp + /users-jsp + + + + MealsJsp + /meals.jsp + 0 + + + MealsJsp + /meals-jsp + + + + Form + /form.jsp + 0 + + + Form + /form-jsp \ No newline at end of file diff --git a/src/main/webapp/form.jsp b/src/main/webapp/form.jsp index 0437cfc..39d8742 100644 --- a/src/main/webapp/form.jsp +++ b/src/main/webapp/form.jsp @@ -9,76 +9,29 @@ Editing - <%-- Popup window--%> - -<%-- popup window --%> -
-
- Set meal properties
- -
- - - - - - - - - - - - - -
Date
Description
Calories
- - Cancel -
-
+
+ Set meal properties
+
+ + + + + + + + + + + + + +
Date
Description
Calories
+ + Cancel +
- -<%--Meal editing--%> \ No newline at end of file diff --git a/src/main/webapp/index.html b/src/main/webapp/index.jsp similarity index 72% rename from src/main/webapp/index.html rename to src/main/webapp/index.jsp index 892cf56..5829280 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.jsp @@ -1,4 +1,4 @@ - +<%@ page contentType="text/html;charset=UTF-8" language="java" %> @@ -9,7 +9,7 @@

Проект "User List -
  • Meal List
  • +
  • Meal List
  • diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index 112e6c0..036f1ae 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -1,22 +1,20 @@ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> - Meals - - - + +

    Home

    Add meal

    Home

    Add meal


    - - + +
    @@ -27,14 +25,14 @@ <%-- table data--%> - + <%--set color--%> - - + + - + <%-- set horizontal line--%> @@ -48,16 +46,12 @@ <%-- editing. Add id to url for getting it in method doGet()--%> - + <%-- deleting. Add id to url for getting it in method doGet()--%>
    Дата
    ${meal.getDescription()} ${meal.getCalories()}editeditdelete
    - - -<%@ include file="form.jsp" %> - \ No newline at end of file diff --git a/src/main/webapp/users.jsp b/src/main/webapp/users.jsp index 4693c19..7af8245 100644 --- a/src/main/webapp/users.jsp +++ b/src/main/webapp/users.jsp @@ -4,7 +4,7 @@ User list -

    Home

    +

    Home

    User list

    From 69b9b6373312d4853ce56c585beaa453773b46a3 Mon Sep 17 00:00:00 2001 From: nmice Date: Tue, 12 Feb 2019 05:34:51 +0300 Subject: [PATCH 18/19] upd --- src/main/webapp/form.jsp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/webapp/form.jsp b/src/main/webapp/form.jsp index 39d8742..d925517 100644 --- a/src/main/webapp/form.jsp +++ b/src/main/webapp/form.jsp @@ -19,6 +19,7 @@ Date + Description From c88c9e6222013720b16b23c2c0878ce7c8192960 Mon Sep 17 00:00:00 2001 From: nmice Date: Tue, 12 Feb 2019 07:17:54 +0300 Subject: [PATCH 19/19] crud correct work --- .../ru/javawebinar/topjava/model/Meal.java | 10 ++-- .../javawebinar/topjava/web/MealServlet.java | 59 ++++++++++++------- src/main/webapp/form.jsp | 9 +-- src/main/webapp/meals.jsp | 5 +- 4 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/main/java/ru/javawebinar/topjava/model/Meal.java b/src/main/java/ru/javawebinar/topjava/model/Meal.java index e2d7597..fb87308 100644 --- a/src/main/java/ru/javawebinar/topjava/model/Meal.java +++ b/src/main/java/ru/javawebinar/topjava/model/Meal.java @@ -12,7 +12,7 @@ */ public class Meal { - private String id; + private String id = UUID.randomUUID().toString(); private LocalDateTime dateTime; @@ -20,8 +20,10 @@ public class Meal { private int calories; + public Meal() { + } + public Meal(LocalDateTime dateTime, String description, int calories) { - this.id = UUID.randomUUID().toString(); this.dateTime = dateTime; this.description = description; this.calories = calories; @@ -44,11 +46,11 @@ public int getCalories() { } public LocalDate getDate() { - return dateTime.toLocalDate(); + return dateTime == null ? null : dateTime.toLocalDate(); } public LocalTime getTime() { - return dateTime.toLocalTime(); + return dateTime == null ? null : dateTime.toLocalTime(); } public void setId(String id) { diff --git a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java index 3bcec68..7ca8e5d 100644 --- a/src/main/java/ru/javawebinar/topjava/web/MealServlet.java +++ b/src/main/java/ru/javawebinar/topjava/web/MealServlet.java @@ -29,36 +29,51 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - if (request.getParameter("id") != null) { + if (request.getParameter("del") != null && request.getParameter("id") != null) { String id = request.getParameter("id"); - if (request.getParameter("del") != null) - mealDao.delete(id); + mealDao.delete(id); } - - if (request.getParameter("add") != null) { - String description = request.getParameter("description"); - int calories = Integer.parseInt(request.getParameter("calories")); - LocalDateTime localDateTime = LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); - mealDao.add(new Meal(localDateTime, description, calories)); + if ("add".equals(request.getParameter("formtype"))) { + Meal meal = createMealByRequest(request); + mealDao.add(meal); } - /*if (Boolean.parseBoolean(request.getParameter("edit"))) { - Meal meal = mealDao.getById(request.getParameter("description")); - String description = request.getParameter("description"); - int calories = Integer.parseInt(request.getParameter("calories")); - LocalDateTime localDateTime = null;//LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); - meal.setDescription(description); - meal.setCalories(calories); - meal.setDateTime(localDateTime); + if ("edit".equals(request.getParameter("formtype")) && request.getParameter("id") != null) { + Meal meal = createMealByRequest(request); mealDao.update(meal); - }*/ - /*add = true; - else add = false;*/ - + } List mealsWithExceed = MealsUtil.getFilteredWithExceeded(new ArrayList<>(MealsUtil.MEALS_BASE.values()), 2000); request.setAttribute("mealsWithExceedList", mealsWithExceed); RequestDispatcher requestDispatcher = request.getRequestDispatcher("/meals-jsp"); requestDispatcher.forward(request, response); } + + private Meal createMealByRequest(HttpServletRequest request) { + Meal meal=new Meal(); + if (request.getParameter("id") != null) { + meal.setId(request.getParameter("id")); + } + String description; + try { + description = request.getParameter("description"); + } catch (Exception e) { + description = "no description"; + } + int calories; + try { + calories = Integer.parseInt(request.getParameter("calories")); + } catch (Exception e) { + calories = 0; + } + LocalDateTime localDateTime; + try { + localDateTime = LocalDateTime.parse(request.getParameter("date"), DateTimeFormatter.ofPattern(PATTERN)); + } catch (Exception e) { + localDateTime = LocalDateTime.now(); + } + meal.setDescription(description); + meal.setCalories(calories); + meal.setDateTime(localDateTime); + return meal; + } } \ No newline at end of file diff --git a/src/main/webapp/form.jsp b/src/main/webapp/form.jsp index d925517..adf7195 100644 --- a/src/main/webapp/form.jsp +++ b/src/main/webapp/form.jsp @@ -15,23 +15,24 @@
    Set meal properties
    + > + > - - + - +
    Date
    Description
    Calories
    - Cancel +
    diff --git a/src/main/webapp/meals.jsp b/src/main/webapp/meals.jsp index 036f1ae..6804701 100644 --- a/src/main/webapp/meals.jsp +++ b/src/main/webapp/meals.jsp @@ -8,11 +8,10 @@ - +

    Home

    Add meal

    Add meal


    - @@ -46,7 +45,7 @@ <%-- editing. Add id to url for getting it in method doGet()--%> - + <%-- deleting. Add id to url for getting it in method doGet()--%>
    ${meal.getDescription()} ${meal.getCalories()}editeditdelete