Проект выпускницы курса «Разработчик на Spring Framework» | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
C++ Developer. Professional
-5%
Scala-разработчик
-8%
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Golang Developer. Professional
-5%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Java Developer. Professional Web-разработчик на Python MS SQL Server Developer Android Developer. Basic Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов React.js Developer Node.js Developer Интенсив «Оптимизация в Java» Супер-практикум по использованию и настройке GIT Symfony Framework Java Developer. Basic Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс «IaC Ansible»
-10%
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Экcпресс-курс «ELK»
-10%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Базы данных Network engineer Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+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 комментариев
Для комментирования необходимо авторизоваться