diff --git a/explorer_rs/src/main/docs/puml/erd-explorer-data.puml b/explorer_rs/src/main/docs/puml/erd-explorer-data.puml
new file mode 100644
index 0000000..f02e79c
--- /dev/null
+++ b/explorer_rs/src/main/docs/puml/erd-explorer-data.puml
@@ -0,0 +1,33 @@
+@startuml
+!define primary_key(x) <&key> x
+!define foreign_key(x) <&key> x
+!define column(x) <&media-record> x
+!define table(x) entity x << (T, white) >>
+
+title "Entity Relationship Diagram (ERD): explore (учет загруженных на сервер файлов")
+entity "Пакеты загрузки" as upload_packages
+table(upload_packages) #bcd{
+ primary_key(id): LONGSERIAL >>"Идентификатор"
+ column(title): VARCHAR[80] >>"Наименование файла в файловой системе"
+ column(origin_title): VARCHAR[80] >>"Наименование загружаемого файла"
+ column(type): VARCHAR[80] >>"Наименование загружаемой формы"
+ column(extension): VARCHAR[80] >>"Расширение файла"
+ column(date): TIMESTAMP >>"Время загрузки пакета на сервер"
+ column(author): INTEGER >>"Пользователь, загрузивший файл"
+
+ --
+ **CONSTRAINS:**
+ * title -
+
+ --
+ **DESCRIPTION:**
+ * title - наименование файла в фаловой системе, формируется из id&extension
+ * origin_title - исходное наименвоание файла, назначенное пользователем
+ * type - наименование загружаемой формы, определяет алгоритм обработки файла
+ * extension - расширение файла (*.xlsx)
+ * date - дата и время загрузки пакета на сервер
+ * author - пльзователь, загрузивший файл
+
+}
+
+@enduml
\ No newline at end of file
diff --git a/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/FileController.java b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/FileController.java
index 7fb89cc..6687606 100644
--- a/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/FileController.java
+++ b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/FileController.java
@@ -12,6 +12,7 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@@ -21,6 +22,7 @@ import ru.molokoin.explorer_rs.entity.FileResponse;
import ru.molokoin.explorer_rs.repository.StorageService;
@Controller
+@RequestMapping(path = "/explorer_rs")
public class FileController {
private StorageService storageService;
@@ -28,11 +30,11 @@ public class FileController {
this.storageService = storageService;
}
- @GetMapping("/")
+ @GetMapping("/list")
public String listAllFiles(Model model) {
model.addAttribute("files", storageService.loadAll().map(
path -> ServletUriComponentsBuilder.fromCurrentContextPath()
- .path("/download/")
+ .path("/explorer_rs/download/")
.path(path.getFileName().toString())
.toUriString())
.collect(Collectors.toList()));
@@ -53,7 +55,6 @@ public class FileController {
@ResponseBody
public FileResponse uploadFile(@RequestParam("file") MultipartFile file) {
String name = storageService.store(file);
-
String uri = ServletUriComponentsBuilder.fromCurrentContextPath()
.path("/download/")
.path(name)
diff --git a/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/PackageController.java b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/PackageController.java
new file mode 100644
index 0000000..76eadd2
--- /dev/null
+++ b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/controller/PackageController.java
@@ -0,0 +1,64 @@
+package ru.molokoin.explorer_rs.controller;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import ru.molokoin.explorer_rs.repository.PackageFace;
+import ru.molokoin.explorer_rs.entity.Package;
+
+@RestController
+@RequestMapping(path = "/", consumes = {"*/*"})
+public class PackageController {
+ @Autowired
+ private PackageFace repo;
+
+ @GetMapping("/package/list")
+ public ResponseEntity> getPackages(){
+ return new ResponseEntity<>(repo.findAll(), HttpStatus.OK);
+ }
+
+ @GetMapping("/package/{id}")
+ public ResponseEntity> getPackageByID(@PathVariable Integer id){
+ return new ResponseEntity<>(repo.findPackageById(id), HttpStatus.OK);
+ }
+
+ @PostMapping(path = "/package/create",
+ consumes = MediaType.APPLICATION_JSON_VALUE,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> savePackage(@RequestBody Package pack) {
+ repo.save(pack);
+ return new ResponseEntity<>(pack, HttpStatus.CREATED);
+ }
+
+ @PostMapping(path = "/package/update/{id}",
+ consumes = MediaType.APPLICATION_JSON_VALUE,
+ produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> updatePackage(@PathVariable Integer id, @RequestBody Package pack) {
+ Package p = repo.findPackageById(id);
+ p.setTitle(pack.getTitle());
+ p.setOrigin_title(pack.getOrigin_title());
+ p.setType(pack.getType());
+ p.setExtension(pack.getExtension());
+ p.setDate(pack.getDate());
+ repo.save(p);
+ return new ResponseEntity<>(repo.findPackageById(id), HttpStatus.CREATED);
+ }
+
+ @DeleteMapping("/package/delete/{id}")
+ public ResponseEntity deletePackage(@PathVariable Long id){
+ Package p = repo.findPackageById(id);
+ repo.delete(p);
+ return new ResponseEntity<>("Запись id#" + id + " удалена ... ", HttpStatus.OK);
+ }
+}
diff --git a/explorer_rs/src/main/java/ru/molokoin/explorer_rs/entity/Package.java b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/entity/Package.java
new file mode 100644
index 0000000..b71485f
--- /dev/null
+++ b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/entity/Package.java
@@ -0,0 +1,48 @@
+package ru.molokoin.explorer_rs.entity;
+
+import java.util.Date;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Обертка для хранения данных о загружаемом пакете
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Data
+public class Package {
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ private long id;
+ private String title;// Наименование файла в файловой системе
+ private String origin_title;// Наименование загружаемого файла
+ private String type;// Наименование загружаемой формы
+ private String extension;// Расширение файла
+ private Date date;// Время загрузки пакета на сервер
+
+ // Пока не работает блок авторизации, учет автора безсмысленен
+ // private Person author;// Пользователь, загрузивший файл
+
+ /**
+ * Конструктор без id
+ * @param title
+ * @param origin_title
+ * @param type
+ * @param extension
+ * @param date
+ */
+ public Package(String title, String origin_title, String type, String extension, Date date) {
+ this.title = title;
+ this.origin_title = origin_title;
+ this.type = type;
+ this.extension = extension;
+ this.date = date;
+ }
+}
diff --git a/explorer_rs/src/main/java/ru/molokoin/explorer_rs/repository/PackageFace.java b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/repository/PackageFace.java
new file mode 100644
index 0000000..686a2d6
--- /dev/null
+++ b/explorer_rs/src/main/java/ru/molokoin/explorer_rs/repository/PackageFace.java
@@ -0,0 +1,14 @@
+package ru.molokoin.explorer_rs.repository;
+
+import java.util.List;
+
+import org.springframework.data.repository.ListCrudRepository;
+import org.springframework.stereotype.Repository;
+
+import ru.molokoin.explorer_rs.entity.Package;
+
+@Repository
+public interface PackageFace extends ListCrudRepository{
+ List findAll();
+ Package findPackageById(long id);
+}
diff --git a/explorer_rs/src/main/resources/static/content/md/hello.md b/explorer_rs/src/main/resources/static/content/md/hello.md
index 71e2d93..605d985 100644
--- a/explorer_rs/src/main/resources/static/content/md/hello.md
+++ b/explorer_rs/src/main/resources/static/content/md/hello.md
@@ -4,4 +4,12 @@
- скачивание файлов с сервера
- просмотр списка файлов
- хранение сведений о файлах в базе данных
-- представление данных xlsx файлов в json
\ No newline at end of file
+- представление данных xlsx файлов в json
+
+# Загрузка файлов на сервер
+1. файлы загружаются по одному, одновременно создается запись о пакете (table_pack) в базе
+
+table_pack:
+- id
+- наименование пакета
+- тип пакета(наименование загружаемой формы, для выбора последующего алгоритма обработки)
\ No newline at end of file
diff --git a/explorer_rs/src/main/resources/templates/listFiles.html b/explorer_rs/src/main/resources/templates/listFiles.html
index a64012d..34cfa25 100644
--- a/explorer_rs/src/main/resources/templates/listFiles.html
+++ b/explorer_rs/src/main/resources/templates/listFiles.html
@@ -7,7 +7,7 @@
Upload Single File:
-
@@ -15,7 +15,7 @@
Upload Multiple Files:
-