Commit fb36840a authored by Ramakanth Dhane's avatar Ramakanth Dhane

OMD-04 - Generate random orders-Bug Fixes

parent 0b7036cb
......@@ -2,33 +2,38 @@ package com.nisum.omd;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadLocalRandom;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.nisum.omd.domain.Order;
import com.nisum.omd.service.OmdProducerService;
import com.nisum.omd.service.RandomDataGeneratorImpl;
import com.nisum.omd.service.RandomDataGenerator;
@Component
@RestController
public class OrderGenerator implements CommandLineRunner{
public class OrderGenerator {
@Autowired
private RandomDataGeneratorImpl rdg;
private RandomDataGenerator randomDataGenerator;
@Autowired
private Order order;
@Autowired
private OmdProducerService omdProducerService;
private Boolean orderGenerateFlag = false;
private List<Double> intervalList;
public Boolean getOrderGenerateFlag() {
return orderGenerateFlag;
......@@ -38,48 +43,51 @@ public class OrderGenerator implements CommandLineRunner{
this.orderGenerateFlag = orderGenerateFlag;
}
public void run(String... args) throws Exception {
public void execute() throws Exception {
intervalList = randomDataGenerator.generateIntervals();
while(true) {
if (orderGenerateFlag) {
order = getObjectData(order);
omdProducerService.sendMessage(order);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
String jsonOrderStr = objectMapper.writeValueAsString(order);
String jsonOrderStr = objectMapper.writeValueAsString(order);
System.out.println(jsonOrderStr);
Thread.sleep(2000);
Thread.sleep((long)(getRandomInterval(intervalList) * 1000));
}
}
}
@GetMapping(path="/orderStartStop")
public String orderStartStop() throws Exception{
@GetMapping(path="/orderStartStop/{gneratorFlag}")
public String orderStartStop(@PathVariable("gneratorFlag")boolean gneratorFlag) throws Exception{
orderGenerateFlag = gneratorFlag;
if (orderGenerateFlag) {
CompletableFuture.runAsync(() -> {
try {
run();
execute();
} catch (Exception e) {
e.printStackTrace();
}
});
orderGenerateFlag = false;
}
else {
orderGenerateFlag = true;
}
return "Order Generate : " + orderGenerateFlag.toString();
}
private Order getObjectData(Order orders) {
LocalDateTime currentTime = LocalDateTime.now();
order.setOrderNum(rdg.generateOrderNumber());
order.setCustomerId(rdg.generateCustomerId());
order.setOrderNum(randomDataGenerator.generateOrderNumber());
order.setCustomerId(randomDataGenerator.generateCustomerId());
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
String formattedDateTime = currentTime.format(formatter);
order.setOrderDate(formattedDateTime);
order.setLineItem(rdg.genetateLineItem(order.getLineItem()));
order.setLineItem(randomDataGenerator.genetateLineItem(order.getLineItem()));
return order;
}
private static Double getRandomInterval(List<Double> list) {
int index = ThreadLocalRandom.current().nextInt(list.size());
return list.get(index);
}
}
package com.nisum.omd.service;
import java.util.List;
import com.nisum.omd.domain.LineItem;
public interface RandomDataGenerator {
......@@ -7,5 +9,6 @@ public interface RandomDataGenerator {
public String generateOrderNumber();
public String generateCustomerId();
public LineItem genetateLineItem(LineItem li);
public List<Double> generateIntervals();
}
......@@ -6,7 +6,6 @@ import java.util.Random;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import com.github.javafaker.Faker;
import com.nisum.omd.domain.LineItem;
......@@ -14,7 +13,6 @@ import com.nisum.omd.domain.Order;
@Component
@RequestMapping("app")
public class RandomDataGeneratorImpl implements RandomDataGenerator {
@Autowired
......@@ -46,5 +44,15 @@ public class RandomDataGeneratorImpl implements RandomDataGenerator {
lineItem.setEstimatedShipDate(order.getOrderDate()+5);
return lineItem;
}
@Override
public List<Double> generateIntervals() {
List<Double> timeIntervals = new ArrayList<Double>();
timeIntervals.add(0.10);
timeIntervals.add(0.20);
timeIntervals.add(0.30);
timeIntervals.add(0.40);
return timeIntervals;
}
}
......@@ -71,4 +71,7 @@ app.paymentMethod.paymentDetail.RequestAmount=1000.00
#Kafka Properties
bootstrap-server = localhost:9092
topic-name = TOPIC_OMD_ORDER_DATA
\ No newline at end of file
topic-name = TOPIC_OMD_ORDER_DATA
# Time intervals
app.listOfintervals=0.05,0.10
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment