From c0ee5bc82f5cff59f81e9dcd2b2e541359643af5 Mon Sep 17 00:00:00 2001 From: MyMac Date: Tue, 18 Oct 2022 08:09:06 -0500 Subject: [PATCH] init commit --- pom.xml | 6 +++ .../Employee/EmployeeData.java | 20 ++++++++ .../controllers/EmployeeController.java | 41 +++++++++++++++++ .../Employee/entities/Employee.java | 36 +++++++++++++++ .../Employee/entities/Property.java | 46 +++++++++++++++++++ .../repositories/EmployeeRepository.java | 9 ++++ .../repositories/PropertyRepository.java | 15 ++++++ src/main/resources/application.yml | 9 ++++ 8 files changed, 182 insertions(+) create mode 100644 src/main/java/com/zoomcare/candidatechallenge/Employee/EmployeeData.java create mode 100644 src/main/java/com/zoomcare/candidatechallenge/Employee/controllers/EmployeeController.java create mode 100644 src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Employee.java create mode 100644 src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Property.java create mode 100644 src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/EmployeeRepository.java create mode 100644 src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/PropertyRepository.java diff --git a/pom.xml b/pom.xml index 17fd7ad..d7789e0 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,12 @@ org.springframework.boot spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-data-jpa + + org.springframework.boot spring-boot-starter-data-jdbc diff --git a/src/main/java/com/zoomcare/candidatechallenge/Employee/EmployeeData.java b/src/main/java/com/zoomcare/candidatechallenge/Employee/EmployeeData.java new file mode 100644 index 0000000..f96ea23 --- /dev/null +++ b/src/main/java/com/zoomcare/candidatechallenge/Employee/EmployeeData.java @@ -0,0 +1,20 @@ +package com.zoomcare.candidatechallenge.Employee; + +import java.util.List; +import java.util.Optional; + +import com.zoomcare.candidatechallenge.Employee.entities.Employee; +import com.zoomcare.candidatechallenge.Employee.entities.Property; + +public class EmployeeData { + private final Optional employee; + private final List property; + + public EmployeeData(Optional employee, List property) { + this.employee = employee; + this.property = property; + } + + public Optional getEmployee() { return employee; } + public List getProperty() { return property; } +} \ No newline at end of file diff --git a/src/main/java/com/zoomcare/candidatechallenge/Employee/controllers/EmployeeController.java b/src/main/java/com/zoomcare/candidatechallenge/Employee/controllers/EmployeeController.java new file mode 100644 index 0000000..3832bfa --- /dev/null +++ b/src/main/java/com/zoomcare/candidatechallenge/Employee/controllers/EmployeeController.java @@ -0,0 +1,41 @@ +package com.zoomcare.candidatechallenge.Employee.controllers; + +import java.util.List; +import java.util.Optional; + +import org.springframework.web.bind.annotation.RestController; + +import com.zoomcare.candidatechallenge.Employee.entities.Employee; +import com.zoomcare.candidatechallenge.Employee.entities.Property; +import com.zoomcare.candidatechallenge.Employee.repositories.EmployeeRepository; +import com.zoomcare.candidatechallenge.Employee.repositories.PropertyRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.zoomcare.candidatechallenge.Employee.EmployeeData; + +@RestController +@RequestMapping("/employee") +public class EmployeeController { + + @Autowired + private EmployeeRepository employeeRepository; + + @Autowired + private PropertyRepository propertyRepository; + + + @GetMapping("/{id}") + public ResponseEntity getEmployeeById(@PathVariable("id") Integer id) throws Exception { + Optional employee = employeeRepository.findById(id); + List property = propertyRepository.findByEmployeeId(id); + return new ResponseEntity(new EmployeeData( employee, property ), HttpStatus.OK); + } + + +} \ No newline at end of file diff --git a/src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Employee.java b/src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Employee.java new file mode 100644 index 0000000..106b453 --- /dev/null +++ b/src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Employee.java @@ -0,0 +1,36 @@ +package com.zoomcare.candidatechallenge.Employee.entities; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="EMPLOYEE") +public class Employee { + @Id + @Column(name="ID") + private Integer id; + + @Column(name="SUPERVISOR_ID") + private Integer supervisorId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getSupervisorId() { + return supervisorId; + } + + public void setSupervisorId(Integer supervisorId) { + this.supervisorId = supervisorId; + } + + +} + + diff --git a/src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Property.java b/src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Property.java new file mode 100644 index 0000000..d1a2bae --- /dev/null +++ b/src/main/java/com/zoomcare/candidatechallenge/Employee/entities/Property.java @@ -0,0 +1,46 @@ +package com.zoomcare.candidatechallenge.Employee.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="PROPERTY") +public class Property { + @Id + @Column(name="EMPLOYEE_ID") + private Integer id; + + @Column(name="KEY") + private String key; + + @Column(name="VALUE") + private String value; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} diff --git a/src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/EmployeeRepository.java b/src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/EmployeeRepository.java new file mode 100644 index 0000000..5fa20e9 --- /dev/null +++ b/src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/EmployeeRepository.java @@ -0,0 +1,9 @@ +package com.zoomcare.candidatechallenge.Employee.repositories; + +import org.springframework.data.repository.CrudRepository; + +import com.zoomcare.candidatechallenge.Employee.entities.Employee; + +public interface EmployeeRepository extends CrudRepository { + +} diff --git a/src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/PropertyRepository.java b/src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/PropertyRepository.java new file mode 100644 index 0000000..925545f --- /dev/null +++ b/src/main/java/com/zoomcare/candidatechallenge/Employee/repositories/PropertyRepository.java @@ -0,0 +1,15 @@ +package com.zoomcare.candidatechallenge.Employee.repositories; + +import java.util.List; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; + +import com.zoomcare.candidatechallenge.Employee.entities.Property; + +public interface PropertyRepository extends CrudRepository { + + @Query("select u from Property u where u.id = :id") + List findByEmployeeId(@Param("id") Integer id); + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4408d17..0ffcc79 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,13 @@ spring: + main: + allow-bean-definition-overriding: true + datasource: + url: jdbc:h2:mem:testdb + username: sa + password: + driverClassName: org.h2.Driver + jpa: + spring.jpa.database-platform: org.hibernate.dialect.H2Dialect h2: console: enabled: true