99import org .springframework .beans .factory .annotation .Value ;
1010import org .springframework .stereotype .Component ;
1111
12- import java .io .BufferedReader ;
13- import java .io .FileReader ;
1412import java .io .IOException ;
13+ import java .nio .file .Files ;
14+ import java .nio .file .Paths ;
1515import java .time .LocalDate ;
1616import java .util .Properties ;
1717
@@ -31,12 +31,14 @@ public BirthdayService(@Value("${app.employee.file}") String filePath,
3131 }
3232
3333 public void sendGreetings (LocalDate today ) throws IOException , MessagingException {
34- BufferedReader in = new BufferedReader (new FileReader (filePath ));
35- String str = "" ;
36- str = in .readLine (); // skip header
37- while ((str = in .readLine ()) != null ) {
38- String [] employeeData = str .split (", " );
39- Employee employee = new Employee (employeeData [1 ], employeeData [0 ], employeeData [2 ], employeeData [3 ]);
34+
35+ final var employees = Files .readAllLines (Paths .get (filePath ))
36+ .stream ()
37+ .skip (1 ) // skip header
38+ .map (this ::parseLine )
39+ .toList ();
40+
41+ for (var employee : employees ) {
4042 if (employee .isBirthday (today )) {
4143 String recipient = employee .getEmail ();
4244 String body = "Happy Birthday, dear %NAME%" .replace ("%NAME%" , employee .getFirstName ());
@@ -46,13 +48,18 @@ public void sendGreetings(LocalDate today) throws IOException, MessagingExceptio
4648 }
4749 }
4850
51+ private Employee parseLine (String str ) {
52+ final var employeeData = str .split (", " );
53+ return new Employee (employeeData [1 ], employeeData [0 ], employeeData [2 ], employeeData [3 ]);
54+ }
55+
4956 private void sendMessage (String sender , String subject , String body , String recipient ) throws MessagingException {
50- Properties props = new Properties ();
57+ final var props = new Properties ();
5158 props .put ("mail.smtp.host" , smtpHost );
5259 props .put ("mail.smtp.port" , String .valueOf (smtpPort ));
53- Session session = Session .getInstance (props , null );
60+ final var session = Session .getInstance (props , null );
5461
55- Message msg = new MimeMessage (session );
62+ final var msg = new MimeMessage (session );
5663 msg .setFrom (new InternetAddress (sender ));
5764 msg .setRecipient (Message .RecipientType .TO , new InternetAddress (recipient ));
5865 msg .setSubject (subject );
0 commit comments