Create exception for file deletion.
Add user/inscriptionrequest connection to StorageFile entity. Create a prototype of the delete for file function
This commit is contained in:
		| @ -23,7 +23,7 @@ public class StorageController { | |||||||
|     @PostMapping("/upload/{fileType}") |     @PostMapping("/upload/{fileType}") | ||||||
|     public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file, @PathVariable FileType fileType) { |     public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file, @PathVariable FileType fileType) { | ||||||
|  |  | ||||||
|         String path = storageServ.store(file,fileType); |         String path = storageServ.store(file,fileType, null, null); | ||||||
|  |  | ||||||
|         if (path == null) return new ResponseEntity<>("issue with the file storage", HttpStatus.BAD_REQUEST); |         if (path == null) return new ResponseEntity<>("issue with the file storage", HttpStatus.BAD_REQUEST); | ||||||
|  |  | ||||||
|  | |||||||
| @ -0,0 +1,4 @@ | |||||||
|  | package ovh.herisson.Clyde.Exceptions; | ||||||
|  |  | ||||||
|  | public class CouldntDeleteFileException extends Exception{ | ||||||
|  | } | ||||||
| @ -3,11 +3,14 @@ package ovh.herisson.Clyde.Services; | |||||||
| import org.springframework.core.io.UrlResource; | import org.springframework.core.io.UrlResource; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
|  | import ovh.herisson.Clyde.Exceptions.CouldntDeleteFileException; | ||||||
| import ovh.herisson.Clyde.Repositories.FileRepository; | import ovh.herisson.Clyde.Repositories.FileRepository; | ||||||
| import ovh.herisson.Clyde.Tables.FileType; | import ovh.herisson.Clyde.Tables.*; | ||||||
| import ovh.herisson.Clyde.Tables.StorageFile; |  | ||||||
|  | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import org.springframework.core.io.Resource; | import org.springframework.core.io.Resource; | ||||||
|  |  | ||||||
| import java.nio.file.Files; | import java.nio.file.Files; | ||||||
| import java.nio.file.Path; | import java.nio.file.Path; | ||||||
| import java.nio.file.Paths; | import java.nio.file.Paths; | ||||||
| @ -27,7 +30,7 @@ public class StorageService { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public String store(MultipartFile file, FileType fileType) { |     public String store(MultipartFile file, FileType fileType, User user, InscriptionRequest request) { | ||||||
|  |  | ||||||
|         if (file.getOriginalFilename().isEmpty()){return null;} |         if (file.getOriginalFilename().isEmpty()){return null;} | ||||||
|  |  | ||||||
| @ -49,8 +52,20 @@ public class StorageService { | |||||||
|         String url = this.rootLocation.resolve(Paths.get(Objects.requireNonNull(stringUuid))) |         String url = this.rootLocation.resolve(Paths.get(Objects.requireNonNull(stringUuid))) | ||||||
|                 .normalize().toString(); |                 .normalize().toString(); | ||||||
|  |  | ||||||
|         fileRepo.save(new StorageFile(file.getName(),url, fileType)); |         fileRepo.save(new StorageFile(file.getName(),url, fileType, user, request)); | ||||||
|  |  | ||||||
|         return url; |         return url; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void delete(StorageFile file) throws CouldntDeleteFileException { | ||||||
|  |         File f = new File(file.getUrl()); | ||||||
|  |         //Delete le fichier | ||||||
|  |         try{ | ||||||
|  |             f.delete(); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             throw new CouldntDeleteFileException(); | ||||||
|  |         } | ||||||
|  |         //Delete l'entité | ||||||
|  |         fileRepo.delete(file); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -4,7 +4,10 @@ import jakarta.persistence.*; | |||||||
|  |  | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @Entity | ||||||
| public class InscriptionRequest { | public class InscriptionRequest { | ||||||
|  |     @Id | ||||||
|     @GeneratedValue(strategy = GenerationType.AUTO) |     @GeneratedValue(strategy = GenerationType.AUTO) | ||||||
|     private int id; |     private int id; | ||||||
|     private String firstName; |     private String firstName; | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ public class ReinscriptionRequest { | |||||||
|  |  | ||||||
|     //Permet de différencier les demandes de changement et une réinscription dans le même cursus |     //Permet de différencier les demandes de changement et une réinscription dans le même cursus | ||||||
|     //Pour la réinscription on va le mettre a 0 |     //Pour la réinscription on va le mettre a 0 | ||||||
|     private boolean type; |     private boolean type = false; | ||||||
|  |  | ||||||
|     public ReinscriptionRequest(){} |     public ReinscriptionRequest(){} | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,9 +1,6 @@ | |||||||
| package ovh.herisson.Clyde.Tables; | package ovh.herisson.Clyde.Tables; | ||||||
|  |  | ||||||
| import jakarta.persistence.Entity; | import jakarta.persistence.*; | ||||||
| import jakarta.persistence.GeneratedValue; |  | ||||||
| import jakarta.persistence.GenerationType; |  | ||||||
| import jakarta.persistence.Id; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @Entity | @Entity | ||||||
| @ -20,10 +17,21 @@ public class StorageFile { | |||||||
|     private FileType fileType; |     private FileType fileType; | ||||||
|  |  | ||||||
|  |  | ||||||
|     public StorageFile(String name, String url, FileType fileType){ |     //Pour lier un user ou une demande d'inscription au fichier | ||||||
|  |     @ManyToOne | ||||||
|  |     @JoinColumn(name = "user") | ||||||
|  |     private User user; | ||||||
|  |  | ||||||
|  |     @ManyToOne | ||||||
|  |     @JoinColumn(name = "inscriptionrequest") | ||||||
|  |     private InscriptionRequest request; | ||||||
|  |  | ||||||
|  |     public StorageFile(String name, String url, FileType fileType, User user, InscriptionRequest request){ | ||||||
|         this.name = name; |         this.name = name; | ||||||
|         this.url = url; |         this.url = url; | ||||||
|         this.fileType = fileType; |         this.fileType = fileType; | ||||||
|  |         this.user = user; | ||||||
|  |         this.request = request; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public StorageFile(){} |     public StorageFile(){} | ||||||
| @ -60,4 +68,20 @@ public class StorageFile { | |||||||
|     public void setFileType(FileType fileType) { |     public void setFileType(FileType fileType) { | ||||||
|         this.fileType = fileType; |         this.fileType = fileType; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void setUser(User user) { | ||||||
|  |         this.user = user; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public User getUser() { | ||||||
|  |         return user; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setRequest(InscriptionRequest request) { | ||||||
|  |         this.request = request; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public InscriptionRequest getRequest() { | ||||||
|  |         return request; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user