Skip to content
This repository has been archived by the owner on Sep 16, 2020. It is now read-only.

Commit

Permalink
chore: changed services to interfaces
Browse files Browse the repository at this point in the history
closes #13
  • Loading branch information
matthieusb committed Feb 25, 2018
1 parent a206d5b commit 9043e3e
Show file tree
Hide file tree
Showing 11 changed files with 507 additions and 392 deletions.
41 changes: 4 additions & 37 deletions src/main/java/msb/shortcut/master/service/AuditEventService.java
Original file line number Diff line number Diff line change
@@ -1,49 +1,16 @@
package msb.shortcut.master.service;

import msb.shortcut.master.config.audit.AuditEventConverter;
import msb.shortcut.master.repository.PersistenceAuditEventRepository;
import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.Instant;
import java.util.Optional;

/**
* Service for managing audit events.
* <p>
* This is the default implementation to support SpringBoot Actuator AuditEventRepository
*/
@Service
@Transactional
public class AuditEventService {
public interface AuditEventService {
Page<AuditEvent> findAll(Pageable pageable);

private final PersistenceAuditEventRepository persistenceAuditEventRepository;
Page<AuditEvent> findByDates(Instant fromDate, Instant toDate, Pageable pageable);

private final AuditEventConverter auditEventConverter;

public AuditEventService(
PersistenceAuditEventRepository persistenceAuditEventRepository,
AuditEventConverter auditEventConverter) {

this.persistenceAuditEventRepository = persistenceAuditEventRepository;
this.auditEventConverter = auditEventConverter;
}

public Page<AuditEvent> findAll(Pageable pageable) {
return persistenceAuditEventRepository.findAll(pageable)
.map(auditEventConverter::convertToAuditEvent);
}

public Page<AuditEvent> findByDates(Instant fromDate, Instant toDate, Pageable pageable) {
return persistenceAuditEventRepository.findAllByAuditEventDateBetween(fromDate, toDate, pageable)
.map(auditEventConverter::convertToAuditEvent);
}

public Optional<AuditEvent> find(Long id) {
return Optional.ofNullable(persistenceAuditEventRepository.findOne(id)).map
(auditEventConverter::convertToAuditEvent);
}
Optional<AuditEvent> find(Long id);
}
96 changes: 6 additions & 90 deletions src/main/java/msb/shortcut/master/service/MailService.java
Original file line number Diff line number Diff line change
@@ -1,105 +1,21 @@
package msb.shortcut.master.service;

import msb.shortcut.master.domain.User;

import io.github.jhipster.config.JHipsterProperties;

import org.apache.commons.lang3.CharEncoding;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.MessageSource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring4.SpringTemplateEngine;

import javax.mail.internet.MimeMessage;
import java.util.Locale;

/**
* Service for sending emails.
* <p>
* We use the @Async annotation to send emails asynchronously.
*/
@Service
public class MailService {

private final Logger log = LoggerFactory.getLogger(MailService.class);

private static final String USER = "user";

private static final String BASE_URL = "baseUrl";

private final JHipsterProperties jHipsterProperties;

private final JavaMailSender javaMailSender;

private final MessageSource messageSource;

private final SpringTemplateEngine templateEngine;

public MailService(JHipsterProperties jHipsterProperties, JavaMailSender javaMailSender,
MessageSource messageSource, SpringTemplateEngine templateEngine) {

this.jHipsterProperties = jHipsterProperties;
this.javaMailSender = javaMailSender;
this.messageSource = messageSource;
this.templateEngine = templateEngine;
}

public interface MailService {
@Async
public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
log.debug("Send email[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}",
isMultipart, isHtml, to, subject, content);

// Prepare message using a Spring helper
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, CharEncoding.UTF_8);
message.setTo(to);
message.setFrom(jHipsterProperties.getMail().getFrom());
message.setSubject(subject);
message.setText(content, isHtml);
javaMailSender.send(mimeMessage);
log.debug("Sent email to User '{}'", to);
} catch (Exception e) {
if (log.isDebugEnabled()) {
log.warn("Email could not be sent to user '{}'", to, e);
} else {
log.warn("Email could not be sent to user '{}': {}", to, e.getMessage());
}
}
}
void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml);

@Async
public void sendEmailFromTemplate(User user, String templateName, String titleKey) {
Locale locale = Locale.forLanguageTag(user.getLangKey());
Context context = new Context(locale);
context.setVariable(USER, user);
context.setVariable(BASE_URL, jHipsterProperties.getMail().getBaseUrl());
String content = templateEngine.process(templateName, context);
String subject = messageSource.getMessage(titleKey, null, locale);
sendEmail(user.getEmail(), subject, content, false, true);

}
void sendEmailFromTemplate(User user, String templateName, String titleKey);

@Async
public void sendActivationEmail(User user) {
log.debug("Sending activation email to '{}'", user.getEmail());
sendEmailFromTemplate(user, "activationEmail", "email.activation.title");
}
void sendActivationEmail(User user);

@Async
public void sendCreationEmail(User user) {
log.debug("Sending creation email to '{}'", user.getEmail());
sendEmailFromTemplate(user, "creationEmail", "email.activation.title");
}
void sendCreationEmail(User user);

@Async
public void sendPasswordResetMail(User user) {
log.debug("Sending password reset email to '{}'", user.getEmail());
sendEmailFromTemplate(user, "passwordResetEmail", "email.reset.title");
}
void sendPasswordResetMail(User user);
}
Loading

0 comments on commit 9043e3e

Please sign in to comment.