42
42
import java .io .ByteArrayOutputStream ;
43
43
import java .io .IOException ;
44
44
import java .util .*;
45
+ import java .util .concurrent .Executor ;
46
+ import java .util .concurrent .Executors ;
45
47
import java .util .concurrent .atomic .AtomicInteger ;
46
48
import java .util .stream .Collectors ;
47
49
@@ -57,23 +59,21 @@ public class CustomMessageManager {
57
59
private final TicketReservationManager ticketReservationManager ;
58
60
private final NotificationManager notificationManager ;
59
61
private final TicketCategoryRepository ticketCategoryRepository ;
60
- private final FileUploadManager fileUploadManager ;
62
+ private final Executor sendMessagesExecutor = Executors . newSingleThreadExecutor () ;
61
63
62
64
@ Autowired
63
65
public CustomMessageManager (TemplateManager templateManager ,
64
66
EventManager eventManager ,
65
67
TicketRepository ticketRepository ,
66
68
TicketReservationManager ticketReservationManager ,
67
69
NotificationManager notificationManager ,
68
- TicketCategoryRepository ticketCategoryRepository ,
69
- FileUploadManager fileUploadManager ) {
70
+ TicketCategoryRepository ticketCategoryRepository ) {
70
71
this .templateManager = templateManager ;
71
72
this .eventManager = eventManager ;
72
73
this .ticketRepository = ticketRepository ;
73
74
this .ticketReservationManager = ticketReservationManager ;
74
75
this .notificationManager = notificationManager ;
75
76
this .ticketCategoryRepository = ticketCategoryRepository ;
76
- this .fileUploadManager = fileUploadManager ;
77
77
}
78
78
79
79
public Map <String , Object > generatePreview (String eventName , Optional <Integer > categoryId , List <MessageModification > input , String username ) {
@@ -84,13 +84,16 @@ public Map<String, Object> generatePreview(String eventName, Optional<Integer> c
84
84
return result ;
85
85
}
86
86
87
- public int sendMessages (String eventName , Optional <Integer > categoryId , List <MessageModification > input , String username ) {
87
+ public void sendMessages (String eventName , Optional <Integer > categoryId , List <MessageModification > input , String username ) {
88
+
88
89
Event event = eventManager .getSingleEvent (eventName , username );
89
90
preview (event , input , username );//dry run for checking the syntax
90
91
Organization organization = eventManager .loadOrganizer (event , username );
91
92
AtomicInteger counter = new AtomicInteger ();
92
93
Map <String , List <MessageModification >> byLanguage = input .stream ().collect (Collectors .groupingBy (m -> m .getLocale ().getLanguage ()));
93
- categoryId .map (id -> ticketRepository .findConfirmedByCategoryId (event .getId (), id ))
94
+
95
+ sendMessagesExecutor .execute (() -> {
96
+ categoryId .map (id -> ticketRepository .findConfirmedByCategoryId (event .getId (), id ))
94
97
.orElseGet (() -> ticketRepository .findAllConfirmed (event .getId ()))
95
98
.stream ()
96
99
.filter (t -> isNotBlank (t .getFullName ()) && isNotBlank (t .getEmail ()))
@@ -123,7 +126,7 @@ public int sendMessages(String eventName, Optional<Integer> categoryId, List<Mes
123
126
counter .incrementAndGet ();
124
127
notificationManager .sendSimpleEmail (event , triple .getMiddle (), subject , () -> text , attachments );
125
128
});
126
- return counter . get ( );
129
+ } );
127
130
128
131
}
129
132
0 commit comments