Проект выпускницы курса «Разработчик на Spring Framework»
Предлагаем вашему вниманию очередную проектную работу по курсу «Разработчик на Spring Framework». Её выполнила Елена Жильцова, выпускница одной из прошлых групп. В свободное от программирования время Елена, как и многие девушки, увлекается кухней, поэтому она решила написать простенькое веб-приложение, представляющее собой сборник рецептов.
Надо сказать, что приложение поддерживает два языка (русский и английский) и выглядит довольно практично:
С помощью этого приложения вы можете сохранять свои рецепты и быстро их находить в случае надобности. Это позволит сэкономить время, ведь больше не придётся часами рыться в записных и кулинарных книжках в поисках любимого блюда и необходимых ингредиентов. Кроме того, вы сможете добавлять картинки по 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")); }); } } } } }
Интерфейс тоже предельно прост и понятен. Есть и специальная инструкция по использованию приложения:
При желании вы можете ознакомиться с исходным кодом проекта на GitHub.