From 743d0cd235b978cd6c4496736f9a4b835f4c68cc Mon Sep 17 00:00:00 2001
From: surkumar <surkumar@nisum.com>
Date: Thu, 28 Jul 2022 18:14:30 +0500
Subject: [PATCH] Data Transfer Object

---
 DataTransferObject/pom.xml                    | 71 +++++++++++++++++++
 .../DataTransferObjectApplication.java        | 14 ++++
 .../dtocrudoperation/Dto/UserLocationDto.java | 11 +++
 .../com/dtocrudoperation/Model/Location.java  | 24 +++++++
 .../java/com/dtocrudoperation/Model/User.java | 33 +++++++++
 .../Repository/LocationRepository.java        |  7 ++
 .../Repository/UserRepository.java            |  7 ++
 .../src/main/resources/application.properties | 11 +++
 .../DataTransferObjectApplicationTests.java   | 13 ++++
 .../Controller/UserController.java            | 24 +++++++
 .../dtocrudoperation/Dto/UserLocationDto.java | 18 +++++
 .../com/dtocrudoperation/Model/Location.java  | 24 +++++++
 .../java/com/dtocrudoperation/Model/User.java | 30 ++++++++
 .../Repository/LocationRepository.java        |  6 ++
 .../Repository/UserRepository.java            |  7 ++
 .../dtocrudoperation/Service/UserService.java | 33 +++++++++
 16 files changed, 333 insertions(+)
 create mode 100644 DataTransferObject/pom.xml
 create mode 100644 DataTransferObject/src/main/java/com/dtocrudoperation/DataTransferObjectApplication.java
 create mode 100644 DataTransferObject/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java
 create mode 100644 DataTransferObject/src/main/java/com/dtocrudoperation/Model/Location.java
 create mode 100644 DataTransferObject/src/main/java/com/dtocrudoperation/Model/User.java
 create mode 100644 DataTransferObject/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java
 create mode 100644 DataTransferObject/src/main/java/com/dtocrudoperation/Repository/UserRepository.java
 create mode 100644 DataTransferObject/src/main/resources/application.properties
 create mode 100644 DataTransferObject/src/test/java/com/dtocrudoperation/DataTransferObjectApplicationTests.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Controller/UserController.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/Location.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/User.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/UserRepository.java
 create mode 100644 DtoCrudOperation/src/main/java/com/dtocrudoperation/Service/UserService.java

diff --git a/DataTransferObject/pom.xml b/DataTransferObject/pom.xml
new file mode 100644
index 0000000..b6f5a6c
--- /dev/null
+++ b/DataTransferObject/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.7.2</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>com.dtocrudoperation</groupId>
+	<artifactId>demo</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>DataTransferObject</name>
+	<description>Data Transfer Object </description>
+	<properties>
+		<java.version>1.8</java.version>
+	</properties>
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-devtools</artifactId>
+			<scope>runtime</scope>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+				<configuration>
+					<excludes>
+						<exclude>
+							<groupId>org.projectlombok</groupId>
+							<artifactId>lombok</artifactId>
+							<version>1.18.24</version>
+						</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/DataTransferObject/src/main/java/com/dtocrudoperation/DataTransferObjectApplication.java b/DataTransferObject/src/main/java/com/dtocrudoperation/DataTransferObjectApplication.java
new file mode 100644
index 0000000..d20d9dd
--- /dev/null
+++ b/DataTransferObject/src/main/java/com/dtocrudoperation/DataTransferObjectApplication.java
@@ -0,0 +1,14 @@
+package com.dtocrudoperation;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class DataTransferObjectApplication {
+
+	public static void main(String[] args) {
+		SpringApplication.run(DataTransferObjectApplication.class, args);
+		System.out.println("Project Started..............!!");
+	}
+
+}
diff --git a/DataTransferObject/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java b/DataTransferObject/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java
new file mode 100644
index 0000000..01bba98
--- /dev/null
+++ b/DataTransferObject/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java
@@ -0,0 +1,11 @@
+package com.dtocrudoperation.Dto;
+
+import com.dtocrudoperation.Model.Location;
+import com.dtocrudoperation.Model.User;
+
+public class UserLocationDto {
+
+
+
+
+}
diff --git a/DataTransferObject/src/main/java/com/dtocrudoperation/Model/Location.java b/DataTransferObject/src/main/java/com/dtocrudoperation/Model/Location.java
new file mode 100644
index 0000000..73ea654
--- /dev/null
+++ b/DataTransferObject/src/main/java/com/dtocrudoperation/Model/Location.java
@@ -0,0 +1,24 @@
+package com.dtocrudoperation.Model;
+
+import lombok.*;
+
+import javax.persistence.*;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "locations")
+public class Location {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private long id;
+    private String place;
+    private String description;
+    private double longitude;
+    private double latitude;
+
+}
diff --git a/DataTransferObject/src/main/java/com/dtocrudoperation/Model/User.java b/DataTransferObject/src/main/java/com/dtocrudoperation/Model/User.java
new file mode 100644
index 0000000..61ee6a9
--- /dev/null
+++ b/DataTransferObject/src/main/java/com/dtocrudoperation/Model/User.java
@@ -0,0 +1,33 @@
+package com.dtocrudoperation.Model;
+
+import lombok.*;
+
+import javax.persistence.*;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "users")
+public class User {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private long id;
+    private  String email;
+    @Column(name = "first_name")
+    private String firstName;
+
+    @Column(name = "last_name")
+    private  String lastName;
+
+    private String password;
+
+    @ManyToOne(fetch = FetchType.EAGER, optional = false)
+    @JoinColumn(name = "location_id")
+    private Location location;
+
+
+
+}
diff --git a/DataTransferObject/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java b/DataTransferObject/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java
new file mode 100644
index 0000000..2f946b5
--- /dev/null
+++ b/DataTransferObject/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java
@@ -0,0 +1,7 @@
+package com.dtocrudoperation.Repository;
+
+import com.dtocrudoperation.Model.Location;
+import org.springframework.data.repository.CrudRepository;
+
+public interface LocationRepository extends CrudRepository<Location, Long> {
+}
diff --git a/DataTransferObject/src/main/java/com/dtocrudoperation/Repository/UserRepository.java b/DataTransferObject/src/main/java/com/dtocrudoperation/Repository/UserRepository.java
new file mode 100644
index 0000000..123342c
--- /dev/null
+++ b/DataTransferObject/src/main/java/com/dtocrudoperation/Repository/UserRepository.java
@@ -0,0 +1,7 @@
+package com.dtocrudoperation.Repository;
+
+import com.dtocrudoperation.Model.User;
+import org.springframework.data.repository.CrudRepository;
+
+public interface UserRepository  extends CrudRepository<User, Long> {
+}
diff --git a/DataTransferObject/src/main/resources/application.properties b/DataTransferObject/src/main/resources/application.properties
new file mode 100644
index 0000000..9128f60
--- /dev/null
+++ b/DataTransferObject/src/main/resources/application.properties
@@ -0,0 +1,11 @@
+server.port=8085
+spring.datasource.name=firstDBPractice
+spring.datasource.url=jdbc:mysql://localhost:3306/firstDBPractice
+spring.datasource.username= root
+spring.datasource.password=nisum123
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL55Dialect
+spring.jpa.generate-ddl=true
+spring.jpa.hibernate.ddl-auto=update
+
+
diff --git a/DataTransferObject/src/test/java/com/dtocrudoperation/DataTransferObjectApplicationTests.java b/DataTransferObject/src/test/java/com/dtocrudoperation/DataTransferObjectApplicationTests.java
new file mode 100644
index 0000000..89f0b81
--- /dev/null
+++ b/DataTransferObject/src/test/java/com/dtocrudoperation/DataTransferObjectApplicationTests.java
@@ -0,0 +1,13 @@
+package com.dtocrudoperation;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class DataTransferObjectApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Controller/UserController.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Controller/UserController.java
new file mode 100644
index 0000000..3a92b75
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Controller/UserController.java
@@ -0,0 +1,24 @@
+package com.dtocrudoperation.Controller;
+
+import com.dtocrudoperation.Dto.UserLocationDto;
+import com.dtocrudoperation.Service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+@RestController
+public class UserController {
+
+    @Autowired
+    private UserService userService;
+
+            @GetMapping("/users-location")
+            @ResponseBody
+            public List<UserLocationDto> getAllUsersLocations(){
+                List<UserLocationDto> userLocation =  userService.getAllUsersLocations();
+            return  userLocation;
+            }
+
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java
new file mode 100644
index 0000000..35df31e
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Dto/UserLocationDto.java
@@ -0,0 +1,18 @@
+package com.dtocrudoperation.Dto;
+
+import lombok.*;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+
+public class UserLocationDto {
+private  long UserId;
+private String email;
+private String place;
+private double longitude;
+private double latitude;
+
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/Location.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/Location.java
new file mode 100644
index 0000000..864d2aa
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/Location.java
@@ -0,0 +1,24 @@
+package com.dtocrudoperation.Model;
+
+import lombok.*;
+
+import javax.persistence.*;
+
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "locations")
+public class Location {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private long id;
+    private String place;
+    private String description;
+    private double longitude;
+    private double latitude;
+    
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/User.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/User.java
new file mode 100644
index 0000000..db74a4e
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Model/User.java
@@ -0,0 +1,30 @@
+package com.dtocrudoperation.Model;
+
+import lombok.*;
+import javax.persistence.*;
+@Getter
+@Setter
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "users")
+public class User {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private long id;
+    private  String email;
+    @Column(name = "first_name")
+    private String firstName;
+
+    @Column(name = "last_name")
+    private  String lastName;
+
+    private String password;
+
+    @ManyToOne(fetch = FetchType.EAGER, optional = false)
+    @JoinColumn(name = "location_id")
+    private Location location;
+
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java
new file mode 100644
index 0000000..4e99ce7
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/LocationRepository.java
@@ -0,0 +1,6 @@
+package com.dtocrudoperation.Repository;
+
+import com.dtocrudoperation.Model.Location;
+import org.springframework.data.repository.CrudRepository;
+public interface LocationRepository extends CrudRepository<Location, Long> {
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/UserRepository.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/UserRepository.java
new file mode 100644
index 0000000..a1d059d
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Repository/UserRepository.java
@@ -0,0 +1,7 @@
+package com.dtocrudoperation.Repository;
+
+import com.dtocrudoperation.Model.User;
+import org.springframework.data.repository.CrudRepository;
+public interface UserRepository extends CrudRepository<User, Long> {
+
+}
diff --git a/DtoCrudOperation/src/main/java/com/dtocrudoperation/Service/UserService.java b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Service/UserService.java
new file mode 100644
index 0000000..34e3741
--- /dev/null
+++ b/DtoCrudOperation/src/main/java/com/dtocrudoperation/Service/UserService.java
@@ -0,0 +1,33 @@
+package com.dtocrudoperation.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import com.dtocrudoperation.Model.User;
+import org.springframework.stereotype.Service;
+import com.dtocrudoperation.Dto.UserLocationDto;
+import com.dtocrudoperation.Repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+
+@Service
+public class UserService {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    public List<UserLocationDto> getAllUsersLocations() {
+        return ((List<User>) userRepository
+                .findAll())
+                .stream()
+                .map(this::convertEntityToDto)
+                .collect(Collectors.toList());
+    }
+    private UserLocationDto convertEntityToDto(User user){
+        UserLocationDto userLocationDto = new UserLocationDto();
+        userLocationDto.setUserId(user.getId());
+        userLocationDto.setEmail(user.getEmail());
+        userLocationDto.setPlace(user.getLocation().getPlace());
+       userLocationDto.setLongitude(user.getLocation().getLongitude());
+       userLocationDto.setLatitude(user.getLocation().getLatitude());
+       return userLocationDto;
+    }
+}
-- 
2.18.1