Проект выпускницы курса «Разработчик на Spring Framework» | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
Flutter Mobile Developer Подготовка к сертификации Oracle Java Programmer (OCAJP)
-8%
Алгоритмы и структуры данных
-12%
Web-разработчик на Python
-11%
Архитектура и шаблоны проектирования
-14%
JavaScript Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах»
-18%
iOS-разработчик. Базовый курс
-23%
Разработчик на Spring Framework
-23%
Python Developer. Basic
-16%
C# ASP.NET Core разработчик
-18%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
JavaScript Developer. Professional
-9%
Android Developer. Basic
-10%
Java Developer. Professional Разработчик C# AWS для разработчиков Highload Architect Reverse-Engineering. Professional CI/CD Vue.js разработчик Agile Project Manager Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Advanced Fullstack JavaScript developer
Инфраструктура
PostgreSQL
-10%
IoT-разработчик
-12%
Administrator Linux. Professional
-11%
Базы данных
-19%
Administrator Linux.Basic
-18%
Супер-интенсив «СУБД в высоконагруженных системах»
-18%
Супер-интенсив "SQL для анализа данных"
-16%
Software Architect
-12%
Сетевой инженер AWS для разработчиков Highload Architect Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Проект выпускницы курса «Разработчик на Spring Framework»

Spring_Deep_4.10-5020-755445.png

Предлагаем вашему вниманию очередную проектную работу по курсу «Разработчик на Spring Framework». Её выполнила Елена Жильцова, выпускница одной из прошлых групп. В свободное от программирования время Елена, как и многие девушки, увлекается кухней, поэтому она решила написать простенькое веб-приложение, представляющее собой сборник рецептов.

Надо сказать, что приложение поддерживает два языка (русский и английский) и выглядит довольно практично:

1-20219-0c55d0.jpg

2-20219-779c88.jpg

С помощью этого приложения вы можете сохранять свои рецепты и быстро их находить в случае надобности. Это позволит сэкономить время, ведь больше не придётся часами рыться в записных и кулинарных книжках в поисках любимого блюда и необходимых ингредиентов. Кроме того, вы сможете добавлять картинки по URL, просто скопировав ссылку на изображение.

При просмотре нужного рецепта отображаются: — названия и категории блюд (салат «Оливье», торт «Наполеон» и т. п.); — компоненты, необходимые для приготовления; — фотография, соответствующая нужному рецепту.

Текстовый поиск реализован следующим образом:

package ru.otus.elena.receipt.service;

import io.micrometer.core.instrument.Timer;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.otus.elena.receipt.dao.ReceiptRepository;
import ru.otus.elena.receipt.domain.Receipt;

@Service
public class ReceiptService {

    @Autowired
    private ReceiptRepository receiptRepository;
    @Autowired
    private Timer findTimer;

    public List<Receipt> findReceipt(Map<String, String> map) {
        if (map.getOrDefault("type", "").equalsIgnoreCase("")) {
            if (map.getOrDefault("name", "").equalsIgnoreCase("")) {
                if (map.getOrDefault("component", "").equalsIgnoreCase("")) {
                    return findTimer.record(() -> {
                        return receiptRepository.findAll();
                    });
                } else {
                    return findTimer.record(() -> {
                        return receiptRepository.findByComponent(map.get("component"));
                    });
                }
            } else {
                if (map.getOrDefault("component", "").equalsIgnoreCase("")) {
                    return findTimer.record(() -> {
                        return receiptRepository.findByName(map.get("name"));
                    });
                } else {
                    return findTimer.record(() -> {
                        return receiptRepository.findByNameAndComponent(map.get("name"), map.get("component"));
                    });
                }
            }

        } else {
            if (map.getOrDefault("name", "").equalsIgnoreCase("")) {
                if (map.getOrDefault("component", "").equalsIgnoreCase("")) {
                    return findTimer.record(() -> {
                        return receiptRepository.findByType(map.get("type"));
                    });
                } else {
                    return findTimer.record(() -> {
                        return receiptRepository.findByTypeAndComponent(map.get("type"), map.get("component"));
                    });
                }
            } else {
                if (map.getOrDefault("component", "").equalsIgnoreCase("")) {
                    return findTimer.record(() -> {
                        return receiptRepository.findByTypeAndName(map.get("type"), map.get("name"));
                    });
                } else {
                    return findTimer.record(() -> {
                        return receiptRepository.findByTypeAndNameAndComponent(map.get("type"), map.get("name"), map.get("component"));
                    });
                }
            }
        }
    }
}

Интерфейс тоже предельно прост и понятен. Есть и специальная инструкция по использованию приложения:

3-20219-f8362f.jpg

При желании вы можете ознакомиться с исходным кодом проекта на GitHub.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться