/
ilyaBu
/
WebSpringJava
Обзор
Документация
Войти
/
ilyaBu
/
WebSpringJava
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/ru/gb/spring/diplomawebjavaspringgb/controller/UploadController.java
193 строки
11 KB
IliaBu
Update code
14 июл 2024, 09:59
14 июл 2024, 09:59
2267cd9
Код
Авторство
О чём код?
package ru.gb.spring.diplomawebjavaspringgb.controller; import ru.gb.spring.diplomawebjavaspringgb.helper.CSVHelper; import ru.gb.spring.diplomawebjavaspringgb.service.RandomBackground; import ru.gb.spring.diplomawebjavaspringgb.service.UploadService; import ru.gb.spring.diplomawebjavaspringgb.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; /** * Класс загрузки csv файлов в базу данных */ @Controller public class UploadController { @Autowired private UploadService uploadservice; @Autowired private UserService userService; /** * Метод перехода на страницу upload-files.html. * * @param model объект модели, используемый для передачи данных в представление. * @return на страницу upload-files.html. */ @GetMapping("/upload-files") public String login(Model model) { model.addAttribute("title", "Загрузка файлов"); model.addAttribute("userfirstname", userService.getCurrentUser()); model.addAttribute("images", RandomBackground.randomBackground()); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-1") public String uploadFile1(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table1); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-2") public String uploadFile2(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table2); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-3") public String uploadFile3(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table3); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-4") public String uploadFile4(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table4); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-5") public String uploadFile5(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table5); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-6") public String uploadFile6(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table6); return "upload-files"; } /** * Метод обрабатывает POST-запрос на загрузку файла в указанную таблицу базы данных. * * @param file загруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки загрузки файла. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-7") public String uploadFile7(@RequestParam("file") MultipartFile file, Model model) { uploadFiles(file, model, uploadservice.table7); return "upload-files"; } /** * Обрабатывает POST-запрос на объединение всех загруженных таблиц в один прайс-лист. * * @param model объект модели, используемый для передачи данных в представление. * @return URL-адрес, на который перенаправляется пользователь после обработки запроса. * В этом случае возвращается на страницу upload-files.html. */ @PostMapping("/upload-all") public String MergeFileAll(Model model) { String message; model.addAttribute("title", "Загрузка файлов"); model.addAttribute("userfirstname", userService.getCurrentUser()); model.addAttribute("images", RandomBackground.randomBackground()); try { uploadservice.mergeTables(); model.addAttribute("messageSuccess", "Прайс-лист успешно подготовлен!"); } catch (Exception e) { message = "Не удалось собрать файл прайс-листа: " + e.getMessage(); model.addAttribute("messageError", message); } return "upload-files"; } /** * Обрабатывает загрузку файла в указанную таблицу базы данных. * Если загруженный файл имеет формат CSV, он удаляет все данные из указанной таблицы * и вставляет новые данные из загруженного файла. * * @param file pагруженный файл в формате MultipartFile. * @param model объект модели, используемый для передачи данных в представление. * @param table имя таблицы базы данных, в которую загружается файл. */ public void uploadFiles(MultipartFile file, Model model, String table) { String message; model.addAttribute("title", "Загрузка файлов"); model.addAttribute("userfirstname", userService.getCurrentUser()); model.addAttribute("images", RandomBackground.randomBackground()); if (CSVHelper.hasCSVFormat(file)) { try { uploadservice.truncateAndInsert(file, table); message = "Файл " + file.getOriginalFilename() + " загружен успешно!"; model.addAttribute("messageSuccess", message); } catch (Exception e) { message = "Не удалось загрузить файл: " + file.getOriginalFilename() + "! " + e.getMessage(); model.addAttribute("messageError", message); } } else { model.addAttribute("message", "Пожалуйста, выберите CSV-файл!"); } } }