Skip to content

Commit ef2b813

Browse files
committed
MockEmailService e SmtpEmailService, padrões Strategy e Template Method
1 parent 1779297 commit ef2b813

File tree

11 files changed

+120
-4
lines changed

11 files changed

+120
-4
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@
5858
<artifactId>mysql-connector-java</artifactId>
5959
</dependency>
6060

61+
<dependency>
62+
<groupId>org.springframework.boot</groupId>
63+
<artifactId>spring-boot-starter-mail</artifactId>
64+
</dependency>
65+
6166
</dependencies>
6267

6368
<build>

src/main/java/jdc/loja/config/DevConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.springframework.context.annotation.Profile;
1010

1111
import jdc.loja.services.DBService;
12+
import jdc.loja.services.EmailService;
13+
import jdc.loja.services.SmtpEmailService;
1214

1315
@Configuration
1416
@Profile("dev")
@@ -28,4 +30,9 @@ public boolean instantiateDatabase() throws ParseException {
2830
dbService.instantiateTestDatabase();
2931
return true;
3032
}
33+
34+
@Bean
35+
public EmailService emailService() {
36+
return new SmtpEmailService();
37+
}
3138
}

src/main/java/jdc/loja/config/TestConfig.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.springframework.context.annotation.Profile;
99

1010
import jdc.loja.services.DBService;
11+
import jdc.loja.services.EmailService;
12+
import jdc.loja.services.MockEmailService;
1113

1214
@Configuration
1315
@Profile("test")
@@ -21,4 +23,9 @@ public boolean instantiateDatabase() throws ParseException {
2123
dbService.instantiateTestDatabase();
2224
return true;
2325
}
26+
27+
@Bean
28+
public EmailService emailService() {
29+
return new MockEmailService();
30+
}
2431
}

src/main/java/jdc/loja/domain/Pedido.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,5 +160,4 @@ public String toString() {
160160
builder.append(nf.format(getValorTotal()));
161161
return builder.toString();
162162
}
163-
164163
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package jdc.loja.services;
2+
3+
import java.util.Date;
4+
5+
import org.springframework.beans.factory.annotation.Value;
6+
import org.springframework.mail.SimpleMailMessage;
7+
8+
import jdc.loja.domain.Pedido;
9+
10+
public abstract class AbstractEmailService implements EmailService {
11+
12+
@Value("${default.sender}")
13+
private String sender;
14+
15+
@Override
16+
public void sendOrderConfirmationEmail(Pedido obj) {
17+
SimpleMailMessage sm = prepareSimpleMailMessageFromPedido(obj);
18+
sendEmail(sm);
19+
}
20+
21+
protected SimpleMailMessage prepareSimpleMailMessageFromPedido(Pedido obj) {
22+
SimpleMailMessage sm = new SimpleMailMessage();
23+
sm.setTo(obj.getCliente().getEmail());
24+
sm.setFrom(sender);
25+
sm.setSubject("Pedido confirmado! Código: " + obj.getId());
26+
sm.setSentDate(new Date(System.currentTimeMillis()));
27+
sm.setText(obj.toString());
28+
return sm;
29+
}
30+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package jdc.loja.services;
2+
3+
import org.springframework.mail.SimpleMailMessage;
4+
5+
import jdc.loja.domain.Pedido;
6+
7+
public interface EmailService {
8+
9+
void sendOrderConfirmationEmail(Pedido obj);
10+
11+
void sendEmail(SimpleMailMessage msg);
12+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package jdc.loja.services;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.mail.SimpleMailMessage;
6+
7+
public class MockEmailService extends AbstractEmailService {
8+
9+
private static final Logger LOG = LoggerFactory.getLogger(MockEmailService.class);
10+
11+
@Override
12+
public void sendEmail(SimpleMailMessage msg) {
13+
LOG.info("Simulando envio de Email");
14+
LOG.info(msg.toString());
15+
LOG.info("Email enviado");
16+
}
17+
}

src/main/java/jdc/loja/services/PedidoService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public class PedidoService {
3737
@Autowired
3838
private ClienteService cliServ;
3939

40+
@Autowired
41+
private EmailService emailServ;
42+
4043
public Pedido find(Integer id) {
4144
Optional<Pedido> obj = rep.findById(id);
4245
return obj.orElseThrow(() -> new ObjectNotFoundException(
@@ -64,7 +67,7 @@ public Pedido insert(Pedido obj) {
6467
ip.setPedido(obj);
6568
}
6669
itemPedRep.saveAll(obj.getItens());
67-
System.out.println(obj);
70+
emailServ.sendOrderConfirmationEmail(obj);
6871
return obj;
6972
}
7073

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package jdc.loja.services;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.mail.MailSender;
7+
import org.springframework.mail.SimpleMailMessage;
8+
9+
public class SmtpEmailService extends AbstractEmailService{
10+
11+
private static final Logger LOG = LoggerFactory.getLogger(SmtpEmailService.class);
12+
13+
@Autowired
14+
private MailSender mailSender;
15+
16+
@Override
17+
public void sendEmail(SimpleMailMessage msg) {
18+
LOG.info("Enviando Email...");
19+
mailSender.send(msg);
20+
LOG.info("Email enviado");
21+
}
22+
23+
}

src/main/resources/application-dev.properties

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,14 @@ spring.datasource.password=
44

55
spring.jpa.hibernate.ddl-auto=create
66
spring.jpa.show-sql=true
7-
spring.jpa.properties.hibernate.form786at_sql=true
7+
spring.jpa.properties.hibernate.form786at_sql=true
8+
9+
spring.mail.host=smtp.gmail.com
10+
spring.mail.username=email
11+
spring.mail.password=senha
12+
spring.mail.properties.mail.smtp.auth=true
13+
spring.mail.properties.mail.smtp.socketFactory.port=465
14+
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
15+
spring.mail.properties.mail.smtp.socketFactory.fallback=false
16+
spring.mail.properties.mail.smtp.starttls.enable=true
17+
spring.mail.properties.mail.smtp.ssl.enable=true

0 commit comments

Comments
 (0)