Commit f7ac1395 authored by Alex Pinto's avatar Alex Pinto

completed service class and error handling

parent 27d6fe3f
......@@ -15,5 +15,4 @@ public class DetailsController {
System.out.println("This is the students index route.");
}
}
package com.student.details.exceptions;
import java.util.Date;
public class ErrorDetails {
private Date timestamp;
private String message;
private String details;
public ErrorDetails(Date timestamp, String message, String details) {
this.timestamp = timestamp;
this.message = message;
this.details = details;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
}
package com.student.details.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import java.util.Date;
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
public ResponseEntity<?> resourceNotFoundException(ResourceNotFoundException ex, WebRequest webRequest) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), webRequest.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
}
}
package com.student.details.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends Exception {
public ResourceNotFoundException(String message) {
super(message);
}
}
package com.student.details.services;
import com.student.details.exceptions.ResourceNotFoundException;
import com.student.details.models.Student;
import com.student.details.repositories.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Service
public class StudentService {
@Autowired
StudentRepository studentRepository;
public List<Student> findAllStudents() {
return studentRepository.findAll();
}
public Student addStudent(Student student) {
return studentRepository.save(student);
}
public Optional<Student> getStudentById(Long studentId) {
return studentRepository.findById(studentId);
}
public Student updateStudent(Long studentId, Student studentDetails) throws ResourceNotFoundException {
Student student = studentRepository.findById(studentId)
.orElseThrow(() -> new ResourceNotFoundException("Student id: " + studentId + " not found"));
student.setFirstName(studentDetails.getFirstName());
student.setLastName(studentDetails.getLastName());
Student updatedStudent = studentRepository.save(student);
return updatedStudent;
}
public Map<String, Boolean> deleteStudent(Long studentId) throws ResourceNotFoundException {
Student student = studentRepository.findById(studentId)
.orElseThrow(() -> new ResourceNotFoundException("Student id: " + studentId + " not found"));
studentRepository.delete(student);
Map<String, Boolean> response = new HashMap<String, Boolean>();
response.put("deleted", true);
return response;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment