diff --git a/UB_OrderServiceProxy/pom.xml b/UB_OrderServiceProxy/pom.xml
index 3fe42f8..1f69943 100644
--- a/UB_OrderServiceProxy/pom.xml
+++ b/UB_OrderServiceProxy/pom.xml
@@ -17,6 +17,10 @@
1.8
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -25,7 +29,12 @@
org.springframework.boot
spring-boot-starter-web
-
+
+ org.projectlombok
+ lombok
+ true
+
+
org.springframework.boot
spring-boot-devtools
diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java
new file mode 100644
index 0000000..2651d77
--- /dev/null
+++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/config/MessagingConfig.java
@@ -0,0 +1,48 @@
+package com.example.urbanbazaar.config;
+
+import org.springframework.amqp.core.AmqpTemplate;
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.core.TopicExchange;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.amqp.support.converter.MessageConverter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MessagingConfig {
+
+ public static final String QUEUE = "team_berlin_gs";
+ public static final String EXCHANGE = "team_berlin_exchange";
+ public static final String ROUTING_KEY = "team_berlin_routingKey";
+
+ @Bean
+ public Queue queue() {
+ return new Queue(QUEUE);
+ }
+
+ @Bean
+ public TopicExchange exchange() {
+ return new TopicExchange(EXCHANGE);
+ }
+
+ @Bean
+ public Binding binding(Queue queue, TopicExchange exchange) {
+ return BindingBuilder.bind(queue).to(exchange).with(ROUTING_KEY);
+ }
+
+ @Bean
+ public MessageConverter converter() {
+ return new Jackson2JsonMessageConverter();
+ }
+
+ @Bean
+ public AmqpTemplate template(ConnectionFactory connectionFactory) {
+ final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
+ rabbitTemplate.setMessageConverter(converter());
+ return rabbitTemplate;
+ }
+}
diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java
index 23ba804..6b77ebc 100644
--- a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java
+++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/controller/OrderController.java
@@ -3,6 +3,7 @@ package com.example.urbanbazaar.controller;
import java.util.List;
import java.util.NoSuchElementException;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -12,19 +13,26 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
+import com.example.urbanbazaar.config.MessagingConfig;
+import com.example.urbanbazaar.model.OrderStatus;
import com.example.urbanbazaar.model.Orders;
import com.example.urbanbazaar.repository.OrderRepository;
-
@RestController
public class OrderController {
@Autowired
private OrderRepository repo;
+
+ @Autowired
+ private RabbitTemplate template;
@PostMapping("/addOrder")
- public void addOrders( @RequestBody Orders order) {
+ public String addOrders(@RequestBody Orders order) {
repo.save(order);
+ OrderStatus orderStatus = new OrderStatus(order, "PROCESS", "order placed successfully !! ("+order.getUserid()+")");
+ template.convertAndSend(MessagingConfig.EXCHANGE, MessagingConfig.ROUTING_KEY, orderStatus);
+ return "Success !!";
}
@GetMapping("/findOrder/{id}")
@@ -42,7 +50,7 @@ public class OrderController {
public ResponseEntity> findOrderByUser(@PathVariable Integer id) {
try {
- List orders = repo.findByorderuserid(id);
+ List orders = repo.findByuserid(id);
return new ResponseEntity>(orders, HttpStatus.OK);
} catch (NoSuchElementException e) {
return new ResponseEntity>(HttpStatus.NOT_FOUND);
diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java
new file mode 100644
index 0000000..ab15e8d
--- /dev/null
+++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/OrderStatus.java
@@ -0,0 +1,59 @@
+package com.example.urbanbazaar.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class OrderStatus {
+
+ private Orders order;
+ private String status;//progress,completed
+ private String message;
+
+ public Orders getOrder() {
+ return order;
+ }
+
+ public void setOrder(Orders order) {
+ this.order = order;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public OrderStatus() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ public OrderStatus(Orders order, String status, String message) {
+ super();
+ this.order = order;
+ this.status = status;
+ this.message = message;
+ }
+
+ @Override
+ public String toString() {
+ return "OrderStatus [order=" + order + ", status=" + status + ", message=" + message + "]";
+ }
+
+}
diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java
index cc31b91..eb226b2 100644
--- a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java
+++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/model/Orders.java
@@ -1,6 +1,8 @@
package com.example.urbanbazaar.model;
import java.sql.Date;
+import java.time.LocalDate;
+
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@@ -16,9 +18,10 @@ public class Orders {
private int userid;
private float orderamount;
private float ordershippingcost;
- private Date orderdate;
+ private String orderdate;
private boolean ordershipped;
private String ordertrackingnumber;
+
public int getOrderid() {
return orderid;
}
@@ -43,10 +46,10 @@ public class Orders {
public void setOrdershippingcost(float ordershippingcost) {
this.ordershippingcost = ordershippingcost;
}
- public Date getOrderdate() {
+ public String getOrderdate() {
return orderdate;
}
- public void setOrderdate(Date orderdate) {
+ public void setOrderdate(String orderdate) {
this.orderdate = orderdate;
}
public boolean isOrdershipped() {
@@ -64,7 +67,7 @@ public class Orders {
public Orders() {}
- public Orders(int orderid, int userid, float orderamount, float ordershippingcost, Date orderdate,
+ public Orders(int orderid, int userid, float orderamount, float ordershippingcost, String orderdate,
boolean ordershipped, String ordertrackingnumber) {
super();
this.orderid = orderid;
diff --git a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java
index 8a99f49..718524c 100644
--- a/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java
+++ b/UB_OrderServiceProxy/src/main/java/com/example/urbanbazaar/repository/OrderRepository.java
@@ -13,5 +13,5 @@ public interface OrderRepository extends JpaRepository {
@Query("SELECT o FROM Orders o WHERE o.ordertrackingnumber=:id")
public Orders findByTrackId(@Param("id") String id);
- public List findByorderuserid(int id);
+ public List findByuserid(int id);
}
diff --git a/UB_OrderServiceProxy/src/main/resources/application.properties b/UB_OrderServiceProxy/src/main/resources/application.properties
index b0c53bd..d9648ed 100644
--- a/UB_OrderServiceProxy/src/main/resources/application.properties
+++ b/UB_OrderServiceProxy/src/main/resources/application.properties
@@ -1,6 +1,6 @@
-server.port=8009
+server.port=8019
-spring.datasource.url=jdbc:mysql://10.3.117.21:3306/grocery_db?createDatabaseIfNotExist=true
+spring.datasource.url=jdbc:mysql://10.3.117.23:3306/grocery_db?createDatabaseIfNotExist=true
spring.datasource.username=testuser
spring.datasource.password=Password123
@@ -9,3 +9,8 @@ spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jackson.serialization.fail-on-empty-beans=false
+
+spring.rabbitmq.port=5672
+spring.rabbitmq.host=labs4.koteshwar.com
+spring.rabbitmq.username=guest
+spring.rabbitmq.password=guest
\ No newline at end of file
diff --git a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java
index 9791e29..5be7e9d 100644
--- a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java
+++ b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/UbUserServiceProxyApplication.java
@@ -9,5 +9,5 @@ public class UbUserServiceProxyApplication {
public static void main(String[] args) {
SpringApplication.run(UbUserServiceProxyApplication.class, args);
}
-
+
}
diff --git a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java
index 3f597a7..ae2a1e3 100644
--- a/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java
+++ b/UB_UserServiceProxy/src/main/java/com/example/urbanbazaar/controller/UserController.java
@@ -29,31 +29,38 @@ public class UserController {
@Autowired
private UserRepository repo;
-
+
@PostMapping("/addUser")
- public ResponseEntity addUser(@RequestBody User user) {
- String tempusername =user.getUserfirstname();
- if(tempusername !=null && !"".equals(tempusername)) {
- User usero=repo.findByuserfirstname(tempusername);
- if (usero!=null) {
- return new ResponseEntity("user with "+tempusername+ " already exists", HttpStatus.BAD_REQUEST);
-// throw new Exception();
+ public ResponseEntity addUser(@RequestBody User user) {
+ String tempusername = user.getUserfirstname();
+ if (tempusername != null && !"".equals(tempusername)) {
+ User usero = repo.findByuserfirstname(tempusername);
+ if (usero != null) {
+ return new ResponseEntity("user with " + tempusername + " already exists",
+ HttpStatus.BAD_REQUEST);
}
-
+
}
- repo.save(user);
- return new ResponseEntity("Registration success !!", HttpStatus.OK);}
+ repo.save(user);
+ return new ResponseEntity("Registration success !!", HttpStatus.OK);
+ }
+ @PostMapping("/addUsers")
+ public ResponseEntity> addUsers(@RequestBody List users) {
+ repo.saveAll(users);
+ return new ResponseEntity>(users, HttpStatus.OK);
+ }
+
@GetMapping("/showAllUsers")
public List showUsers() {
return repo.findAll();
}
-
+
@GetMapping("/findUserById/{userId}")
public User findUserById(@PathVariable int userId) {
return repo.findById(userId).get();
}
-
+
@GetMapping("/findUserByName/{name}")
public User findUserByName(@PathVariable String name) {
return repo.findByuserfirstname(name);
@@ -62,16 +69,16 @@ public class UserController {
@PostMapping("/login")
public ResponseEntity userLogin(@RequestBody UserLogin user) {
User currentUser = repo.findByuserfirstname(user.getUserfirstname());
- if(currentUser == null)
+ if (currentUser == null)
return new ResponseEntity("User doesn't exist. Please create a new account.", HttpStatus.NOT_FOUND);
- if(!currentUser.getUserpassword().equals(user.getUserpassword()))
+ if (!currentUser.getUserpassword().equals(user.getUserpassword()))
return new ResponseEntity("Password mismatch.", HttpStatus.BAD_REQUEST);
return new ResponseEntity("Login success !!", HttpStatus.OK);
}
-
+
@PutMapping("/update/")
public void update(@RequestBody User user) {
- User oldu=repo.findById(user.getUserid()).get();
+ User oldu = repo.findById(user.getUserid()).get();
oldu.setUserfirstname(user.getUserfirstname());
oldu.setUserlastname(user.getUserlastname());
oldu.setUseraddress(user.getUseraddress());
diff --git a/grocery_db_tables.sql b/grocery_db_tables.sql
index 7d31037..7bb496d 100644
--- a/grocery_db_tables.sql
+++ b/grocery_db_tables.sql
@@ -5,16 +5,16 @@ use grocery_db;
-- Users Table Schema
CREATE TABLE `users` (
`UserID` int(11) NOT NULL AUTO_INCREMENT,
- `UserFirstName` varchar(20) DEFAULT NULL,
- `UserLastName` varchar(20) DEFAULT NULL,
- `UserEmail` varchar(20) DEFAULT NULL,
- `UserPassword` varchar(20) DEFAULT NULL,
- `UserCity` varchar(30) DEFAULT NULL,
- `UserState` varchar(20) DEFAULT NULL,
- `UserZip` varchar(6) DEFAULT NULL,
- `UserPhone` varchar(10) DEFAULT NULL,
- `UserAddress` varchar(80) DEFAULT NULL,
- `UserAddress2` varchar(80) DEFAULT NULL,
+ `UserFirstName` varchar(50) DEFAULT NULL,
+ `UserLastName` varchar(50) DEFAULT NULL,
+ `UserEmail` varchar(50) DEFAULT NULL,
+ `UserPassword` varchar(50) DEFAULT NULL,
+ `UserCity` varchar(50) DEFAULT NULL,
+ `UserState` varchar(50) DEFAULT NULL,
+ `UserZip` varchar(10) DEFAULT NULL,
+ `UserPhone` varchar(50) DEFAULT NULL,
+ `UserAddress` varchar(150) DEFAULT NULL,
+ `UserAddress2` varchar(100) DEFAULT NULL,
PRIMARY KEY (`UserID`)
);
@@ -121,7 +121,7 @@ CREATE TABLE IF NOT EXISTS `orders` (
`UserID` int(11) NOT NULL,
`OrderAmount` float NOT NULL,
`OrderShippingCost` float NOT NULL,
- `OrderDate` date not null,
+ `OrderDate` varchar(80) not null,
`OrderShipped` bool not null default false,
`OrderTrackingNumber` varchar(80) DEFAULT NULL,
PRIMARY KEY (`OrderID`)
diff --git a/springboot-rabbitmq-example b/springboot-rabbitmq-example
new file mode 160000
index 0000000..10a0271
--- /dev/null
+++ b/springboot-rabbitmq-example
@@ -0,0 +1 @@
+Subproject commit 10a0271fcba7f90b09523ad74703297c45b2b620