Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
Freshpass Poc
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Giridhari Sahoo
Freshpass Poc
Commits
ab33b427
Commit
ab33b427
authored
Nov 22, 2024
by
Giridhari Sahoo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding validation to the controller
parent
2f5528af
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
12 deletions
+89
-12
EmployeeController.java
...com/nisum/Employeeinfo/controller/EmployeeController.java
+46
-12
CommonServiceValidator.java
.../nisum/Employeeinfo/validator/CommonServiceValidator.java
+43
-0
No files found.
src/main/java/com/nisum/Employeeinfo/controller/EmployeeController.java
View file @
ab33b427
...
@@ -5,6 +5,7 @@ import com.nisum.Employeeinfo.mapper.EmployeeMapper;
...
@@ -5,6 +5,7 @@ import com.nisum.Employeeinfo.mapper.EmployeeMapper;
import
com.nisum.Employeeinfo.model.Employee
;
import
com.nisum.Employeeinfo.model.Employee
;
import
com.nisum.Employeeinfo.service.EmployeeService
;
import
com.nisum.Employeeinfo.service.EmployeeService
;
import
com.nisum.Employeeinfo.service.EmployeeServiceImpl
;
import
com.nisum.Employeeinfo.service.EmployeeServiceImpl
;
import
com.nisum.Employeeinfo.validator.CommonServiceValidator
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -20,38 +21,71 @@ public class EmployeeController {
...
@@ -20,38 +21,71 @@ public class EmployeeController {
@Autowired
@Autowired
private
EmployeeService
employeeService
;
private
EmployeeService
employeeService
;
@Autowired
private
CommonServiceValidator
validator
;
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
EmployeeController
.
class
);
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
EmployeeController
.
class
);
@PostMapping
(
"/addEmployee"
)
@PostMapping
(
"/addEmployee"
)
public
Mono
<
ResponseEntity
<
Employee
>>
addEmployee
(
@RequestBody
Mono
<
EmployeeDto
>
mono
){
public
Mono
<
ResponseEntity
<
Employee
>>
addEmployee
(
@RequestBody
Mono
<
EmployeeDto
>
mono
){
return
employeeService
.
addEmployee
(
mono
)
// return employeeService.addEmployee(mono)
.
map
(
ResponseEntity:
:
ok
);
// .map(ResponseEntity::ok);
return
mono
.
doOnNext
(
employeeDto
->
log
.
info
(
"validating incoming employee data: {}"
,
employeeDto
))
.
flatMap
(
employeeDto
->
{
Employee
employee
=
EmployeeMapper
.
toEntity
(
employeeDto
);
return
validateEmployee
(
employee
)
.
then
(
employeeService
.
addEmployee
(
Mono
.
just
(
employeeDto
)));
})
.
map
(
ResponseEntity:
:
ok
)
.
doOnError
(
error
->
log
.
error
(
"Error while adding employee: {}"
,
error
.
getMessage
()));
}
}
@GetMapping
(
"/getEmployeeById/{id}"
)
@GetMapping
(
"/getEmployeeById/{id}"
)
public
Mono
<
Employee
>
getEmployeeById
(
@PathVariable
Integer
id
){
public
Mono
<
ResponseEntity
<
Employee
>
>
getEmployeeById
(
@PathVariable
Integer
id
){
return
employeeService
.
getEmployeeById
(
id
)
// return employeeService.getEmployeeById(id)
.
doOnNext
(
employee
->
log
.
info
(
"received employee {}"
,
employee
));
// .doOnNext(employee -> log.info("received employee {}",employee));
return
validator
.
isEmployeeIdValid
(
id
)
.
flatMap
(
valid
->
employeeService
.
getEmployeeById
(
id
))
.
map
(
ResponseEntity:
:
ok
)
.
doOnError
(
error
->
log
.
error
(
"Error fetching employee by ID: {}"
,
error
.
getMessage
()));
}
}
@GetMapping
(
"/getAllEmployee"
)
@GetMapping
(
"/getAllEmployee"
)
public
Flux
<
Employee
>
getAllEmployee
(){
public
Flux
<
Employee
>
getAllEmployee
(){
return
employeeService
.
getAllEmployee
()
return
employeeService
.
getAllEmployee
()
.
doOnNext
(
employee
->
log
.
info
(
"received all employee {}"
,
employee
));
.
doOnNext
(
employee
->
log
.
info
(
"Processing employee data: {}"
,
employee
))
.
doOnError
(
error
->
log
.
error
(
"Error fetching employees: {}"
,
error
.
getMessage
()));
}
}
@PutMapping
(
"/{id}/updateEmployee"
)
@PutMapping
(
"/{id}/updateEmployee"
)
public
Mono
<
Employee
>
updateEmployee
(
@PathVariable
Integer
id
,
@RequestBody
Mono
<
EmployeeDto
>
updatedEmployee
){
public
Mono
<
ResponseEntity
<
Employee
>>
updateEmployee
(
@PathVariable
Integer
id
,
@RequestBody
Mono
<
EmployeeDto
>
updatedEmployee
)
{
return
validator
.
isEmployeeIdValid
(
id
)
return
employeeService
.
updateEmployee
(
id
,
updatedEmployee
);
.
flatMap
(
valid
->
updatedEmployee
.
flatMap
(
dto
->
{
Employee
employee
=
EmployeeMapper
.
toEntity
(
dto
);
return
validateEmployee
(
employee
)
.
then
(
employeeService
.
updateEmployee
(
id
,
Mono
.
just
(
dto
)));
})
)
.
map
(
ResponseEntity:
:
ok
)
.
doOnError
(
error
->
log
.
error
(
"Error updating employee: {}"
,
error
.
getMessage
()));
}
}
@DeleteMapping
(
"/deleteMapping/{id}"
)
@DeleteMapping
(
"/deleteMapping/{id}"
)
public
Mono
<
Void
>
deleteEmployee
(
@PathVariable
Integer
id
){
public
Mono
<
ResponseEntity
<
Object
>>
deleteEmployee
(
@PathVariable
Integer
id
){
return
validator
.
isEmployeeIdValid
(
id
)
.
flatMap
(
valid
->
employeeService
.
deleteEmployee
(
id
))
.
thenReturn
(
ResponseEntity
.
ok
().
build
())
.
doOnError
(
error
->
log
.
error
(
"Error deleting employee: {}"
,
error
.
getMessage
()));
}
return
employeeService
.
deleteEmployee
(
id
);
private
Mono
<
Void
>
validateEmployee
(
Employee
employee
)
{
return
validator
.
isEmployeeNameValid
(
employee
.
getName
())
.
then
(
validator
.
isEmployeeSalaryValid
(
employee
.
getSal
()))
.
then
();
}
}
}
}
src/main/java/com/nisum/Employeeinfo/validator/CommonServiceValidator.java
View file @
ab33b427
package
com
.
nisum
.
Employeeinfo
.
validator
;
package
com
.
nisum
.
Employeeinfo
.
validator
;
import
com.nisum.Employeeinfo.errorcode.ApiErrorCode
;
import
com.nisum.Employeeinfo.exception.EmployeeNotFoundException
;
import
com.nisum.Employeeinfo.exception.InvalidEmployeeDataException
;
import
com.nisum.Employeeinfo.model.Employee
;
import
org.springframework.stereotype.Component
;
import
reactor.core.publisher.Mono
;
@Component
public
class
CommonServiceValidator
{
public
class
CommonServiceValidator
{
//validate if employee id is not null
public
Mono
<
Boolean
>
isEmployeeIdValid
(
Integer
id
)
{
if
(
id
!=
null
)
{
return
Mono
.
just
(
true
);
}
return
Mono
.
error
(
new
InvalidEmployeeDataException
(
ApiErrorCode
.
INVALID_EMPLOYEE_DATA
,
"Employee ID cannot be null"
));
}
// Validate if Employee name is not null or empty
public
Mono
<
Boolean
>
isEmployeeNameValid
(
String
name
)
{
if
(
name
!=
null
&&
!
name
.
trim
().
isEmpty
())
{
return
Mono
.
just
(
true
);
}
return
Mono
.
error
(
new
InvalidEmployeeDataException
(
ApiErrorCode
.
INVALID_EMPLOYEE_DATA
,
"Employee name cannot be empty"
));
}
// Validate if Employee salary is non-negative
public
Mono
<
Boolean
>
isEmployeeSalaryValid
(
Double
sal
)
{
if
(
sal
!=
null
&&
sal
>=
0
)
{
return
Mono
.
just
(
true
);
}
return
Mono
.
error
(
new
InvalidEmployeeDataException
(
ApiErrorCode
.
INVALID_EMPLOYEE_DATA
,
"Employee salary must be non-negative"
));
}
// Validate if the Employee object is valid as a whole
public
Mono
<
Boolean
>
isEmployeeObjectValid
(
Employee
employee
)
{
if
(
employee
==
null
)
{
return
Mono
.
error
(
new
EmployeeNotFoundException
(
ApiErrorCode
.
EMPLOYEE_NOT_FOUND
,
"Employee object cannot be null"
));
}
return
isEmployeeIdValid
(
employee
.
getId
())
.
flatMap
(
valid
->
isEmployeeNameValid
(
employee
.
getName
()))
.
flatMap
(
valid
->
isEmployeeSalaryValid
(
employee
.
getSal
()));
}
}
}
Write
Preview
Markdown
is supported
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