esoe
6 months ago
11 changed files with 277 additions and 6 deletions
@ -0,0 +1,10 @@
@@ -0,0 +1,10 @@
|
||||
package ru.molokoin.explorer_rs.controller; |
||||
|
||||
import org.springframework.stereotype.Controller; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
||||
@Controller |
||||
@RequestMapping(path = "/stroage") |
||||
public class StorageController { |
||||
|
||||
} |
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
package ru.molokoin.explorer_rs.entity; |
||||
|
||||
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 Document { |
||||
@Id |
||||
@GeneratedValue(strategy=GenerationType.AUTO) |
||||
private long id; |
||||
private String name;//наименование файла в файловой системе ({id}.{extension})
|
||||
private String name_origin;//оригинальное название загруженного файл
|
||||
private String path;//путь в файловой системе (root/{id}.{extension})
|
||||
private String extension;//расширение файла
|
||||
private long size;//размер файла
|
||||
|
||||
/** |
||||
* @param name |
||||
* @param name_origin |
||||
* @param path |
||||
* @param extension |
||||
* @param size |
||||
*/ |
||||
public Document(String name, String name_origin, String path, String extension, long size) { |
||||
this.name = name; |
||||
this.name_origin = name_origin; |
||||
this.path = path; |
||||
this.extension = extension; |
||||
this.size = size; |
||||
} |
||||
} |
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
package ru.molokoin.explorer_rs.entity; |
||||
|
||||
|
||||
import java.util.Date; |
||||
|
||||
import org.hibernate.annotations.OnDelete; |
||||
import org.hibernate.annotations.OnDeleteAction; |
||||
|
||||
import jakarta.persistence.CascadeType; |
||||
import jakarta.persistence.Entity; |
||||
import jakarta.persistence.FetchType; |
||||
import jakarta.persistence.GeneratedValue; |
||||
import jakarta.persistence.GenerationType; |
||||
import jakarta.persistence.Id; |
||||
import jakarta.persistence.JoinColumn; |
||||
import jakarta.persistence.OneToOne; |
||||
import lombok.AllArgsConstructor; |
||||
import lombok.Data; |
||||
import lombok.NoArgsConstructor; |
||||
|
||||
@NoArgsConstructor |
||||
@AllArgsConstructor |
||||
@Entity |
||||
@Data |
||||
public class Record { |
||||
@Id |
||||
@GeneratedValue(strategy=GenerationType.AUTO) |
||||
private long id; |
||||
private String type;//тип загруженного документа (реестр, заявка, протокол ...)
|
||||
private String author; |
||||
private Date berth;//дата и время создания записи
|
||||
private String description;//Пояснения автора записи
|
||||
|
||||
/** |
||||
* Связь один к одному с таблицей данных файловой системы |
||||
*/ |
||||
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) |
||||
@OnDelete(action = OnDeleteAction.SET_NULL) |
||||
@JoinColumn(name = "document_id", nullable = true) |
||||
private Document document; |
||||
|
||||
/** |
||||
* Конструктор без id |
||||
* @param type |
||||
* @param author |
||||
* @param berth |
||||
* @param description |
||||
* @param document |
||||
*/ |
||||
public Record(String type, String author, Date berth, String description, Document document) { |
||||
this.type = type; |
||||
this.author = author; |
||||
this.berth = berth; |
||||
this.description = description; |
||||
this.document = document; |
||||
} |
||||
} |
@ -0,0 +1,14 @@
@@ -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.Document; |
||||
|
||||
@Repository |
||||
public interface DocumentFace extends ListCrudRepository<Document, Long>{ |
||||
List<Document> findAll(); |
||||
Document findDocumentById(long id); |
||||
} |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
package ru.molokoin.explorer_rs.repository; |
||||
|
||||
public interface RecordFace { |
||||
|
||||
} |
@ -0,0 +1,83 @@
@@ -0,0 +1,83 @@
|
||||
package ru.molokoin.explorer_rs.service; |
||||
|
||||
import java.io.IOException; |
||||
import java.nio.file.Files; |
||||
import java.nio.file.Path; |
||||
import java.nio.file.Paths; |
||||
import java.util.List; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.core.io.Resource; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import jakarta.annotation.PostConstruct; |
||||
import ru.molokoin.explorer_rs.config.StorageProperties; |
||||
import ru.molokoin.explorer_rs.exception.StorageException; |
||||
|
||||
/** |
||||
* Класс доступа к данным файловой системы |
||||
*/ |
||||
@Service |
||||
public class FileSystemStorage implements StorageFace{ |
||||
private final Path root; //путь к корню хранилища данных
|
||||
|
||||
/** |
||||
* Конструктор, инициирующий путь к корню хранилиа данных, |
||||
* установленный файлом настроек приложения |
||||
* @param properties |
||||
*/ |
||||
@Autowired |
||||
public FileSystemStorage(StorageProperties properties) { |
||||
this.root = Paths.get(properties.getLocation()); |
||||
} |
||||
|
||||
/** |
||||
* При запуске сервера создаем корневую директорию, |
||||
* для хранения данных приложения |
||||
*/ |
||||
@PostConstruct |
||||
@Override |
||||
public void init() { |
||||
try { |
||||
Files.createDirectories(root); |
||||
} catch (IOException e) { |
||||
throw new StorageException("Could not initialize storage location", e); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public List<Resource> list() { |
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'list'"); |
||||
} |
||||
|
||||
@Override |
||||
public void clear() { |
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'clear'"); |
||||
} |
||||
|
||||
@Override |
||||
public Resource load(long id) { |
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'load'"); |
||||
} |
||||
|
||||
@Override |
||||
public boolean delete(long id) { |
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'delete'"); |
||||
} |
||||
|
||||
@Override |
||||
public boolean store(Resource resource) { |
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'store'"); |
||||
} |
||||
|
||||
@Override |
||||
public boolean store(List<Resource> resources) { |
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'store'"); |
||||
} |
||||
} |
@ -1,4 +1,4 @@
@@ -1,4 +1,4 @@
|
||||
package ru.molokoin.explorer_rs.repository; |
||||
package ru.molokoin.explorer_rs.service; |
||||
|
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
package ru.molokoin.explorer_rs.service; |
||||
|
||||
import java.util.List; |
||||
|
||||
import org.springframework.core.io.Resource; |
||||
|
||||
|
||||
/** |
||||
* Интерфейс для работы файловым хранилищем |
||||
* - инициализация пути к файловому хранилищу на хосте |
||||
* - получение списка файлов с хоста |
||||
* - получение файла по id |
||||
* - получениефайла по name |
||||
* - удаление файла |
||||
* |
||||
*/ |
||||
public interface StorageFace { |
||||
/** |
||||
* создание на хосте корневой директории, для файлового хранилища: |
||||
* путь к корневой директории устанавливается конфигурацией сервера |
||||
* properties - файлом |
||||
*/ |
||||
public void init(); |
||||
|
||||
/** |
||||
* Получение фактического списка файлов с хоста |
||||
* файлы на хост могут попадать разными путями и нужно иметь возможность |
||||
* сравнить фактический список с данными базы данных |
||||
* получить список размещенных на хосте и не зарегистрированных в базе файлов |
||||
* @return |
||||
*/ |
||||
public List<Resource> list(); |
||||
|
||||
/** |
||||
* Удаление всех файлов, очистка хранилища |
||||
*/ |
||||
public void clear(); |
||||
|
||||
/** |
||||
* Получение ресурса из хранилища |
||||
* @param id |
||||
* @return |
||||
*/ |
||||
public Resource load(long id); |
||||
|
||||
/** |
||||
* Удаление файла из хранилища |
||||
* @param id |
||||
* @return |
||||
*/ |
||||
public boolean delete(long id); |
||||
|
||||
/** |
||||
* Сохранение файла в хранилище |
||||
* @param resource |
||||
*/ |
||||
public boolean store(Resource resource); |
||||
|
||||
/** |
||||
* Сохранение группы ресурсов в хранилище |
||||
* @param resources |
||||
* @return |
||||
*/ |
||||
public boolean store(List<Resource> resources); |
||||
} |
@ -1,4 +1,4 @@
@@ -1,4 +1,4 @@
|
||||
package ru.molokoin.explorer_rs.repository; |
||||
package ru.molokoin.explorer_rs.service; |
||||
|
||||
import org.springframework.core.io.Resource; |
||||
import org.springframework.web.multipart.MultipartFile; |
Loading…
Reference in new issue