Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Paysafe Interns Valentin-Martin
Student Managment
filip-filchev-student-management-2023
Commits
edb8e3a5
Commit
edb8e3a5
authored
1 year ago
by
Filip Filchev
Browse files
Options
Download
Email Patches
Plain Diff
Add Global Exception Handler. Delete unused Exceptions
parent
adf5fcaf
main
angularHomework
httpHomework
securityHomework
No related merge requests found
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
api/src/main/java/studentmanagement/api/cli/controller/grade/DefaultGradeCliController.java
+1
-1
...t/api/cli/controller/grade/DefaultGradeCliController.java
api/src/main/java/studentmanagement/api/rest/exception/ExceptionInformation.java
+6
-0
...ntmanagement/api/rest/exception/ExceptionInformation.java
api/src/main/java/studentmanagement/api/rest/exception/GlobalExceptionHandlerController.java
+70
-0
.../api/rest/exception/GlobalExceptionHandlerController.java
api/src/main/java/studentmanagement/api/rest/grade/DefaultGradeController.java
+1
-2
...dentmanagement/api/rest/grade/DefaultGradeController.java
core/src/main/java/studentmanagement/service/course/exception/CourseAlreadyExistsException.java
+0
-7
...ervice/course/exception/CourseAlreadyExistsException.java
core/src/main/java/studentmanagement/service/course/exception/CourseDoesNotExistException.java
+0
-7
...service/course/exception/CourseDoesNotExistException.java
core/src/main/java/studentmanagement/service/grade/DefaultGradeService.java
+1
-1
.../studentmanagement/service/grade/DefaultGradeService.java
core/src/main/java/studentmanagement/service/grade/GradeMapper.java
+2
-0
...ain/java/studentmanagement/service/grade/GradeMapper.java
core/src/main/java/studentmanagement/service/grade/GradeService.java
+1
-1
...in/java/studentmanagement/service/grade/GradeService.java
core/src/main/java/studentmanagement/service/grade/exception/GradeTableAlreadyExistsException.java
+0
-7
...ice/grade/exception/GradeTableAlreadyExistsException.java
core/src/main/java/studentmanagement/service/grade/exception/GradeTableDoesNotExistsException.java
+0
-7
...ice/grade/exception/GradeTableDoesNotExistsException.java
core/src/main/java/studentmanagement/service/student/exception/StudentAlreadyExistsException.java
+0
-7
...vice/student/exception/StudentAlreadyExistsException.java
core/src/main/java/studentmanagement/service/student/exception/StudentDoesNotExistException.java
+0
-7
...rvice/student/exception/StudentDoesNotExistException.java
core/src/main/java/studentmanagement/service/teacher/TeacherMapper.java
+2
-0
...java/studentmanagement/service/teacher/TeacherMapper.java
core/src/main/java/studentmanagement/service/teacher/exception/TeacherAlreadyExistsException.java
+0
-7
...vice/teacher/exception/TeacherAlreadyExistsException.java
core/src/main/java/studentmanagement/service/teacher/exception/TeacherDoesNotExistException.java
+0
-7
...rvice/teacher/exception/TeacherDoesNotExistException.java
core/src/test/java/studentmanagement/service/administrator/DefaultAdministratorServiceTest.java
+3
-6
...ervice/administrator/DefaultAdministratorServiceTest.java
core/src/test/java/studentmanagement/service/teacher/DefaultTeacherServiceTest.java
+1
-2
...management/service/teacher/DefaultTeacherServiceTest.java
model/src/main/java/studentmanagement/model/DefaultIDable.java
+0
-5
.../src/main/java/studentmanagement/model/DefaultIDable.java
model/src/main/java/studentmanagement/model/course/Course.java
+4
-4
.../src/main/java/studentmanagement/model/course/Course.java
with
92 additions
and
78 deletions
+92
-78
api/src/main/java/studentmanagement/api/cli/controller/grade/DefaultGradeCliController.java
+
1
-
1
View file @
edb8e3a5
...
...
@@ -7,7 +7,7 @@ import org.springframework.stereotype.Controller;
import
studentmanagement.api.cli.formatter.CoursesOutputFormatter
;
import
studentmanagement.model.course.dto.CourseStudentListDto
;
import
studentmanagement.model.dto.create.AddGradeRequest
;
import
studentmanagement.model.
grade.
dto.GradeEntry
;
import
studentmanagement.model.dto.GradeEntry
;
import
studentmanagement.model.key.IDableKey
;
import
studentmanagement.service.grade.GradeService
;
...
...
This diff is collapsed.
Click to expand it.
api/src/main/java/studentmanagement/api/rest/exception/ExceptionInformation.java
0 → 100644
+
6
-
0
View file @
edb8e3a5
package
studentmanagement.api.rest.exception
;
import
java.time.LocalDateTime
;
public
record
ExceptionInformation
(
String
message
,
int
statusCode
,
LocalDateTime
time
,
String
url
)
{
}
This diff is collapsed.
Click to expand it.
api/src/main/java/studentmanagement/api/rest/exception/GlobalExceptionHandlerController.java
0 → 100644
+
70
-
0
View file @
edb8e3a5
package
studentmanagement.api.rest.exception
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.context.request.WebRequest
;
import
org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
;
import
studentmanagement.model.course.exception.StudentNotInCourseException
;
import
studentmanagement.model.course.exception.TeacherNotInCourseException
;
import
studentmanagement.service.generic.exception.IDableDoesNotExistException
;
import
java.time.LocalDateTime
;
@ControllerAdvice
public
class
GlobalExceptionHandlerController
extends
ResponseEntityExceptionHandler
{
@ExceptionHandler
({
IllegalArgumentException
.
class
})
public
ResponseEntity
<
Object
>
handleIllegalArgumentException
(
IllegalArgumentException
e
,
WebRequest
request
)
{
ExceptionInformation
exceptionInformation
=
new
ExceptionInformation
(
e
.
getMessage
(),
HttpStatus
.
UNPROCESSABLE_ENTITY
.
value
(),
LocalDateTime
.
now
(),
request
.
getDescription
(
false
)
);
return
this
.
handleExceptionInternal
(
e
,
exceptionInformation
,
new
HttpHeaders
(),
HttpStatus
.
UNPROCESSABLE_ENTITY
,
request
);
}
@ExceptionHandler
({
IDableDoesNotExistException
.
class
})
public
ResponseEntity
<
Object
>
handleIllegalArgumentException
(
IDableDoesNotExistException
e
,
WebRequest
request
)
{
ExceptionInformation
exceptionInformation
=
new
ExceptionInformation
(
e
.
getMessage
(),
HttpStatus
.
NOT_FOUND
.
value
(),
LocalDateTime
.
now
(),
request
.
getDescription
(
false
)
);
return
this
.
handleExceptionInternal
(
e
,
exceptionInformation
,
new
HttpHeaders
(),
HttpStatus
.
UNPROCESSABLE_ENTITY
,
request
);
}
@ExceptionHandler
({
TeacherNotInCourseException
.
class
})
public
ResponseEntity
<
Object
>
handleIllegalArgumentException
(
TeacherNotInCourseException
e
,
WebRequest
request
)
{
ExceptionInformation
exceptionInformation
=
new
ExceptionInformation
(
e
.
getMessage
(),
HttpStatus
.
BAD_REQUEST
.
value
(),
LocalDateTime
.
now
(),
request
.
getDescription
(
false
)
);
return
this
.
handleExceptionInternal
(
e
,
exceptionInformation
,
new
HttpHeaders
(),
HttpStatus
.
BAD_REQUEST
,
request
);
}
@ExceptionHandler
({
StudentNotInCourseException
.
class
})
public
ResponseEntity
<
Object
>
handleIllegalArgumentException
(
StudentNotInCourseException
e
,
WebRequest
request
)
{
ExceptionInformation
exceptionInformation
=
new
ExceptionInformation
(
e
.
getMessage
(),
HttpStatus
.
BAD_REQUEST
.
value
(),
LocalDateTime
.
now
(),
request
.
getDescription
(
false
)
);
return
this
.
handleExceptionInternal
(
e
,
exceptionInformation
,
new
HttpHeaders
(),
HttpStatus
.
BAD_REQUEST
,
request
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
api/src/main/java/studentmanagement/api/rest/grade/DefaultGradeController.java
+
1
-
2
View file @
edb8e3a5
...
...
@@ -4,7 +4,6 @@ import org.springframework.beans.factory.annotation.Autowired;
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.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
...
...
@@ -13,7 +12,7 @@ import studentmanagement.api.rest.API;
import
studentmanagement.model.course.dto.CourseStudentListDto
;
import
studentmanagement.model.dto.create.AddGradeRequest
;
import
studentmanagement.model.dto.response.GradeDto
;
import
studentmanagement.model.
grade.
dto.GradeEntry
;
import
studentmanagement.model.dto.GradeEntry
;
import
studentmanagement.model.key.IDableKey
;
import
studentmanagement.service.grade.GradeService
;
...
...
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/course/exception/CourseAlreadyExistsException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.course.exception
;
public
class
CourseAlreadyExistsException
extends
Exception
{
public
CourseAlreadyExistsException
(
String
message
)
{
super
(
message
);
}
}
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/course/exception/CourseDoesNotExistException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.course.exception
;
public
class
CourseDoesNotExistException
extends
RuntimeException
{
public
CourseDoesNotExistException
(
String
message
)
{
super
(
message
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/grade/DefaultGradeService.java
+
1
-
1
View file @
edb8e3a5
...
...
@@ -11,7 +11,7 @@ import studentmanagement.model.dto.response.CourseIdNameDto;
import
studentmanagement.model.dto.response.GradeDto
;
import
studentmanagement.model.dto.response.StudentIdNameDto
;
import
studentmanagement.model.grade.Grade
;
import
studentmanagement.model.
grade.
dto.GradeEntry
;
import
studentmanagement.model.dto.GradeEntry
;
import
studentmanagement.model.key.IDableKey
;
import
studentmanagement.model.person.student.Student
;
import
studentmanagement.service.course.CourseService
;
...
...
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/grade/GradeMapper.java
+
2
-
0
View file @
edb8e3a5
package
studentmanagement.service.grade
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mapping
;
import
studentmanagement.model.dto.create.AddGradeRequest
;
import
studentmanagement.model.dto.response.GradeDto
;
import
studentmanagement.model.grade.Grade
;
...
...
@@ -8,6 +9,7 @@ import studentmanagement.model.grade.Grade;
@Mapper
(
componentModel
=
"spring"
)
public
interface
GradeMapper
{
@Mapping
(
target
=
"id"
,
ignore
=
true
)
GradeDto
gradeToGradeDto
(
Grade
grade
);
Grade
addGradeRequestToGrade
(
AddGradeRequest
request
);
...
...
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/grade/GradeService.java
+
1
-
1
View file @
edb8e3a5
...
...
@@ -4,7 +4,7 @@ import studentmanagement.model.course.dto.CourseStudentListDto;
import
studentmanagement.model.dto.create.AddGradeRequest
;
import
studentmanagement.model.dto.response.GradeDto
;
import
studentmanagement.model.grade.Grade
;
import
studentmanagement.model.
grade.
dto.GradeEntry
;
import
studentmanagement.model.dto.GradeEntry
;
import
studentmanagement.model.key.IDableKey
;
import
java.util.Collection
;
...
...
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/grade/exception/GradeTableAlreadyExistsException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.grade.exception
;
public
class
GradeTableAlreadyExistsException
extends
Exception
{
public
GradeTableAlreadyExistsException
(
String
message
)
{
super
(
message
);
}
}
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/grade/exception/GradeTableDoesNotExistsException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.grade.exception
;
public
class
GradeTableDoesNotExistsException
extends
Exception
{
public
GradeTableDoesNotExistsException
(
String
message
)
{
super
(
message
);
}
}
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/student/exception/StudentAlreadyExistsException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.student.exception
;
public
class
StudentAlreadyExistsException
extends
Exception
{
public
StudentAlreadyExistsException
(
String
message
)
{
super
(
message
);
}
}
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/student/exception/StudentDoesNotExistException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.student.exception
;
public
class
StudentDoesNotExistException
extends
Exception
{
public
StudentDoesNotExistException
(
String
message
)
{
super
(
message
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/teacher/TeacherMapper.java
+
2
-
0
View file @
edb8e3a5
...
...
@@ -15,5 +15,7 @@ public interface TeacherMapper {
TeacherIdNameDto
teacherToTeacherIdNameDto
(
Teacher
teacher
);
@Mapping
(
target
=
"id"
,
ignore
=
true
)
@Mapping
(
target
=
"age"
,
ignore
=
true
)
TeacherCreateResponse
teacherToTeacherCreateResponse
(
Teacher
teacher
);
}
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/teacher/exception/TeacherAlreadyExistsException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.teacher.exception
;
public
class
TeacherAlreadyExistsException
extends
Exception
{
public
TeacherAlreadyExistsException
(
String
message
)
{
super
(
message
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
core/src/main/java/studentmanagement/service/teacher/exception/TeacherDoesNotExistException.java
deleted
100644 → 0
+
0
-
7
View file @
adf5fcaf
package
studentmanagement.service.teacher.exception
;
public
class
TeacherDoesNotExistException
extends
Exception
{
public
TeacherDoesNotExistException
(
String
message
)
{
super
(
message
);
}
}
This diff is collapsed.
Click to expand it.
core/src/test/java/studentmanagement/service/administrator/DefaultAdministratorServiceTest.java
+
3
-
6
View file @
edb8e3a5
...
...
@@ -5,7 +5,6 @@ import org.junit.jupiter.api.BeforeEach;
import
org.junit.jupiter.api.Test
;
import
org.mockito.Mockito
;
import
studentmanagement.model.course.Course
;
import
studentmanagement.model.course.exception.StudentAlreadyInCourseException
;
import
studentmanagement.model.course.exception.StudentNotInCourseException
;
import
studentmanagement.model.course.exception.TeacherNotInCourseException
;
import
studentmanagement.model.dto.create.StudentCourseIdRequest
;
...
...
@@ -18,7 +17,6 @@ import studentmanagement.model.person.teacher.Degree;
import
studentmanagement.model.person.teacher.Teacher
;
import
studentmanagement.service.course.CourseService
;
import
studentmanagement.service.generic.exception.IDableDoesNotExistException
;
import
studentmanagement.service.grade.exception.GradeTableDoesNotExistsException
;
import
studentmanagement.service.student.StudentService
;
import
studentmanagement.service.teacher.TeacherService
;
...
...
@@ -77,8 +75,7 @@ class DefaultAdministratorServiceTest {
@Test
void
enroll_Throws_IDableDoesNotExistException_If_Course_Not_Found
()
throws
IDableDoesNotExistException
,
StudentAlreadyInCourseException
{
throws
IDableDoesNotExistException
{
Mockito
.
when
(
courseServiceMock
.
findById
(
courseKey
)).
thenThrow
(
new
IDableDoesNotExistException
(
"Course not found"
)
...
...
@@ -93,7 +90,7 @@ class DefaultAdministratorServiceTest {
@Test
void
dismiss_Dismisses_Student_Correctly
()
throws
IDableDoesNotExistException
,
StudentNotInCourseException
,
StudentAlreadyInCourseException
{
StudentNotInCourseException
{
StudentCourseResponse
expected
=
new
StudentCourseResponse
(
student
,
course
);
Mockito
.
when
(
courseServiceMock
.
findById
(
courseKey
)).
thenReturn
(
course
);
...
...
@@ -109,7 +106,7 @@ class DefaultAdministratorServiceTest {
@Test
void
dismiss_Throws_StudentNotInCourseException
()
throws
IDableDoesNotExistException
,
GradeTableDoesNotExistsException
{
throws
IDableDoesNotExistException
{
Mockito
.
when
(
courseServiceMock
.
findById
(
courseKey
)).
thenReturn
(
course
);
Mockito
.
when
(
studentServiceMock
.
findById
(
studentKey
)).
thenReturn
(
student
);
...
...
This diff is collapsed.
Click to expand it.
core/src/test/java/studentmanagement/service/teacher/DefaultTeacherServiceTest.java
+
1
-
2
View file @
edb8e3a5
...
...
@@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test;
import
org.mockito.Mockito
;
import
studentmanagement.data.teacher.TeacherRepository
;
import
studentmanagement.model.dto.create.TeacherCreateRequest
;
import
studentmanagement.model.person.exception.InvalidDegreeException
;
import
studentmanagement.model.person.teacher.Degree
;
import
studentmanagement.model.person.teacher.Teacher
;
...
...
@@ -21,7 +20,7 @@ class DefaultTeacherServiceTest {
}
@Test
void
add_Adds_Teacher_Correctly
()
throws
InvalidDegreeException
{
void
add_Adds_Teacher_Correctly
()
{
long
id
=
1L
;
String
name
=
"Filip"
;
Degree
degree
=
Degree
.
PHD
;
...
...
This diff is collapsed.
Click to expand it.
model/src/main/java/studentmanagement/model/DefaultIDable.java
+
0
-
5
View file @
edb8e3a5
...
...
@@ -38,9 +38,4 @@ public abstract class DefaultIDable implements IDable {
public
int
hashCode
()
{
return
id
.
hashCode
();
}
@Override
public
String
toString
()
{
return
name
+
" - "
+
id
;
}
}
This diff is collapsed.
Click to expand it.
model/src/main/java/studentmanagement/model/course/Course.java
+
4
-
4
View file @
edb8e3a5
...
...
@@ -12,7 +12,6 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.hibernate.Hibernate
;
import
studentmanagement.model.DefaultIDable
;
import
studentmanagement.model.course.exception.StudentAlreadyInCourseException
;
import
studentmanagement.model.course.exception.StudentNotInCourseException
;
import
studentmanagement.model.course.exception.TeacherNotInCourseException
;
import
studentmanagement.model.person.student.Student
;
...
...
@@ -50,7 +49,8 @@ public class Course extends DefaultIDable implements Comparable<Course> {
public
void
fire
(
Teacher
teacher
)
throws
TeacherNotInCourseException
{
if
(!
this
.
teacher
.
equals
(
teacher
))
{
throw
new
TeacherNotInCourseException
(
"Teacher: "
+
teacher
+
" is no employed in this Course"
);
throw
new
TeacherNotInCourseException
(
"Teacher with ID: "
+
teacher
.
getId
()
+
" is no employed in this Course"
);
}
this
.
teacher
=
null
;
}
...
...
@@ -59,7 +59,6 @@ public class Course extends DefaultIDable implements Comparable<Course> {
* Adds a new Student to the Course
*
* @param student - the new Student
* @throws StudentAlreadyInCourseException - if the Student is already in the Course
*/
public
Student
enroll
(
Student
student
)
{
students
.
add
(
student
);
...
...
@@ -89,7 +88,8 @@ public class Course extends DefaultIDable implements Comparable<Course> {
private
void
validateStudentInCourse
(
Student
student
)
throws
StudentNotInCourseException
{
if
(!
isEnrolled
(
student
))
{
throw
new
StudentNotInCourseException
(
"Student: "
+
student
+
" is not in the Course: "
+
getName
());
throw
new
StudentNotInCourseException
(
"Student wth ID: "
+
student
.
getId
()
+
" is not enrolled in this Course"
);
}
}
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help