Images are working but still there is need to add isImageMain flag to images.
This commit is contained in:
@@ -7,13 +7,7 @@ import _11.asktpk.artisanconnectbackend.repository.NoticeRepository;
|
||||
import _11.asktpk.artisanconnectbackend.dto.NoticeDTO;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -34,7 +28,6 @@ public class NoticeService {
|
||||
notice.setDescription(dto.getDescription());
|
||||
notice.setPrice(dto.getPrice());
|
||||
notice.setCategory(dto.getCategory());
|
||||
notice.setImages(dto.getImages());
|
||||
notice.setStatus(dto.getStatus());
|
||||
notice.setPublishDate(dto.getPublishDate());
|
||||
notice.setAttributesNotices(dto.getAttributesNotices());
|
||||
@@ -54,7 +47,6 @@ public class NoticeService {
|
||||
dto.setDescription(notice.getDescription());
|
||||
dto.setPrice(notice.getPrice());
|
||||
dto.setCategory(notice.getCategory());
|
||||
dto.setImages(notice.getImages());
|
||||
dto.setStatus(notice.getStatus());
|
||||
dto.setPublishDate(notice.getPublishDate());
|
||||
dto.setAttributesNotices(notice.getAttributesNotices());
|
||||
@@ -92,7 +84,6 @@ public class NoticeService {
|
||||
existingNotice.setDescription(dto.getDescription());
|
||||
existingNotice.setPrice(dto.getPrice());
|
||||
existingNotice.setCategory(dto.getCategory());
|
||||
existingNotice.setImages(dto.getImages());
|
||||
existingNotice.setStatus(dto.getStatus());
|
||||
existingNotice.setAttributesNotices(dto.getAttributesNotices());
|
||||
|
||||
@@ -112,50 +103,4 @@ public class NoticeService {
|
||||
throw new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + id);
|
||||
}
|
||||
}
|
||||
|
||||
public String saveImage(String uploadFolder, Long noticeId, MultipartFile file) throws IOException {
|
||||
String uploadDir = uploadFolder + noticeId;
|
||||
Path uploadPath = Paths.get(uploadDir);
|
||||
|
||||
if (!Files.exists(uploadPath)) {
|
||||
Files.createDirectories(uploadPath);
|
||||
}
|
||||
|
||||
// szukanie nazwy pliku
|
||||
String fileName = file.getOriginalFilename();
|
||||
if (fileName != null) {
|
||||
String extension = fileName.substring(fileName.lastIndexOf('.'));
|
||||
String baseName = fileName.substring(0, fileName.lastIndexOf('.'));
|
||||
|
||||
List<Path> filesInDirectory = Files.list(uploadPath)
|
||||
.filter(Files::isRegularFile)
|
||||
.toList();
|
||||
|
||||
int maxNumber = filesInDirectory.stream()
|
||||
.map(path -> path.getFileName().toString())
|
||||
.filter(name -> name.startsWith(baseName) && name.endsWith(extension))
|
||||
.map(name -> name.substring(baseName.length(), name.length() - extension.length()))
|
||||
.filter(number -> number.matches("\\d+"))
|
||||
.mapToInt(Integer::parseInt)
|
||||
.max()
|
||||
.orElse(0);
|
||||
|
||||
fileName = baseName + (maxNumber + 1) + extension;
|
||||
} else {
|
||||
throw new IOException("Nie można znaleźć nazwy pliku");
|
||||
}
|
||||
//koniec szukania nazwy pliku
|
||||
|
||||
Path filePath = uploadPath.resolve(fileName);
|
||||
Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);
|
||||
|
||||
Notice notice = noticeRepository.findById(noticeId)
|
||||
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + noticeId));
|
||||
List<String> images = notice.getImages();
|
||||
images.add(filePath.toString());
|
||||
notice.setImages(images);
|
||||
noticeRepository.save(notice);
|
||||
|
||||
return filePath.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user