Skip to content

adding implementation #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package io.zipcoder.persistenceapp.department;

import io.zipcoder.persistenceapp.employee.Employee;

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 Employee depManager;

public Department() {
}

public Department(Long depId, String depName, Employee 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 Employee getDepManager() {
return depManager;
}

public void setDepManager(Employee depManager) {
this.depManager = depManager;
}
}
Original file line number Diff line number Diff line change
@@ -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<Department> create(
@RequestBody Department department) {
return new ResponseEntity<>(service.create(department), HttpStatus.CREATED);
}

@GetMapping("/dept/{id}")
public ResponseEntity<Department> findById(
@PathVariable Long id) {
return new ResponseEntity<>(service.read(id), HttpStatus.OK);
}

@GetMapping("/dept/depts")
public ResponseEntity<Iterable<Department>> findAll() {
return new ResponseEntity<>(service.readAll(), HttpStatus.OK);
}

@PutMapping("/dept/update/{id}")
public ResponseEntity<Department> update(
@PathVariable Long id,
@RequestBody Department department) {
return new ResponseEntity<>(service.updateManager(id, department), HttpStatus.OK);
}

@DeleteMapping("/dept/delete/{id}")
public ResponseEntity<Department> delete(
@PathVariable Long id) {
return new ResponseEntity<>(service.delete(id), HttpStatus.OK);
}
}
Original file line number Diff line number Diff line change
@@ -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<Department, Long> {
}
Original file line number Diff line number Diff line change
@@ -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<Department> readAll() {
Iterable<Department> departmentIterable = repo.findAll();
List<Department> depList = new ArrayList<>();
departmentIterable.forEach(depList::add);
return depList;
}

// could integrate passing an Employee through name to update manager
public Department updateManager(Long id, Department department) {
Department inDb = read(id);
inDb.setDepManager(department.getDepManager());
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<Department> delete(List<Department> listToDelete) {
listToDelete.forEach(repo::delete);
return listToDelete;
}
}
120 changes: 120 additions & 0 deletions src/main/java/io/zipcoder/persistenceapp/employee/Employee.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package io.zipcoder.persistenceapp.employee;

import org.springframework.web.bind.annotation.PathVariable;

import javax.persistence.*;
import java.util.Date;

@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 Date hireDate;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "manager_id", referencedColumnName = "id")
private Employee manager;
// private Integer depNum;

public Employee() {
}

public Employee(Long employeeNum,
String firstName,
String lastName,
String title,
String phoneNumber,
String email,
Date hireDate,
Employee manager
// Integer depNum
) {
this.employeeNum = employeeNum;
this.firstName = firstName;
this.lastName = lastName;
this.title = title;
this.phoneNumber = phoneNumber;
this.email = email;
this.hireDate = hireDate;
this.manager = manager;
// 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 Date getHireDate() {
return hireDate;
}

public void setHireDate(Date hireDate) {
this.hireDate = hireDate;
}

public Employee getManager() {
return manager;
}

public void setManager(Employee manager) {
this.manager = manager;
}

// public Integer getDepNum() {
// return depNum;
// }
//
// public void setDepNum(Integer depNum) {
// this.depNum = depNum;
// }
}
Original file line number Diff line number Diff line change
@@ -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<Employee> create(
@RequestBody Employee employee) {
return new ResponseEntity<>(service.create(employee), HttpStatus.CREATED);
}

@GetMapping("/employee/{id}")
public ResponseEntity<Employee> findById(
@PathVariable Long id) {
return new ResponseEntity<>(service.read(id), HttpStatus.OK);
}

@GetMapping("/employee/employees")
public ResponseEntity<Iterable<Employee>> findAll() {
return new ResponseEntity<>(service.readAll(), HttpStatus.OK);
}

@PutMapping("/employee/update/{id}")
public ResponseEntity<Employee> updateFields(
@PathVariable Long id,
@RequestBody Employee employee) {
return new ResponseEntity<>(service.updateFields(id, employee), HttpStatus.OK);
}

@DeleteMapping("/employee/delete/{id}")
public ResponseEntity<Employee> delete(
@PathVariable Long id) {
return new ResponseEntity<>(service.delete(id), HttpStatus.OK);
}

}
Original file line number Diff line number Diff line change
@@ -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<Employee, Long> {
}
Loading