Ignore:
Timestamp:
06/20/24 11:57:13 (2 weeks ago)
Author:
223021 <daniel.ilievski.2@…>
Branches:
main
Children:
0f0add0
Parents:
befb988
Message:

Did more refactoring

Location:
jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/ApplicationServiceImpl.java

    rbefb988 r08f82ec  
    4141    public ApplicationServiceImpl(@Value("${file.upload-dir}") String uploadDir, UserRepository userRepository, ApplicationRepository applicationRepository, JobAdvertisementRepository jobAdvertisementRepository,
    4242                                  JobSeekerRepository jobSeekerRepository) {
    43         this.fileStorageLocation = Paths.get(uploadDir).toAbsolutePath().normalize();
     43        this.fileStorageLocation = Paths.get(uploadDir + "/applications").toAbsolutePath().normalize();
    4444
    4545        try {
     
    5858    public ApplicationDetailsDTO submitApplication(ApplicationDTO applicationDTO) {
    5959
     60        JobSeeker jobSeeker = jobSeekerRepository.findById(applicationDTO.getJobSeekerId())
     61                .orElseThrow(() -> new IllegalArgumentException("User not found."));
     62        JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(applicationDTO.getJobAdId())
     63                .orElseThrow(() -> new IllegalArgumentException("Job advertisement not found."));
     64
    6065        if (applicationDTO.getResumeFile().isEmpty()) {
    6166            throw new RuntimeException("Failed to store empty file.");
    6267        }
    63 
    64         Path targetLocation = this.fileStorageLocation.resolve(applicationDTO.getResumeFile().getOriginalFilename());
    65         try {
    66             Files.copy(applicationDTO.getResumeFile().getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);
    67         } catch (IOException e) {
    68             throw new RuntimeException(e);
    69         }
    70 
    71         JobSeeker jobSeeker = jobSeekerRepository.findById(applicationDTO.getJobSeekerId()).orElseThrow(() -> new IllegalArgumentException("User not found"));
    72         JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(applicationDTO.getJobAdId()).orElseThrow(() -> new IllegalArgumentException("Job Ad not found"));
    7368
    7469        List<String> answers = new ArrayList<>();
     
    7772        answers.add(applicationDTO.getAnswerThree());
    7873
    79         Application application = new Application(jobSeeker, jobAdvertisement, applicationDTO.getResumeFile().getOriginalFilename(), answers, applicationDTO.getMessageToRecruiter());
    80         applicationRepository.save(application);
     74        Application application = new Application(jobSeeker, jobAdvertisement,
     75                answers,applicationDTO.getMessageToRecruiter());
     76        application = applicationRepository.save(application);
     77
     78        Path filePath = this.fileStorageLocation.resolve(String.valueOf(application.getId())).resolve("resume");
     79        Path targetLocation = filePath.resolve(applicationDTO.getResumeFile().getOriginalFilename());
     80
     81        try {
     82            Files.createDirectories(filePath);
     83            Files.copy(applicationDTO.getResumeFile().getInputStream(), targetLocation);
     84        } catch (IOException e) {
     85            throw new RuntimeException(e);
     86        }
     87
     88        String relativePath = Paths.get("uploads","applications",String.valueOf(application.getId()),
     89                "resume", applicationDTO.getResumeFile().getOriginalFilename()).toString();
     90        application.setResumeFilePath(relativePath);
     91        application = applicationRepository.save(application);
     92
    8193        return Application.mapToApplicationDetailsDTO(application);
    8294    }
     
    95107
    96108    @Override
    97     public Resource loadResumeAsResource(String fileName) {
     109    public Resource loadResumeAsResource(Long applicationId) {
     110        Application application = applicationRepository.findById(applicationId).
     111                orElseThrow(() -> new IllegalArgumentException("Application not found"));
     112
     113        String relativeFilePath = application.getResumeFilePath();
     114        Path filePath = fileStorageLocation.getParent().getParent().resolve(relativeFilePath).normalize();
     115
    98116        try {
    99             Path filePath = fileStorageLocation.resolve(fileName).normalize();
    100117            Resource resource = new UrlResource(filePath.toUri());
    101118            if (resource.exists()) {
    102119                return resource;
    103120            } else {
    104                 throw new RuntimeException("File not found " + fileName);
     121                throw new RuntimeException("File not found: " + relativeFilePath);
    105122            }
    106123        } catch (IOException ex) {
    107             throw new RuntimeException("File not found " + fileName, ex);
     124            throw new RuntimeException("File path is invalid: " + relativeFilePath, ex);
    108125        }
    109126    }
  • jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/JobAdvertisementServiceImpl.java

    rbefb988 r08f82ec  
    1717
    1818import java.time.LocalDate;
    19 import java.time.LocalDateTime;
    2019import java.util.Comparator;
    2120import java.util.List;
     
    2423@RequiredArgsConstructor
    2524public class JobAdvertisementServiceImpl implements JobAdvertisementService {
    26     private final UserRepository userRepository;
    2725    private final JobAdvertisementRepository jobAdvertisementRepository;
    2826    private final RecruiterRepository recruiterRepository;
     
    3028    @Override
    3129    public JobAdDetailsDTO addJobAdvertisement(JobAdvertisementDTO jobAdvertisementDTO) {
    32         Recruiter recruiter = recruiterRepository.findById(jobAdvertisementDTO.getId()).orElseThrow(() -> new IllegalArgumentException("User not found"));
     30        Recruiter recruiter = recruiterRepository.findById(jobAdvertisementDTO.getId())
     31                .orElseThrow(() -> new IllegalArgumentException("User not found"));
    3332        JobAdvertisement jobAdvertisement = new JobAdvertisement(
    3433                recruiter,
     
    4746    @Override
    4847    public JobAdDetailsDTO editJobAdvertisement(Long id, JobAdvertisementDTO jobAdvertisementDTO) {
    49         JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Job Advertisement not found"));
     48        JobAdvertisement jobAdvertisement = jobAdvertisementRepository.findById(id)
     49                .orElseThrow(() -> new IllegalArgumentException("Job Advertisement not found"));
    5050        jobAdvertisement.setTitle(jobAdvertisementDTO.getTitle());
    5151        jobAdvertisement.setDescription(jobAdvertisementDTO.getDescription());
  • jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/RecruiterServiceImpl.java

    rbefb988 r08f82ec  
    3232        this.recruiterRepository = recruiterRepository;
    3333
    34         this.logoStorageLocation = Paths.get(uploadDir + "/logo").toAbsolutePath().normalize();
     34        this.logoStorageLocation = Paths.get(uploadDir + "/recruiters").toAbsolutePath().normalize();
    3535        try {
    3636            Files.createDirectories(this.logoStorageLocation);
     
    7070    public void submitLogo(Long recruiterId, MultipartFile logoFile) {
    7171
    72         Path recruiterLogoDir = this.logoStorageLocation.resolve(String.valueOf(recruiterId));
     72        Path recruiterLogoDir = this.logoStorageLocation.resolve(String.valueOf(recruiterId)).resolve("logos");
    7373        try {
    7474            Files.createDirectories(recruiterLogoDir);
     
    8282                Recruiter recruiter = recruiterRepository.findById(recruiterId)
    8383                        .orElseThrow(() -> new RuntimeException("Recruiter not found"));
    84                 String relativePath = Paths.get("uploads", "logo", String.valueOf(recruiterId), originalFilename).toString();
     84                String relativePath = Paths.get("uploads","recruiters", String.valueOf(recruiterId), "logos", originalFilename).toString();
    8585                recruiter.setLogoFilePath(relativePath);
    8686                recruiterRepository.save(recruiter);
Note: See TracChangeset for help on using the changeset viewer.