From aa6c1516297fccba768a22b0a029c28ef26a24d5 Mon Sep 17 00:00:00 2001 From: Grigory Kislin Date: Sat, 13 Feb 2016 17:02:55 +0300 Subject: [PATCH 001/101] Add description --- README.md | 106 +++++++++++++++++++++++++++++++++++++++++++++++++ cv.md | 55 +++++++++++++++++++++++++ description.md | 67 +++++++++++++++++++++++++++++++ 3 files changed, 228 insertions(+) create mode 100644 README.md create mode 100644 cv.md create mode 100644 description.md diff --git a/README.md b/README.md new file mode 100644 index 000000000000..786ec1b557bb --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +Java Enterprise Online Project +=============================== +Наиболее востребованные технологии /инструменты / фреймворки Java Enterprise: +Maven/ Spring/ Security/ JPA(Hibernate)/ REST(Jackson)/ Bootstrap(CSS)/ jQuery + plugins. + + Когда вы слышите что-то, вы забываете это. + Когда вы видите что-то, вы запоминаете это. + Но только когда вы начинаете делать это, + вы начинаете понимать это + + Старинная китайская поговорка + +## Описание и план проекта +### Демо разрабатываемого приложения +### Требования к участникам, Wiki + +Вводное занятие +=============== +## ![video](http://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico) Системы управления версиями. Git. + +- Система управления версиями. VCS/DVSC. +- Ресурсы: + - Интерактивная Git обучалка + - Основы Git + - Working with remote repositories + - Видео по обучению Git + - Как начать работать с GitHub: быстрый старт + - Справочник в графическом виде + - Git Overview + - Видеокурс по Git + +## ![video](http://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico) Работа с проектом (выполнять инструкции) +- **Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)** +- Доступно о Java 8 Lambda + +## Инструкция по шагам (из видео): +- Установить ПО (git, JDK8, IntelliJ IDEA, Maven) +- Создать аккаунт на GitHub +- Сделать Fork ЭТОГО проекта (https://github.com/JavaOPs/topjava) +- Сделать локальный репозиторий проекта: +
git clone https://github.com/[Ваш аккаунт]/topjava.git
+- Открыть и настроить проект в IDEA +- По ходу видео сделать Apply Patch... скаченного патча Prepare_ to_ HW0.patch +- Закоммитить и запушить изменения (commit + push) +- Сделать ветку домашнего задания +- Выполнить задание и залить на GitHub (commit + push) +- Переключиться в основную ветку проекта master. + +## Домашнее задание HW0 + +- Java 8 Date and Time API +- Time complexity +- Временная сложность алгоритма +- Вычислительная сложность +``` +Реализовать UserMealsUtil.getFilteredMealsWithExceeded: +- должны возвращаться только записи между startTime и endTime +- поле UserMealWithExceed.exceed должно показывать, + превышает ли сумма калорий за весь день параметра метода caloriesPerDay + +Т.е UserMealWithExceed - это запись одной еды, но поле exceeded будет одинаково для всех записей за этот день. + +- Проверте результат выполнения ДЗ (можно проверить логику в http://topjava.herokuapp.com , список еды) +- Оцените Time complexity вашего алгоритма (если он O(N*N)- попробуйте сделать O(N). +``` +Optional + +- Java 8: Lambda выражения +- Java 8: Потоки +- Pуководство по Java 8 Stream +- Лямбда-выражения в Java 8 +- Шпаргалка Java Stream API +- stream.map vs forEach + +``` +Сделать реализация через Java 8 Stream API. Заменяйте forEach оператором stream.map(..) +``` +### Составление резюме, подготовка к интервью, поиск работы +### Ресурсы для подготовки к проекту +#### (желательно иметь представление для лучшего усвоения материала) + +#### Java Web (Servlets, JSP) +- Введение в сетевое программирование +- Основы Java на реальном примере (Servlets, JSP) +- Как создать Servlet? Полное руководство. +- Технологии Java для разработки веб-приложений + +#### HTML, JavaScript, CSS +- Основы работы с HTML/CSS/JavaScript +- jQuery для начинающих +- Уроки Bootstrap 3 + +#### Java Core (Reflection API, JUnit) +- Введение в Java Reflection API +- Java JUnit + +#### JDBC, SQL +- Уроки по JDBC +- Learn SQL +- Try SQL + +#### Разное +- Интуит. Программирование на Java +- Oracle Java tutorial на русском. +- Эффективная работа с кодом в IntelliJ IDEA diff --git a/cv.md b/cv.md new file mode 100644 index 000000000000..95a53c28f61a --- /dev/null +++ b/cv.md @@ -0,0 +1,55 @@ +## Составление резюме, подготовка к интервью, поиск работы + +![cv](https://cloud.githubusercontent.com/assets/13649199/10877471/93ea86b8-8157-11e5-9bfa-95e3fba75c58.jpg) + +- Научиться программировать сложнее, чем кажется + +### Составление резюме: +- Идеальное резюме Junior’а +- Как продать свое резюме в 2 раза дороже +- Как правильно составить резюме +- Резюме программистов. Часть 1 (плохие) +- Резюме программистов. Часть 2 (хорошие) +- Как составить резюме на английском + +### Интервью: +- Михаил Портнов. Собеседование на работу: как продать себя грамотно +- Михаил Портнов. Какие вопросы мы задаем на собеседовании? +- Канал: Резюме, поиск работы, интервью +- Яков Файн: Как стать профессиональным Java разработчиком +- Quizful- тесты онлайн +- Сборка по вопросам на интервью +- Тест на знание SQL +- Сборка вопросов от JavaRush +> про clone и finalize объязательно прочтите Джошуа Блох: Java. Эффективное программирование (второе издание) + +- Cracking the Coding Interview +> Особенно обратите внимание на раздел: Часть VIII. Вопросы собеседования + +### От себя: +- email, skype - очень желательно, чтобы по ним вы были узнаваемы. Заведите рабочие, если не так. +- написать ВЕСЬ IT опыт (исключая опыт пользователя: Windows, MS Word, Photophop, Yandex disk, Google docs, ..): технологии, какие задачи решали (конкретные), какие инструменты использовали, VCS, DB, инструменты сборки, ... включая опыт в ВУЗе. +- на English иметь желательно. Если вакансия опублинована на Englsih - шлите на нем. Часто могут на нем попросить, если работодатель иностранный. +- удобно иметь резюме где то в инете (hh, linkedin, google doc, чтобы им было удобно делиться). + +### Позиционирование проекта Topjava: +- После завершения проекта вы освоите все заявленные в нем технологии - вставьте в квалификацию (включая java 8 Stream and Time API) +- Делайте упор не на обучение, а на *участие в проекте*. Выполнение домашних заданий - это полноценное участие с написанием функционала по всем этим технологиям. Например: + + Участие в разработке Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей + на стеке Maven/ Spring MVC/ Security/ REST(Jackson)/ Java 8 Stream API: + - реализация сохранения в базы Postgres и HSQLDB на основе Spring JBDC, JPA(Hibernate) и Spring-Data-JPA + - реализация и тестирование REST и AJAX контроллеров + - реализация клиента на Bootstrap (css/js), datatables, jQuery + plugins. + - отлично будет, если вы его еще как то сами доработаете + +- По поводу обучения на курсах- можно упомянуть в разделе образования. Но на собеседовании меньше смотрят на то, что вы заканчивали, больше - на ваш опыт и то что вы знаете. + +### В течении проекта заполните форму соискателя "Разработчик Java" +Я ее рассылаю всем знакомым HR, уже есть пинги и трудоустройство. + +### Основные сайты поиска работы: +- HH +- LinkedIn +- djinni.co (более актуально для Украины) +- moikrug diff --git a/description.md b/description.md new file mode 100644 index 000000000000..0133bf3c83e8 --- /dev/null +++ b/description.md @@ -0,0 +1,67 @@ +#### Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей используя наиболее популярные инструменты и технологии Java: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), Bootstrap (css,js), datatables, jQuery + plugins, Java 8 Stream and Time API +- Основное внимание будет уделяться способам решения многочисленных проблем разработки в Spring/JPA, а также структурному (красивому и надежному) java кодированию и архитектуре приложения. +- Каждая итерация проекта в закрепляется домашним заданием по реализации схожей функциональности. Следующее занятие начинается с разбора домашних заданий. +- Большое внимание уделяется тестированию кода: в проекте 88 JUnit тестов. +- Несмотря на относительно небольшой размер, приложение разрабатывается с нуля как большой проект (например мы используем кэш 2-го уровня Hibernate, настраиваем Jenkins для работы с ленивой загрузкой +Hibernate, делаем конверторы для типов LocalDateTime (Java 8 time API), которые еще не поддерживаются ни JPA/Hibernate, ни Jackson/json). + Разбираются архитектурные паттерны: слои приложения и как правильно разбивать логику по слоям, когда нужно применят Data Transfer Object. + Т.е на выходе получается не учебный проект, а хорошо маштабируемый шаблон для большого проекта на всех пройденных технологиях. +- Большое внимание уделяется деталям: популяция базы, использование транзакционности, тесты сервисов и REST + контроллеров, насторойка EntityManagerFactory, + выбор реализации пула коннектов. Особое внимание уделяется работе с базой: через Spring JDBC, Spring ORM и + Spring Data Jpa. +- Используются самые востребованные на сегодняшний момент фреймворки: Maven, Spring Security 4 + вместе с Spring Security Test, наиболее удобный для работы с базой проект Spring Data Jpa, библиотека логирования logback, реализующая SLF4J, повсеместно используемый Bootstrap и jQuery. + +#### Демо разрабатываемого приложения + +## План проекта (ссылки на некоторые темы открыты для просмотра) +### Архитектура проекта. Персистентность. +- Системы управления версиями +- Java 8: Lambda, Stream API +- Обзор используемых в проекте технологий и инструментов. +- Инструмент сборки Maven. +- WAR. Веб-контейнер Tomcat. Сервлеты. +- Логирование. +- Обзор стандартных библиотек. Apache Commons, Guava +- Слои приложения. Создание каркаса приложения. +- Обзор Spring Framework. Spring Context. +- Тестирование через JUnit. +- Spring Test +- Базы данных. PostgreSQL. Обзор NoSQL и Java persistence solution без ORM. +- Настройка Database в IDEA. +- Скрипты инициализации базы. Spring Jdbc Template. +- Spring: инициализация и популирование DB +- ORM. Hibernate. JPA. +- Поддержка HSQLDB +- Транзакции +- Профили Maven и Spring +- Пул коннектов +- Spring Data JPA +- Кэш Hibernate + +### Разработка WEB +- Spring кэш +- Spring Web +- JSP, JSTL, i18n +- Tomcat maven plugin. JNDI +- Spring Web MVC +- Spring Internationalization +- Тестирование Spring MVC +- REST контроллеры +- Тестирование REST контроллеров. Jackson. +- jackson-datatype-hibernate. Тестирование через матчеры. +- Тестирование через SoapUi. UTF-8 +- WebJars. +- Bootstrap. Datatables. +- AJAX. jQuery. Notifications. +- Spring Security +- Spring Binding/Validation +- Работа с Datatables через Ajax. +- Spring Security Test +- Encoding password +- CSRF (добавление в Spring проект защиты от межсайтовой подделки запроса) +- form-login. Spring Security Taglib +- Handler interceptor +- Spring Exception Handling +- Деплой в Heroku From cdbe0b4f8ed5053c7d2fb12dda7441ef0d8df1a2 Mon Sep 17 00:00:00 2001 From: Proger666 Date: Sun, 14 Feb 2016 16:06:27 +0300 Subject: [PATCH 002/101] =?UTF-8?q?IU-15.0.3=20Описание и план проекта -### Демо разрабатываемого приложения -### Требования к участникам, Wiki - -Вводное занятие -=============== -## ![video](http://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico) Системы управления версиями. Git. - -- Система управления версиями. VCS/DVSC. -- Ресурсы: - - Интерактивная Git обучалка - - Основы Git - - Working with remote repositories - - Видео по обучению Git - - Как начать работать с GitHub: быстрый старт - - Справочник в графическом виде - - Git Overview - - Видеокурс по Git - -## ![video](http://s.ytimg.com/yts/img/favicon-vflz7uhzw.ico) Работа с проектом (выполнять инструкции) -- **Prepare_ to_ HW0.patch (скачать и положить в каталог вашего проекта)** -- Доступно о Java 8 Lambda - -## Инструкция по шагам (из видео): -- Установить ПО (git, JDK8, IntelliJ IDEA, Maven) -- Создать аккаунт на GitHub -- Сделать Fork ЭТОГО проекта (https://github.com/JavaOPs/topjava) -- Сделать локальный репозиторий проекта: -
git clone https://github.com/[Ваш аккаунт]/topjava.git
-- Открыть и настроить проект в IDEA -- По ходу видео сделать Apply Patch... скаченного патча Prepare_ to_ HW0.patch -- Закоммитить и запушить изменения (commit + push) -- Сделать ветку домашнего задания -- Выполнить задание и залить на GitHub (commit + push) -- Переключиться в основную ветку проекта master. - -## Домашнее задание HW0 - -- Java 8 Date and Time API -- Time complexity -- Временная сложность алгоритма -- Вычислительная сложность -``` -Реализовать UserMealsUtil.getFilteredMealsWithExceeded: -- должны возвращаться только записи между startTime и endTime -- поле UserMealWithExceed.exceed должно показывать, - превышает ли сумма калорий за весь день параметра метода caloriesPerDay - -Т.е UserMealWithExceed - это запись одной еды, но поле exceeded будет одинаково для всех записей за этот день. - -- Проверте результат выполнения ДЗ (можно проверить логику в http://topjava.herokuapp.com , список еды) -- Оцените Time complexity вашего алгоритма (если он O(N*N)- попробуйте сделать O(N). -``` -Optional - -- Java 8: Lambda выражения -- Java 8: Потоки -- Pуководство по Java 8 Stream -- Лямбда-выражения в Java 8 -- Шпаргалка Java Stream API -- stream.map vs forEach - -``` -Сделать реализация через Java 8 Stream API. Заменяйте forEach оператором stream.map(..) -``` -### Составление резюме, подготовка к интервью, поиск работы -### Ресурсы для подготовки к проекту -#### (желательно иметь представление для лучшего усвоения материала) - -#### Java Web (Servlets, JSP) -- Введение в сетевое программирование -- Основы Java на реальном примере (Servlets, JSP) -- Как создать Servlet? Полное руководство. -- Технологии Java для разработки веб-приложений - -#### HTML, JavaScript, CSS -- Основы работы с HTML/CSS/JavaScript -- jQuery для начинающих -- Уроки Bootstrap 3 - -#### Java Core (Reflection API, JUnit) -- Введение в Java Reflection API -- Java JUnit - -#### JDBC, SQL -- Уроки по JDBC -- Learn SQL -- Try SQL - -#### Разное -- Интуит. Программирование на Java -- Oracle Java tutorial на русском. -- Эффективная работа с кодом в IntelliJ IDEA diff --git a/cv.md b/cv.md deleted file mode 100644 index 95a53c28f61a..000000000000 --- a/cv.md +++ /dev/null @@ -1,55 +0,0 @@ -## Составление резюме, подготовка к интервью, поиск работы - -![cv](https://cloud.githubusercontent.com/assets/13649199/10877471/93ea86b8-8157-11e5-9bfa-95e3fba75c58.jpg) - -- Научиться программировать сложнее, чем кажется - -### Составление резюме: -- Идеальное резюме Junior’а -- Как продать свое резюме в 2 раза дороже -- Как правильно составить резюме -- Резюме программистов. Часть 1 (плохие) -- Резюме программистов. Часть 2 (хорошие) -- Как составить резюме на английском - -### Интервью: -- Михаил Портнов. Собеседование на работу: как продать себя грамотно -- Михаил Портнов. Какие вопросы мы задаем на собеседовании? -- Канал: Резюме, поиск работы, интервью -- Яков Файн: Как стать профессиональным Java разработчиком -- Quizful- тесты онлайн -- Сборка по вопросам на интервью -- Тест на знание SQL -- Сборка вопросов от JavaRush -> про clone и finalize объязательно прочтите Джошуа Блох: Java. Эффективное программирование (второе издание) - -- Cracking the Coding Interview -> Особенно обратите внимание на раздел: Часть VIII. Вопросы собеседования - -### От себя: -- email, skype - очень желательно, чтобы по ним вы были узнаваемы. Заведите рабочие, если не так. -- написать ВЕСЬ IT опыт (исключая опыт пользователя: Windows, MS Word, Photophop, Yandex disk, Google docs, ..): технологии, какие задачи решали (конкретные), какие инструменты использовали, VCS, DB, инструменты сборки, ... включая опыт в ВУЗе. -- на English иметь желательно. Если вакансия опублинована на Englsih - шлите на нем. Часто могут на нем попросить, если работодатель иностранный. -- удобно иметь резюме где то в инете (hh, linkedin, google doc, чтобы им было удобно делиться). - -### Позиционирование проекта Topjava: -- После завершения проекта вы освоите все заявленные в нем технологии - вставьте в квалификацию (включая java 8 Stream and Time API) -- Делайте упор не на обучение, а на *участие в проекте*. Выполнение домашних заданий - это полноценное участие с написанием функционала по всем этим технологиям. Например: - - Участие в разработке Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей - на стеке Maven/ Spring MVC/ Security/ REST(Jackson)/ Java 8 Stream API: - - реализация сохранения в базы Postgres и HSQLDB на основе Spring JBDC, JPA(Hibernate) и Spring-Data-JPA - - реализация и тестирование REST и AJAX контроллеров - - реализация клиента на Bootstrap (css/js), datatables, jQuery + plugins. - - отлично будет, если вы его еще как то сами доработаете - -- По поводу обучения на курсах- можно упомянуть в разделе образования. Но на собеседовании меньше смотрят на то, что вы заканчивали, больше - на ваш опыт и то что вы знаете. - -### В течении проекта заполните форму соискателя "Разработчик Java" -Я ее рассылаю всем знакомым HR, уже есть пинги и трудоустройство. - -### Основные сайты поиска работы: -- HH -- LinkedIn -- djinni.co (более актуально для Украины) -- moikrug diff --git a/description.md b/description.md deleted file mode 100644 index 0133bf3c83e8..000000000000 --- a/description.md +++ /dev/null @@ -1,67 +0,0 @@ -#### Разработка полнофункционального Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей используя наиболее популярные инструменты и технологии Java: Maven, Spring MVC, Security, JPA(Hibernate), REST(Jackson), Bootstrap (css,js), datatables, jQuery + plugins, Java 8 Stream and Time API -- Основное внимание будет уделяться способам решения многочисленных проблем разработки в Spring/JPA, а также структурному (красивому и надежному) java кодированию и архитектуре приложения. -- Каждая итерация проекта в закрепляется домашним заданием по реализации схожей функциональности. Следующее занятие начинается с разбора домашних заданий. -- Большое внимание уделяется тестированию кода: в проекте 88 JUnit тестов. -- Несмотря на относительно небольшой размер, приложение разрабатывается с нуля как большой проект (например мы используем кэш 2-го уровня Hibernate, настраиваем Jenkins для работы с ленивой загрузкой -Hibernate, делаем конверторы для типов LocalDateTime (Java 8 time API), которые еще не поддерживаются ни JPA/Hibernate, ни Jackson/json). - Разбираются архитектурные паттерны: слои приложения и как правильно разбивать логику по слоям, когда нужно применят Data Transfer Object. - Т.е на выходе получается не учебный проект, а хорошо маштабируемый шаблон для большого проекта на всех пройденных технологиях. -- Большое внимание уделяется деталям: популяция базы, использование транзакционности, тесты сервисов и REST - контроллеров, насторойка EntityManagerFactory, - выбор реализации пула коннектов. Особое внимание уделяется работе с базой: через Spring JDBC, Spring ORM и - Spring Data Jpa. -- Используются самые востребованные на сегодняшний момент фреймворки: Maven, Spring Security 4 - вместе с Spring Security Test, наиболее удобный для работы с базой проект Spring Data Jpa, библиотека логирования logback, реализующая SLF4J, повсеместно используемый Bootstrap и jQuery. - -#### Демо разрабатываемого приложения - -## План проекта (ссылки на некоторые темы открыты для просмотра) -### Архитектура проекта. Персистентность. -- Системы управления версиями -- Java 8: Lambda, Stream API -- Обзор используемых в проекте технологий и инструментов. -- Инструмент сборки Maven. -- WAR. Веб-контейнер Tomcat. Сервлеты. -- Логирование. -- Обзор стандартных библиотек. Apache Commons, Guava -- Слои приложения. Создание каркаса приложения. -- Обзор Spring Framework. Spring Context. -- Тестирование через JUnit. -- Spring Test -- Базы данных. PostgreSQL. Обзор NoSQL и Java persistence solution без ORM. -- Настройка Database в IDEA. -- Скрипты инициализации базы. Spring Jdbc Template. -- Spring: инициализация и популирование DB -- ORM. Hibernate. JPA. -- Поддержка HSQLDB -- Транзакции -- Профили Maven и Spring -- Пул коннектов -- Spring Data JPA -- Кэш Hibernate - -### Разработка WEB -- Spring кэш -- Spring Web -- JSP, JSTL, i18n -- Tomcat maven plugin. JNDI -- Spring Web MVC -- Spring Internationalization -- Тестирование Spring MVC -- REST контроллеры -- Тестирование REST контроллеров. Jackson. -- jackson-datatype-hibernate. Тестирование через матчеры. -- Тестирование через SoapUi. UTF-8 -- WebJars. -- Bootstrap. Datatables. -- AJAX. jQuery. Notifications. -- Spring Security -- Spring Binding/Validation -- Работа с Datatables через Ajax. -- Spring Security Test -- Encoding password -- CSRF (добавление в Spring проект защиты от межсайтовой подделки запроса) -- form-login. Spring Security Taglib -- Handler interceptor -- Spring Exception Handling -- Деплой в Heroku diff --git a/pom.xml b/pom.xml deleted file mode 100644 index c8a1c78f3b29..000000000000 --- a/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - 4.0.0 - - ru.javawebinar - topjava - jar - - 1.0-SNAPSHOT - - Calories Management - http://topjava.herokuapp.com/ - - - 1.8 - UTF-8 - UTF-8 - - - - topjava - install - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - ${java.version} - ${java.version} - - - - - - - - - - - - - - diff --git a/src/main/java/ru/javawebinar/topjava/Main.java b/src/main/java/ru/javawebinar/topjava/Main.java deleted file mode 100644 index b23a2f0961fc..000000000000 --- a/src/main/java/ru/javawebinar/topjava/Main.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.javawebinar.topjava; - -/** - * User: gkislin - * Date: 05.08.2015 - * - * @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!"); - } -} From b7d2200317936c01ba8d7819770223588c185fd0 Mon Sep 17 00:00:00 2001 From: Proger666 Date: Sun, 14 Feb 2016 16:08:49 +0300 Subject: [PATCH 003/101] =?UTF-8?q?IU-15.0.3=20 + + + \ No newline at end of file diff --git a/github_settings.xml b/github_settings.xml new file mode 100644 index 000000000000..0186c5ef758f --- /dev/null +++ b/github_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file From 7f127a066c9b345ea5ca489126331a5ba7040670 Mon Sep 17 00:00:00 2001 From: Proger666 Date: Sun, 14 Feb 2016 16:16:34 +0300 Subject: [PATCH 004/101] Perpare to HW0 --- .../javawebinar/topjava/model/UserMeal.java | 33 +++++++++++++++++ .../topjava/model/UserMealWithExceed.java | 24 +++++++++++++ .../ru/javawebinar/topjava/util/TimeUtil.java | 13 +++++++ .../topjava/util/UserMealsUtil.java | 35 +++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 src/main/java/ru/javawebinar/topjava/model/UserMeal.java create mode 100644 src/main/java/ru/javawebinar/topjava/model/UserMealWithExceed.java create mode 100644 src/main/java/ru/javawebinar/topjava/util/TimeUtil.java create mode 100644 src/main/java/ru/javawebinar/topjava/util/UserMealsUtil.java diff --git a/src/main/java/ru/javawebinar/topjava/model/UserMeal.java b/src/main/java/ru/javawebinar/topjava/model/UserMeal.java new file mode 100644 index 000000000000..fde5448b93d8 --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/model/UserMeal.java @@ -0,0 +1,33 @@ +package ru.javawebinar.topjava.model; + +import java.time.LocalDateTime; + +/** + * GKislin + * 11.01.2015. + */ +public class UserMeal { + protected final LocalDateTime dateTime; + + protected final String description; + + protected final int calories; + + public UserMeal(LocalDateTime dateTime, String description, int calories) { + this.dateTime = dateTime; + this.description = description; + this.calories = calories; + } + + public LocalDateTime getDateTime() { + return dateTime; + } + + public String getDescription() { + return description; + } + + public int getCalories() { + return calories; + } +} diff --git a/src/main/java/ru/javawebinar/topjava/model/UserMealWithExceed.java b/src/main/java/ru/javawebinar/topjava/model/UserMealWithExceed.java new file mode 100644 index 000000000000..dab6c9468c5e --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/model/UserMealWithExceed.java @@ -0,0 +1,24 @@ +package ru.javawebinar.topjava.model; + +import java.time.LocalDateTime; + +/** + * GKislin + * 11.01.2015. + */ +public class UserMealWithExceed { + protected final LocalDateTime dateTime; + + protected final String description; + + protected final int calories; + + protected final boolean exceed; + + public UserMealWithExceed(LocalDateTime dateTime, String description, int calories, boolean exceed) { + this.dateTime = dateTime; + this.description = description; + this.calories = calories; + this.exceed = exceed; + } +} diff --git a/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java b/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java new file mode 100644 index 000000000000..02399b7288cf --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/util/TimeUtil.java @@ -0,0 +1,13 @@ +package ru.javawebinar.topjava.util; + +import java.time.LocalTime; + +/** + * GKislin + * 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/util/UserMealsUtil.java b/src/main/java/ru/javawebinar/topjava/util/UserMealsUtil.java new file mode 100644 index 000000000000..2cb426400fa5 --- /dev/null +++ b/src/main/java/ru/javawebinar/topjava/util/UserMealsUtil.java @@ -0,0 +1,35 @@ +package ru.javawebinar.topjava.util; + +import ru.javawebinar.topjava.model.UserMeal; +import ru.javawebinar.topjava.model.UserMealWithExceed; + +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.Month; +import java.util.Arrays; +import java.util.List; + +/** + * GKislin + * 31.05.2015. + */ +public class UserMealsUtil { + public static void main(String[] args) { + List mealList = Arrays.asList( + new UserMeal(LocalDateTime.of(2015, Month.MAY, 30,10,0), "Завтрак", 500), + new UserMeal(LocalDateTime.of(2015, Month.MAY, 30,13,0), "Обед", 1000), + new UserMeal(LocalDateTime.of(2015, Month.MAY, 30,20,0), "Ужин", 500), + new UserMeal(LocalDateTime.of(2015, Month.MAY, 31,10,0), "Завтрак", 1000), + new UserMeal(LocalDateTime.of(2015, Month.MAY, 31,13,0), "Обед", 500), + new UserMeal(LocalDateTime.of(2015, Month.MAY, 31,20,0), "Ужин", 510) + ); + getFilteredMealsWithExceeded(mealList, LocalTime.of(7, 0), LocalTime.of(12,0), 2000); +// .toLocalDate(); +// .toLocalTime(); + } + + public static List getFilteredMealsWithExceeded(List mealList, LocalTime startTime, LocalTime endTime, int caloriesPerDay) { + // TODO return filtered list with correctly exceeded field + return null; + } +} From 31bd727c37cb8fe1199e475a3e19cfebf68ce977 Mon Sep 17 00:00:00 2001 From: Proger666 Date: Sun, 14 Feb 2016 16:16:52 +0300 Subject: [PATCH 005/101] =?UTF-8?q?IU-15.0.3=20 + + + \ No newline at end of file diff --git a/gradle.run.settings.xml b/gradle.run.settings.xml new file mode 100644 index 000000000000..98883fd09d96 --- /dev/null +++ b/gradle.run.settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/vcs.xml b/vcs.xml new file mode 100644 index 000000000000..cd71141db72a --- /dev/null +++ b/vcs.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file From dfcb8f323387dd8263fe6a10ee29d329394148e3 Mon Sep 17 00:00:00 2001 From: Proger666 Date: Sun, 14 Feb 2016 16:20:10 +0300 Subject: [PATCH 006/101] =?UTF-8?q?IU-15.0.3=20 + + + + \ No newline at end of file From 9ad12af57d9d27b844d23071608f90784fe10db6 Mon Sep 17 00:00:00 2001 From: Proger666 Date: Mon, 15 Feb 2016 22:13:02 +0300 Subject: [PATCH 007/101] =?UTF-8?q?IU-15.0.3=20 + + + \ No newline at end of file diff --git a/_windows/keymap.xml b/_windows/keymap.xml new file mode 100644 index 000000000000..743029a4beb5 --- /dev/null +++ b/_windows/keymap.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/_windows/laf.xml b/_windows/laf.xml new file mode 100644 index 000000000000..dbf49b40fd2a --- /dev/null +++ b/_windows/laf.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/_windows/path.macros.xml b/_windows/path.macros.xml new file mode 100644 index 000000000000..1f0e29df1e58 --- /dev/null +++ b/_windows/path.macros.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/databaseSettings.xml b/databaseSettings.xml new file mode 100644 index 000000000000..2d4eced3d9a7 --- /dev/null +++ b/databaseSettings.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/debugger.xml b/debugger.xml new file mode 100644 index 000000000000..4c591c129e63 --- /dev/null +++ b/debugger.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/file.template.settings.xml b/file.template.settings.xml new file mode 100644 index 000000000000..44e5e67b786d --- /dev/null +++ b/file.template.settings.xml @@ -0,0 +1,15 @@ + + + +