Skip to content

Commit

Permalink
refactor: update caching strategy and improve error handling in analy…
Browse files Browse the repository at this point in the history
…tics and email services
  • Loading branch information
LeonardoMeireles55 committed Feb 9, 2025
1 parent e56e446 commit 8ea69a7
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public List<GroupedMeanAndStdByLevelDTO> returnMeanAndStandardDeviationForGroups
.toList();
}

@Cacheable(value = "meanAndStdDeviationCache",
@Cacheable(value = "meanAndStdDeviation",
key = "{#name, #level, #dateStart, #dateEnd, #pageable.pageNumber, #pageable.pageSize}")
public MeanAndStdDeviationDTO calculateMeanAndStandardDeviation(String name, String level,
LocalDateTime dateStart, LocalDateTime dateEnd, Pageable pageable) {
Expand Down Expand Up @@ -213,7 +213,10 @@ public AnalyticsDTO findOneById(Long id) {
}

@Override
@CacheEvict(value = "analyticsByNameAndDateRange", allEntries = true)
@CacheEvict(
value = {"analyticsByNameAndDateRange", "meanAndStdDeviation",
"calculateGroupedMeanAndStandardDeviation", "AnalyticsByNameWithPagination"},
allEntries = true)
public void saveNewAnalyticsRecords(List<AnalyticsDTO> valuesOfLevelsList) {

var newRecords = valuesOfLevelsList.stream().filter(this::isAnalyticsNonExistent)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.time.LocalDateTime;
import java.util.List;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -34,8 +33,7 @@ public List<AnalyticsDTO> findAnalyticsByNameAndLevel(Pageable pageable, String
this.convertLevel(level));
}

@Cacheable(value = "analyticsByNameLevelAndDate",
key = "{#name, #level, #dateStart, #dateEnd, #pageable.pageNumber, #pageable.pageSize}")

@Override
public List<AnalyticsDTO> findAnalyticsByNameAndLevelAndDate(String name, String level,
LocalDateTime dateStart, LocalDateTime dateEnd, Pageable pageable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.time.LocalDateTime;
import java.util.List;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -34,8 +33,7 @@ public List<AnalyticsDTO> findAnalyticsByNameAndLevel(Pageable pageable, String
this.convertLevel(level));
}

@Cacheable(value = "analyticsByNameLevelAndDate",
key = "{#name, #level, #dateStart, #dateEnd, #pageable.pageNumber, #pageable.pageSize}")

@Override
public List<AnalyticsDTO> findAnalyticsByNameAndLevelAndDate(String name, String level,
LocalDateTime dateStart, LocalDateTime dateEnd, Pageable pageable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.time.LocalDateTime;
import java.util.List;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -34,8 +33,7 @@ public List<AnalyticsDTO> findAnalyticsByNameAndLevel(Pageable pageable, String
this.convertLevel(level));
}

@Cacheable(value = "analyticsByNameLevelAndDate",
key = "{#name, #level, #dateStart, #dateEnd, #pageable.pageNumber, #pageable.pageSize}")

@Override
public List<AnalyticsDTO> findAnalyticsByNameAndLevelAndDate(String name, String level,
LocalDateTime dateStart, LocalDateTime dateEnd, Pageable pageable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import jakarta.mail.internet.MimeMessage;
import leonardo.labutilities.qualitylabpro.dtos.analytics.AnalyticsDTO;
import leonardo.labutilities.qualitylabpro.dtos.email.EmailDTO;
import leonardo.labutilities.qualitylabpro.utils.exception.CustomGlobalErrorHandling.EmailSendingException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -78,7 +79,7 @@ public void sendHtmlEmailWithoutBcc(EmailDTO emailDTO) {

} catch (MessagingException e) {
log.error("Failed to send HTML identifier: {}", e.getMessage(), e);
throw new RuntimeException("Email sending failed", e);
throw new EmailSendingException("Email sending failed", e);
}
}

Expand Down Expand Up @@ -115,7 +116,7 @@ public void sendHtmlEmail(EmailDTO emailDTO) {

} catch (MessagingException e) {
log.error("Failed to send HTML identifier: {}", e.getMessage(), e);
throw new RuntimeException("Email sending failed", e);
throw new EmailSendingException("Email sending failed", e);
}
}

Expand Down Expand Up @@ -151,7 +152,7 @@ public void sendFailedAnalyticsNotification(List<AnalyticsDTO> failedRecords,
log.info("Failed analytics notification sent for {} records", failedRecords.size());
} catch (MessagingException e) {
log.error("Failed to send analytics notification identifier", e);
throw new RuntimeException("Failed to send analytics notification", e);
throw new EmailSendingException("Failed to send analytics notification", e);
}
}

Expand Down

0 comments on commit 8ea69a7

Please sign in to comment.