From f8a1cf6499a3a878a04fc373442e846d88274c78 Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Sun, 15 Aug 2021 20:13:55 -0400 Subject: [PATCH 1/2] (feat::entities, repos, services) --- .../persistenceapp/department/Department.java | 49 ++++++++ .../department/DepartmentRepo.java | 8 ++ .../department/DepartmentService.java | 54 ++++++++ .../persistenceapp/employee/Employee.java | 119 ++++++++++++++++++ .../persistenceapp/employee/EmployeeRepo.java | 9 ++ .../employee/EmployeeService.java | 61 +++++++++ 6 files changed, 300 insertions(+) create mode 100644 src/main/java/io/zipcoder/persistenceapp/department/Department.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/department/DepartmentRepo.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/employee/Employee.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/employee/EmployeeRepo.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java diff --git a/src/main/java/io/zipcoder/persistenceapp/department/Department.java b/src/main/java/io/zipcoder/persistenceapp/department/Department.java new file mode 100644 index 0000000..7ef9659 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/department/Department.java @@ -0,0 +1,49 @@ +package io.zipcoder.persistenceapp.department; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Department { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long depId; + private String depName; + private String depManager; + + public Department() { + } + + public Department(Long depId, String depName, String depManager) { + this.depId = depId; + this.depName = depName; + this.depManager = depManager; + } + + public Long getDepId() { + return depId; + } + + public void setDepId(Long depId) { + this.depId = depId; + } + + public String getDepName() { + return depName; + } + + public void setDepName(String depName) { + this.depName = depName; + } + + public String getDepManager() { + return depManager; + } + + public void setDepManager(String depManager) { + this.depManager = depManager; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/department/DepartmentRepo.java b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentRepo.java new file mode 100644 index 0000000..c38f090 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentRepo.java @@ -0,0 +1,8 @@ +package io.zipcoder.persistenceapp.department; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DepartmentRepo extends CrudRepository { +} diff --git a/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java new file mode 100644 index 0000000..e4509aa --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java @@ -0,0 +1,54 @@ +package io.zipcoder.persistenceapp.department; + + +import io.zipcoder.persistenceapp.employee.Employee; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class DepartmentService { + + @Autowired + private DepartmentRepo repo; + + public Department create(Department dep) { + return repo.save(dep); + } + + public Department read(Long id) { + return repo.findOne(id); + } + + public List readAll() { + Iterable departmentIterable = repo.findAll(); + List depList = new ArrayList<>(); + departmentIterable.forEach(depList::add); + return depList; + } + + // could integrate passing an Employee through name to update manager + public Department updateManager(Long id, String manager) { + Department inDb = read(id); + inDb.setDepManager(manager); + inDb = repo.save(inDb); + return inDb; + } + + public Department delete(Long id) { + Department dep = read(id); + repo.delete(dep); + return dep; + } + + public Department delete(Department dep) { + return delete(dep.getDepId()); + } + + public List delete(List listToDelete) { + listToDelete.forEach(repo::delete); + return listToDelete; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java b/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java new file mode 100644 index 0000000..8e69046 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java @@ -0,0 +1,119 @@ +package io.zipcoder.persistenceapp.employee; + +import org.springframework.web.bind.annotation.PathVariable; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Employee { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long employeeNum; + private String firstName; + private String lastName; + private String title; + private String phoneNumber; + private String email; + private String hireDate; + private String managerName; + private Integer depNum; + + public Employee() { + } + + public Employee(Long employeeNum, + String firstName, + String lastName, + String title, + String phoneNumber, + String email, + String hireDate, + String managerName, + Integer depNum) { + this.employeeNum = employeeNum; + this.firstName = firstName; + this.lastName = lastName; + this.title = title; + this.phoneNumber = phoneNumber; + this.email = email; + this.hireDate = hireDate; + this.managerName = managerName; + this.depNum = depNum; + } + + public Long getEmployeeNum() { + return employeeNum; + } + + public void setEmployeeNum(Long employeeNum) { + this.employeeNum = employeeNum; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getHireDate() { + return hireDate; + } + + public void setHireDate(String hireDate) { + this.hireDate = hireDate; + } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } + + public Integer getDepNum() { + return depNum; + } + + public void setDepNum(Integer depNum) { + this.depNum = depNum; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeRepo.java b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeRepo.java new file mode 100644 index 0000000..ba42c38 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeRepo.java @@ -0,0 +1,9 @@ +package io.zipcoder.persistenceapp.employee; + + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface EmployeeRepo extends CrudRepository { +} diff --git a/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java new file mode 100644 index 0000000..c20c023 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java @@ -0,0 +1,61 @@ +package io.zipcoder.persistenceapp.employee; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class EmployeeService { + + @Autowired + private EmployeeRepo repo; + + public Employee create(Employee person) { + return repo.save(person); + } + + public Employee read(Long id) { + return repo.findOne(id); + } + + public List readAll() { + Iterable employeeIterable = repo.findAll(); + List employees = new ArrayList<>(); + employeeIterable.forEach(employees::add); + return employees; + } + + public List readOfManager(String managerName) { + List entireList = readAll(); + List result = new ArrayList<>(); + entireList.forEach(employee -> { + if (employee.getManagerName().equals(managerName)) { + result.add(employee); + } + }); + return result; + } + + // no update for hiredate/employee ID //// or DepKey (as of right now) + public Employee updateFields(Long id, Employee em) { + Employee inDb = read(id); + inDb.setFirstName(em.getFirstName()); + inDb.setLastName(em.getLastName()); + inDb.setTitle(em.getTitle()); + inDb.setPhoneNumber(em.getPhoneNumber()); + inDb.setEmail(em.getEmail()); + inDb = repo.save(inDb); + return inDb; + } + + public Employee updateManager(Long id, String newManager) { + Employee inDb = read(id); + inDb.setManagerName(newManager); + inDb = repo.save(inDb); + return inDb; + } + +} From 1ac033896106bcccd5a24ee3f496327dfcfa72bb Mon Sep 17 00:00:00 2001 From: NicholasWolak Date: Mon, 16 Aug 2021 09:12:50 -0400 Subject: [PATCH 2/2] (feat:integrated boilerplate controller) --- .../persistenceapp/department/Department.java | 10 ++-- .../department/DepartmentController.java | 45 ++++++++++++++++ .../department/DepartmentService.java | 4 +- .../persistenceapp/employee/Employee.java | 51 ++++++++++--------- .../employee/EmployeeController.java | 46 +++++++++++++++++ .../employee/EmployeeService.java | 18 +++++-- 6 files changed, 139 insertions(+), 35 deletions(-) create mode 100644 src/main/java/io/zipcoder/persistenceapp/department/DepartmentController.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/employee/EmployeeController.java diff --git a/src/main/java/io/zipcoder/persistenceapp/department/Department.java b/src/main/java/io/zipcoder/persistenceapp/department/Department.java index 7ef9659..5dfefb9 100644 --- a/src/main/java/io/zipcoder/persistenceapp/department/Department.java +++ b/src/main/java/io/zipcoder/persistenceapp/department/Department.java @@ -1,5 +1,7 @@ package io.zipcoder.persistenceapp.department; +import io.zipcoder.persistenceapp.employee.Employee; + import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -12,12 +14,12 @@ public class Department { @GeneratedValue(strategy = GenerationType.AUTO) private Long depId; private String depName; - private String depManager; + private Employee depManager; public Department() { } - public Department(Long depId, String depName, String depManager) { + public Department(Long depId, String depName, Employee depManager) { this.depId = depId; this.depName = depName; this.depManager = depManager; @@ -39,11 +41,11 @@ public void setDepName(String depName) { this.depName = depName; } - public String getDepManager() { + public Employee getDepManager() { return depManager; } - public void setDepManager(String depManager) { + public void setDepManager(Employee depManager) { this.depManager = depManager; } } diff --git a/src/main/java/io/zipcoder/persistenceapp/department/DepartmentController.java b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentController.java new file mode 100644 index 0000000..4d85fd4 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentController.java @@ -0,0 +1,45 @@ +package io.zipcoder.persistenceapp.department; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(value = "/dep") +public class DepartmentController { + + @Autowired + DepartmentService service; + + @PostMapping("/dept/create") + public ResponseEntity create( + @RequestBody Department department) { + return new ResponseEntity<>(service.create(department), HttpStatus.CREATED); + } + + @GetMapping("/dept/{id}") + public ResponseEntity findById( + @PathVariable Long id) { + return new ResponseEntity<>(service.read(id), HttpStatus.OK); + } + + @GetMapping("/dept/depts") + public ResponseEntity> findAll() { + return new ResponseEntity<>(service.readAll(), HttpStatus.OK); + } + + @PutMapping("/dept/update/{id}") + public ResponseEntity update( + @PathVariable Long id, + @RequestBody Department department) { + return new ResponseEntity<>(service.updateManager(id, department), HttpStatus.OK); + } + + @DeleteMapping("/dept/delete/{id}") + public ResponseEntity delete( + @PathVariable Long id) { + return new ResponseEntity<>(service.delete(id), HttpStatus.OK); + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java index e4509aa..629f8a8 100644 --- a/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java +++ b/src/main/java/io/zipcoder/persistenceapp/department/DepartmentService.java @@ -30,9 +30,9 @@ public List readAll() { } // could integrate passing an Employee through name to update manager - public Department updateManager(Long id, String manager) { + public Department updateManager(Long id, Department department) { Department inDb = read(id); - inDb.setDepManager(manager); + inDb.setDepManager(department.getDepManager()); inDb = repo.save(inDb); return inDb; } diff --git a/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java b/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java index 8e69046..06bfded 100644 --- a/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java +++ b/src/main/java/io/zipcoder/persistenceapp/employee/Employee.java @@ -2,10 +2,8 @@ import org.springframework.web.bind.annotation.PathVariable; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.*; +import java.util.Date; @Entity public class Employee { @@ -18,9 +16,11 @@ public class Employee { private String title; private String phoneNumber; private String email; - private String hireDate; - private String managerName; - private Integer depNum; + private Date hireDate; + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "manager_id", referencedColumnName = "id") + private Employee manager; +// private Integer depNum; public Employee() { } @@ -31,9 +31,10 @@ public Employee(Long employeeNum, String title, String phoneNumber, String email, - String hireDate, - String managerName, - Integer depNum) { + Date hireDate, + Employee manager +// Integer depNum + ) { this.employeeNum = employeeNum; this.firstName = firstName; this.lastName = lastName; @@ -41,8 +42,8 @@ public Employee(Long employeeNum, this.phoneNumber = phoneNumber; this.email = email; this.hireDate = hireDate; - this.managerName = managerName; - this.depNum = depNum; + this.manager = manager; +// this.depNum = depNum; } public Long getEmployeeNum() { @@ -93,27 +94,27 @@ public void setEmail(String email) { this.email = email; } - public String getHireDate() { + public Date getHireDate() { return hireDate; } - public void setHireDate(String hireDate) { + public void setHireDate(Date hireDate) { this.hireDate = hireDate; } - public String getManagerName() { - return managerName; + public Employee getManager() { + return manager; } - public void setManagerName(String managerName) { - this.managerName = managerName; + public void setManager(Employee manager) { + this.manager = manager; } - public Integer getDepNum() { - return depNum; - } - - public void setDepNum(Integer depNum) { - this.depNum = depNum; - } +// public Integer getDepNum() { +// return depNum; +// } +// +// public void setDepNum(Integer depNum) { +// this.depNum = depNum; +// } } diff --git a/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeController.java b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeController.java new file mode 100644 index 0000000..4a51672 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeController.java @@ -0,0 +1,46 @@ +package io.zipcoder.persistenceapp.employee; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping +public class EmployeeController { + + @Autowired + EmployeeService service; + + @PostMapping("/employee/create") + public ResponseEntity create( + @RequestBody Employee employee) { + return new ResponseEntity<>(service.create(employee), HttpStatus.CREATED); + } + + @GetMapping("/employee/{id}") + public ResponseEntity findById( + @PathVariable Long id) { + return new ResponseEntity<>(service.read(id), HttpStatus.OK); + } + + @GetMapping("/employee/employees") + public ResponseEntity> findAll() { + return new ResponseEntity<>(service.readAll(), HttpStatus.OK); + } + + @PutMapping("/employee/update/{id}") + public ResponseEntity updateFields( + @PathVariable Long id, + @RequestBody Employee employee) { + return new ResponseEntity<>(service.updateFields(id, employee), HttpStatus.OK); + } + + @DeleteMapping("/employee/delete/{id}") + public ResponseEntity delete( + @PathVariable Long id) { + return new ResponseEntity<>(service.delete(id), HttpStatus.OK); + } + +} diff --git a/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java index c20c023..61275d7 100644 --- a/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java +++ b/src/main/java/io/zipcoder/persistenceapp/employee/EmployeeService.java @@ -28,11 +28,11 @@ public List readAll() { return employees; } - public List readOfManager(String managerName) { + public List readOfManager(Employee managerName) { List entireList = readAll(); List result = new ArrayList<>(); entireList.forEach(employee -> { - if (employee.getManagerName().equals(managerName)) { + if (employee.getEmployeeNum().equals(managerName.getEmployeeNum())) { result.add(employee); } }); @@ -51,11 +51,21 @@ public Employee updateFields(Long id, Employee em) { return inDb; } - public Employee updateManager(Long id, String newManager) { + public Employee updateManager(Long id, Employee newManager) { Employee inDb = read(id); - inDb.setManagerName(newManager); + inDb.setManager(newManager); inDb = repo.save(inDb); return inDb; } + public Employee delete(Long id) { + Employee em = read(id); + repo.delete(id); + return em; + } + + public Employee delete(Employee employee) { + return delete(employee.getEmployeeNum()); + } + }