Changeset dd7a2b6
- Timestamp:
- 05/02/25 20:07:39 (13 hours ago)
- Branches:
- master
- Children:
- 3041023
- Parents:
- 0391097 (diff), ae61ea4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Location:
- ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
r0391097 rdd7a2b6 71 71 .allowedHeaders("*") 72 72 .allowCredentials(true); 73 74 registry.addMapping("/uploads/**") 75 .allowedOrigins("http://localhost:5173") 76 .allowedMethods("*")// maybe should be only GET 77 .allowedHeaders("*"); 73 78 } 74 79 }; -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/FileStorageServiceImpl.java
r0391097 rdd7a2b6 15 15 public class FileStorageServiceImpl implements FileStorageService { 16 16 17 private final Path uploadDirectory = Paths.get("uploads"); 17 private final Path rootUploadsDir = Paths.get("uploads"); 18 private final Path logosDir = rootUploadsDir.resolve("logos"); 19 private final Path localsDir = rootUploadsDir.resolve("locals"); 18 20 19 21 public FileStorageServiceImpl() throws IOException { 20 Files.createDirectories(uploadDirectory); 22 Files.createDirectories(rootUploadsDir); 23 Files.createDirectories(logosDir); 24 Files.createDirectories(localsDir); 21 25 } 22 26 23 27 @Override 24 public String save File(MultipartFile file) {28 public String saveLogoFile(MultipartFile file) { 25 29 try { 26 30 String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename(); 27 Path target = uploadDirectory.resolve(fileName);31 Path target = logosDir.resolve(fileName); 28 32 Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING); 29 return "/uploads/ " + fileName;33 return "/uploads/logos/" + fileName; 30 34 } catch (IOException e) { 31 throw new RuntimeException("Failed to save file", e); 35 throw new RuntimeException("Failed to save logo", e); 36 } 37 } 38 39 @Override 40 public String saveLocalPhoto(Long localId, MultipartFile file) { 41 try { 42 Path localFolder = localsDir.resolve(String.valueOf(localId)); 43 Files.createDirectories(localFolder); 44 String fileName = UUID.randomUUID() + "_" + file.getOriginalFilename(); 45 Path target = localFolder.resolve(fileName); 46 Files.copy(file.getInputStream(), target, StandardCopyOption.REPLACE_EXISTING); 47 return "/uploads/locals/" + localId + "/" + fileName; 48 } catch (IOException e) { 49 throw new RuntimeException("Failed to save local photo", e); 32 50 } 33 51 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/LocalManagerServiceImpl.java
r0391097 rdd7a2b6 4 4 import mk.ukim.finki.it.reservengo.model.domain.LocalManager; 5 5 import mk.ukim.finki.it.reservengo.model.exceptions.LocalIdNotFoundException; 6 import mk.ukim.finki.it.reservengo.model.exceptions.LogoDeletionException; 6 7 import mk.ukim.finki.it.reservengo.model.exceptions.UserEmailAlreadyExistsException; 7 8 import mk.ukim.finki.it.reservengo.repository.LocalManagerRepository; … … 12 13 import org.springframework.stereotype.Service; 13 14 import org.springframework.web.multipart.MultipartFile; 15 16 import java.io.IOException; 17 import java.nio.file.Files; 18 import java.nio.file.Path; 19 import java.nio.file.Paths; 20 import java.util.ArrayList; 21 import java.util.List; 14 22 15 23 @Service … … 32 40 Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId)); 33 41 34 String logoPath = fileStorageService.save File(logoFile);42 String logoPath = fileStorageService.saveLogoFile(logoFile); 35 43 local.setLogoUrl(logoPath); 36 44 … … 45 53 localManagerRepository.save(localManager); 46 54 } 55 56 @Override 57 public void deleteLocalLogo(Long localId) { 58 Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId)); 59 String logoUrl = local.getLogoUrl(); 60 61 if (logoUrl != null && !logoUrl.isEmpty()) { 62 Path filePath = Paths.get("uploads").resolve(Paths.get(logoUrl).getFileName().toString()); 63 64 try { 65 Files.deleteIfExists(filePath); 66 } catch (IOException e) { 67 throw new LogoDeletionException("Failed to delete logo from path: " + filePath, e); 68 } 69 } 70 local.setLogoUrl(null); 71 localRepository.save(local); 72 } 73 74 @Override 75 public void uploadPhotos(Long localId, List<MultipartFile> photos) { 76 Local local = localRepository.findById(localId).orElseThrow(() -> new LocalIdNotFoundException(localId)); 77 78 List<String> photoPaths = local.getLocalPhotos(); 79 80 if (photoPaths == null) { 81 photoPaths = new ArrayList<>(); 82 } 83 84 for (MultipartFile photo : photos) { 85 if (!photo.isEmpty()) { 86 String filePath = fileStorageService.saveLocalPhoto(localId, photo); 87 photoPaths.add(filePath); 88 } 89 } 90 local.setLocalPhotos(photoPaths); 91 localRepository.save(local); 92 } 47 93 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/FileStorageService.java
r0391097 rdd7a2b6 4 4 5 5 public interface FileStorageService { 6 String saveFile(MultipartFile file); 6 String saveLogoFile(MultipartFile file); 7 String saveLocalPhoto(Long localId, MultipartFile file); 7 8 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/LocalManagerService.java
r0391097 rdd7a2b6 4 4 import org.springframework.web.multipart.MultipartFile; 5 5 6 import java.util.List; 7 6 8 public interface LocalManagerService { 7 9 void uploadLogo(Long localId, MultipartFile logoFile); 8 10 9 11 void save(LocalManager localManager); 12 13 void deleteLocalLogo(Long localId); 14 15 void uploadPhotos(Long localId, List<MultipartFile> photos); 10 16 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/advice/GlobalExceptionHandler.java
r0391097 rdd7a2b6 56 56 return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage()); 57 57 } 58 59 @ExceptionHandler(LogoDeletionException.class) 60 public ResponseEntity<String> handleLogoDeletion(LogoDeletionException ex) { 61 return ResponseEntity.status(HttpStatus.CONFLICT).body(ex.getMessage()); 62 } 58 63 } 59 64 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/controller/LocalManagerController.java
r0391097 rdd7a2b6 5 5 import org.springframework.web.bind.annotation.*; 6 6 import org.springframework.web.multipart.MultipartFile; 7 8 import java.util.List; 7 9 8 10 @RestController … … 22 24 return ResponseEntity.ok().build(); 23 25 } 24 //TODO implement delete logo 26 27 @DeleteMapping("/{localId}/delete-logo") 28 public ResponseEntity<?> deleteLocalLogo(@PathVariable Long localId) { 29 localManagerService.deleteLocalLogo(localId); 30 return ResponseEntity.ok().build(); 31 } 32 25 33 @PostMapping("/{localId}/upload-photos") 26 //TODO implement this next 27 public ResponseEntity<?> uploadPhotos(@PathVariable Long localId) { 34 public ResponseEntity<?> uploadPhotos(@PathVariable Long localId, 35 @RequestParam("photos") List<MultipartFile> photos) { 36 localManagerService.uploadPhotos(localId, photos); 28 37 return ResponseEntity.ok().build(); 29 38 }
Note:
See TracChangeset
for help on using the changeset viewer.