Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
order-management-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ascend
order-management-backend
Commits
cbe6c7cf
Commit
cbe6c7cf
authored
May 11, 2021
by
Shanelle Valencia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[AFP-53]
✨
Persist order info from warehouse to db [
@svalencia
]
parent
1095d6fa
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
49 additions
and
59 deletions
+49
-59
OrderController.java
...a/com/afp/ordermanagement/controller/OrderController.java
+4
-0
Item.java
src/main/java/com/afp/ordermanagement/model/Item.java
+4
-0
Order.java
src/main/java/com/afp/ordermanagement/model/Order.java
+5
-4
Receiver.java
...om/afp/ordermanagement/reactivekafkaservice/Receiver.java
+27
-47
Sender.java
.../com/afp/ordermanagement/reactivekafkaservice/Sender.java
+0
-7
OrderService.java
...in/java/com/afp/ordermanagement/service/OrderService.java
+9
-1
No files found.
src/main/java/com/afp/ordermanagement/controller/OrderController.java
View file @
cbe6c7cf
package
com
.
afp
.
ordermanagement
.
controller
;
package
com
.
afp
.
ordermanagement
.
controller
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.reactivekafkaservice.Receiver
;
import
com.afp.ordermanagement.reactivekafkaservice.Sender
;
import
com.afp.ordermanagement.reactivekafkaservice.Sender
;
import
com.afp.ordermanagement.service.OrderService
;
import
com.afp.ordermanagement.service.OrderService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -21,6 +22,9 @@ public class OrderController {
...
@@ -21,6 +22,9 @@ public class OrderController {
@Autowired
@Autowired
Sender
sender
;
Sender
sender
;
@Autowired
Receiver
receiver
;
/**
/**
* DESC - Persisting order information in the database and sending the
* DESC - Persisting order information in the database and sending the
...
...
src/main/java/com/afp/ordermanagement/model/Item.java
View file @
cbe6c7cf
package
com
.
afp
.
ordermanagement
.
model
;
package
com
.
afp
.
ordermanagement
.
model
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Objects
;
import
java.util.Objects
;
@Data
@Data
@Getter
@Setter
public
class
Item
{
public
class
Item
{
private
String
itemId
;
private
String
itemId
;
...
...
src/main/java/com/afp/ordermanagement/model/Order.java
View file @
cbe6c7cf
...
@@ -3,17 +3,21 @@ package com.afp.ordermanagement.model;
...
@@ -3,17 +3,21 @@ package com.afp.ordermanagement.model;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.ToString
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
@Data
@Data
@AllArgsConstructor
@AllArgsConstructor
@Document
(
collection
=
"orders"
)
@Document
(
collection
=
"orders"
)
public
class
Order
{
public
class
Order
{
@Id
@Id
private
String
id
;
private
String
id
;
...
@@ -32,9 +36,6 @@ public class Order {
...
@@ -32,9 +36,6 @@ public class Order {
public
Order
(){
public
Order
(){
}
}
public
Order
(
OrderStatus
status
)
{
this
.
orderStatus
=
status
;
}
}
}
src/main/java/com/afp/ordermanagement/reactivekafkaservice/Receiver.java
View file @
cbe6c7cf
package
com
.
afp
.
ordermanagement
.
reactivekafkaservice
;
package
com
.
afp
.
ordermanagement
.
reactivekafkaservice
;
import
com.afp.ordermanagement.controller.OrderController
;
import
com.afp.ordermanagement.model.Item
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.OrderStatus
;
import
com.afp.ordermanagement.model.OrderStatus
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.service.OrderService
;
import
com.afp.ordermanagement.service.OrderService
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -14,11 +17,9 @@ import org.springframework.stereotype.Service;
...
@@ -14,11 +17,9 @@ import org.springframework.stereotype.Service;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
reactor.core.publisher.Mono
;
import
reactor.kafka.receiver.KafkaReceiver
;
import
reactor.kafka.receiver.KafkaReceiver
;
import
reactor.kafka.receiver.ReceiverRecord
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
@Service
@Service
@Slf4j
@Slf4j
...
@@ -40,70 +41,49 @@ public class Receiver {
...
@@ -40,70 +41,49 @@ public class Receiver {
kafkaReceiver
.
receive
()
kafkaReceiver
.
receive
()
.
doOnNext
(
record
->
System
.
out
.
println
(
record
))
.
doOnNext
(
record
->
System
.
out
.
println
(
record
))
.
doOnNext
(
record
->
log
.
info
(
"record.value(): {} "
,
record
.
value
()))
.
doOnNext
(
record
->
log
.
info
(
"record.value(): {} "
,
record
.
value
()))
.
doOnNext
(
record
->
onOrderStatusReceived
(
record
.
value
()))
.
doOnNext
(
record
->
updateOrderStatus
(
record
.
value
()))
.
doOnError
(
throwable
->
System
.
out
.
println
(
throwable
.
getMessage
()))
.
doOnError
(
throwable
->
System
.
out
.
println
(
throwable
.
getMessage
()))
.
subscribe
();
.
subscribe
();
}
}
private
void
onOrderStatusReceived
(
String
orderStatusStr
)
{
private
void
updateOrderStatus
(
String
orderStatusStr
)
{
try
{
try
{
//deserialize
string
into java object using ObjectMapper
//deserialize
kafka message
into java object using ObjectMapper
ObjectMapper
objectMapper
=
new
ObjectMapper
();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
Map
<
String
,
String
>
orderStatus
=
objectMapper
.
readValue
(
orderStatusStr
,
Map
.
class
);
//Map<String, String> orderStatus = objectMapper.readValue(orderStatusStr, Map.class);
String
id
=
orderStatus
.
get
(
"id"
);
Order
order
=
objectMapper
.
readValue
(
orderStatusStr
,
Order
.
class
);
String
status
=
orderStatus
.
get
(
"orderStatus"
).
toUpperCase
(
Locale
.
ROOT
);
log
.
info
(
"ORDER objectMapper {}"
,
order
);
// updateOrderStatus(id, status);
String
orderId
=
order
.
getId
();
Order
newOrder
=
new
Order
(
OrderStatus
.
valueOf
(
status
));
Mono
<
Order
>
updated
=
orderService
.
updateOrderByOrderId
(
orderId
,
order
);
Mono
<
Order
>
updateOrder
=
orderService
.
updateOrderByOrderId
(
id
,
newOrder
);
updated
.
block
();
updateOrder
.
subscribe
();
log
.
info
(
"orderStatus: {}"
,
orderStatus
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"Caught error"
,
e
);
log
.
error
(
"Caught error"
,
e
);
}
}
}
}
// private void updateOrderStatus(String orderId, String orderStatus) {
// if (checkExistingOrder(orderId)) {
// log.info("Updating {} with status {}", orderId, orderStatus);
// Order newOrder = new Order(OrderStatus.valueOf(orderStatus));
// Mono<Order> updateOrder = orderService.updateOrderByOrderId(orderId, newOrder);
// updateOrder.subscribe();
//// updateOrder.block(); //subscribe vs block?
// }
// }
private
boolean
checkExistingOrder
(
String
orderId
)
{
private
boolean
checkExistingOrder
(
String
orderId
)
{
// Flux<Order> orders = orderService.getAllOrders();
Flux
<
Order
>
orders
=
orderService
.
getAllOrders
();
// List<Order> orderList = orders.collectList().block();
List
<
Order
>
orderList
=
orders
.
collectList
().
block
();
// Order res = orderList.stream()
Order
res
=
orderList
.
stream
()
// .filter(order -> orderId.equals(order.getId()))
.
filter
(
order
->
orderId
.
equals
(
order
.
getId
()))
// .findAny()
.
findAny
()
// .orElse(null);
.
orElse
(
null
);
Mono
<
Order
>
order
=
orderRepository
.
findById
(
orderId
);
if
(
res
==
null
)
{
// if (res == null) {
// log.error("Order {} not found", orderId);
// return false;
// }
log
.
info
(
"ORDER MONO"
);
log
.
info
(
String
.
valueOf
(
order
));
if
(
order
==
null
)
{
log
.
error
(
"Order {} not found"
,
orderId
);
log
.
error
(
"Order {} not found"
,
orderId
);
return
false
;
return
false
;
}
else
{
}
log
.
info
(
"Order exists on the database"
);
log
.
info
(
"Order exists on the database"
);
return
true
;
return
true
;
}
}
}
}
}
src/main/java/com/afp/ordermanagement/reactivekafkaservice/Sender.java
View file @
cbe6c7cf
...
@@ -39,11 +39,4 @@ public class Sender {
...
@@ -39,11 +39,4 @@ public class Sender {
}
}
// public void sendUpdatedStatus(String id, String status) {
// log.info(String.format("Sender sending updated status for ordernumber: %s", id));
// ProducerRecord<String, String> stat = new ProducerRecord<>(ORDER_TOPIC, status);
//
// }
}
}
src/main/java/com/afp/ordermanagement/service/OrderService.java
View file @
cbe6c7cf
package
com
.
afp
.
ordermanagement
.
service
;
package
com
.
afp
.
ordermanagement
.
service
;
import
com.afp.ordermanagement.model.Item
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.Order
;
import
com.afp.ordermanagement.model.OrderStatus
;
import
com.afp.ordermanagement.model.OrderStatus
;
import
com.afp.ordermanagement.repository.OrderRepository
;
import
com.afp.ordermanagement.repository.OrderRepository
;
...
@@ -8,6 +9,10 @@ import org.springframework.stereotype.Service;
...
@@ -8,6 +9,10 @@ import org.springframework.stereotype.Service;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
reactor.core.publisher.Mono
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
@Service
@Service
public
class
OrderService
{
public
class
OrderService
{
...
@@ -40,6 +45,7 @@ public class OrderService {
...
@@ -40,6 +45,7 @@ public class OrderService {
}
}
public
Mono
<
Order
>
updateOrderByOrderId
(
String
orderId
,
Order
newOrder
){
public
Mono
<
Order
>
updateOrderByOrderId
(
String
orderId
,
Order
newOrder
){
return
orderRepository
.
findById
(
orderId
)
return
orderRepository
.
findById
(
orderId
)
.
flatMap
(
existingOrder
->
{
.
flatMap
(
existingOrder
->
{
existingOrder
.
setCustomerAddress
(
newOrder
.
getCustomerAddress
());
existingOrder
.
setCustomerAddress
(
newOrder
.
getCustomerAddress
());
...
@@ -47,8 +53,10 @@ public class OrderService {
...
@@ -47,8 +53,10 @@ public class OrderService {
existingOrder
.
setOrderTrackingCode
(
newOrder
.
getOrderTrackingCode
());
existingOrder
.
setOrderTrackingCode
(
newOrder
.
getOrderTrackingCode
());
existingOrder
.
setOrderItems
(
newOrder
.
getOrderItems
());
existingOrder
.
setOrderItems
(
newOrder
.
getOrderItems
());
existingOrder
.
setOrderStatus
(
newOrder
.
getOrderStatus
());
existingOrder
.
setOrderStatus
(
newOrder
.
getOrderStatus
());
existingOrder
.
setOrderItems
(
newOrder
.
getOrderItems
());
return
orderRepository
.
save
(
existingOrder
);
return
orderRepository
.
save
(
existingOrder
);
});
});
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment