27-Build Delete Employee By Id REST API (Final)

 

Image 1

Note - Model  and Repository layer completed


Service Class Updates

springboot-backendd--> src/main/java--> net.javaguides.springboot.service--> EmployeeService.java

package net.javaguides.springboot.service;

import java.util.List;

import net.javaguides.springboot.model.Employee;

public interface EmployeeService {
   
    Employee saveEmployee(Employee employee);
   
    List<Employee> getAllEmployees();
   
    Employee getEmployeeById(long id);
   
    Employee updateEmployee(Employee employee, long id);
   
    void deleteEmployee(long id);

}



ServiceImpl Class Updates

springboot-backendd--> src/main/java-->  net.javaguides.springboot.service.impl--> EmployeeServiceImpl.java

package net.javaguides.springboot.service.impl;

import java.util.List;

import org.springframework.stereotype.Service;

import net.javaguides.springboot.exception.ResourceNotFound;
import net.javaguides.springboot.model.Employee;
import net.javaguides.springboot.repository.EmployeeRepository;
import net.javaguides.springboot.service.EmployeeService;


@Service
public class EmployeeServiceImpl implements EmployeeService {

    private EmployeeRepository employeeRepository;
   
    public EmployeeServiceImpl(EmployeeRepository employeeRepository) {
        super();
        this.employeeRepository = employeeRepository;
    }

    @Override
    public Employee saveEmployee(Employee employee) {
    return employeeRepository.save(employee);
    }

    @Override
    public List<Employee> getAllEmployees() {
        return employeeRepository.findAll();
    }

    @Override
    public Employee getEmployeeById(long id) {
//      Optional<Employee> employee = employeeRepository.findById(id);
//      if(employee.isPresent()) {
//          return employee.get();
//      }else {
//          throw new ResourceNotFoundException("Employee", "Id", id);
//      }
        return employeeRepository.findById(id).orElseThrow(() ->
                        new ResourceNotFound("Employee", "Id", id));
   
    }

    @Override
    public Employee updateEmployee(Employee employee, long id) {
       
        // we need to check whether employee with given id is exist in DB or not
                Employee existingEmployee = employeeRepository.findById(id).orElseThrow(
                        () -> new ResourceNotFound("Employee", "Id", id));
               
                //Make changes to the employee
                existingEmployee.setFirstName(employee.getFirstName());
                existingEmployee.setLastName(employee.getLastName());
                existingEmployee.setEmail(employee.getEmail());
               
                // save existing employee to DB
                employeeRepository.save(existingEmployee);
                return existingEmployee;
       
    }

    @Override
    public void deleteEmployee(long id) {
        // check whether a employee exist in a DataBase or not
                employeeRepository.findById(id).orElseThrow(() ->
                                        new ResourceNotFound("Employee", "Id", id));
               
employeeRepository.deleteById(id);
       
       
    }

}


Controller Class Updates

springboot-backendd--> src/main/java--> net.javaguides.springboot.controller--> EmployeeController.java


package net.javaguides.springboot.controller;

import java.util.List;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import net.javaguides.springboot.model.Employee;
import net.javaguides.springboot.service.EmployeeService;

@RestController
@RequestMapping("/api/employees")
public class EmployeeController {

    private EmployeeService employeeService;

    public EmployeeController(EmployeeService employeeService) {
        super();
        this.employeeService = employeeService;
    }
   
   
   
    // build create employee REST API
    // http://localhost:8080/api/employees-------  POST request on Postman App
   
    @PostMapping()
    public ResponseEntity<Employee> saveEmployee(@RequestBody Employee employee){
       
        return new ResponseEntity<Employee>(employeeService.saveEmployee(employee),HttpStatus.CREATED);
    }
   
   
   
   
    // build get all employees REST API
    // http://localhost:8080/api/employees-------  GET request on Postman App
        @GetMapping
        public List<Employee> getAllEmployees(){
            return employeeService.getAllEmployees();
        }
       
       
       
        // build get employee by id REST API
    // http://localhost:8080/api/employees/1---------- GET request on Postman App
       
    @GetMapping("{id}")
        public ResponseEntity<Employee> getEmployeeById(@PathVariable("id") long employeeId){
            return new ResponseEntity<Employee>(employeeService.getEmployeeById(employeeId), HttpStatus.OK);
    }
   
   
   
    // build update employee REST API
    // http://localhost:8080/api/employees/1---------- PUT request on Postman App
   
    @PutMapping("{id}")
    public ResponseEntity<Employee> updateEmployee(@PathVariable("id") long id,@RequestBody Employee employee){
       
            return new ResponseEntity<Employee>(employeeService.updateEmployee(employee, id), HttpStatus.OK);
    }
       
   
   
    // build delete employee REST API
    // http://localhost:8080/api/employees/1---------- DELETE request on Postman App
   
    @DeleteMapping("{id}")
    public ResponseEntity<String> deleteEmployee(@PathVariable("id") long id){
           
            // delete employee from DB
            employeeService.deleteEmployee(id);
           
            return new ResponseEntity<String>("Employee deleted successfully!.", HttpStatus.OK);
    }
   
}

Comments

Popular posts from this blog

INDEX OF Zeek Spring Boot