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