1
1
package com .codebykavindu .bookstore .orders .domain ;
2
2
3
+ import com .codebykavindu .bookstore .orders .domain .models .OrderCancelledEvent ;
3
4
import com .codebykavindu .bookstore .orders .domain .models .OrderCreatedEvent ;
5
+ import com .codebykavindu .bookstore .orders .domain .models .OrderDeliveredEvent ;
6
+ import com .codebykavindu .bookstore .orders .domain .models .OrderErrorEvent ;
4
7
import com .codebykavindu .bookstore .orders .domain .models .OrderEventType ;
5
8
import com .fasterxml .jackson .core .JsonProcessingException ;
6
9
import com .fasterxml .jackson .databind .ObjectMapper ;
@@ -42,6 +45,36 @@ void save(OrderCreatedEvent event) {
42
45
this .orderEventRepository .save (orderEvent );
43
46
}
44
47
48
+ void save (OrderDeliveredEvent event ) {
49
+ OrderEventEntity orderEvent = new OrderEventEntity ();
50
+ orderEvent .setEventId (event .eventId ());
51
+ orderEvent .setEventType (OrderEventType .ORDER_DELIVERED );
52
+ orderEvent .setOrderNumber (event .orderNumber ());
53
+ orderEvent .setCreatedAt (event .createdAt ());
54
+ orderEvent .setPayload (toJsonPayload (event ));
55
+ this .orderEventRepository .save (orderEvent );
56
+ }
57
+
58
+ void save (OrderCancelledEvent event ) {
59
+ OrderEventEntity orderEvent = new OrderEventEntity ();
60
+ orderEvent .setEventId (event .eventId ());
61
+ orderEvent .setEventType (OrderEventType .ORDER_CANCELLED );
62
+ orderEvent .setOrderNumber (event .orderNumber ());
63
+ orderEvent .setCreatedAt (event .createdAt ());
64
+ orderEvent .setPayload (toJsonPayload (event ));
65
+ this .orderEventRepository .save (orderEvent );
66
+ }
67
+
68
+ void save (OrderErrorEvent event ) {
69
+ OrderEventEntity orderEvent = new OrderEventEntity ();
70
+ orderEvent .setEventId (event .eventId ());
71
+ orderEvent .setEventType (OrderEventType .ORDER_PROCESSING_FAILED );
72
+ orderEvent .setOrderNumber (event .orderNumber ());
73
+ orderEvent .setCreatedAt (event .createdAt ());
74
+ orderEvent .setPayload (toJsonPayload (event ));
75
+ this .orderEventRepository .save (orderEvent );
76
+ }
77
+
45
78
public void publishOrderEvents () {
46
79
Sort sort = Sort .by ("createdAt" ).ascending ();
47
80
List <OrderEventEntity > events = orderEventRepository .findAll (sort );
@@ -59,6 +92,20 @@ private void publishEvent(OrderEventEntity event) {
59
92
OrderCreatedEvent orderCreatedEvent = fromJsonPayload (event .getPayload (), OrderCreatedEvent .class );
60
93
orderEventPublisher .publish (orderCreatedEvent );
61
94
break ;
95
+ case ORDER_DELIVERED :
96
+ OrderDeliveredEvent orderDeliveredEvent =
97
+ fromJsonPayload (event .getPayload (), OrderDeliveredEvent .class );
98
+ orderEventPublisher .publish (orderDeliveredEvent );
99
+ break ;
100
+ case ORDER_CANCELLED :
101
+ OrderCancelledEvent orderCancelledEvent =
102
+ fromJsonPayload (event .getPayload (), OrderCancelledEvent .class );
103
+ orderEventPublisher .publish (orderCancelledEvent );
104
+ break ;
105
+ case ORDER_PROCESSING_FAILED :
106
+ OrderErrorEvent orderErrorEvent = fromJsonPayload (event .getPayload (), OrderErrorEvent .class );
107
+ orderEventPublisher .publish (orderErrorEvent );
108
+ break ;
62
109
default :
63
110
log .warn ("Unknown Event Type: {}" , eventType );
64
111
}
0 commit comments