This repository has been archived by the owner on Sep 16, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: changed services to interfaces
closes #13
- Loading branch information
1 parent
a206d5b
commit 9043e3e
Showing
11 changed files
with
507 additions
and
392 deletions.
There are no files selected for viewing
41 changes: 4 additions & 37 deletions
41
src/main/java/msb/shortcut/master/service/AuditEventService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
96
src/main/java/msb/shortcut/master/service/MailService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} |
Oops, something went wrong.