PersonneController.java
5.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package etunicorn.controller;
import etunicorn.RestrictedTo;
import etunicorn.entity.Personne;
import etunicorn.entity.Role;
import etunicorn.exception.EntityRequestMismatchException;
import etunicorn.exception.NotEnoughDataException;
import etunicorn.exception.ObjectNotFoundException;
import etunicorn.generated.model.UpdatePersonneByIdRequest;
import etunicorn.generated.model.UpdatePersonneRequest;
import etunicorn.repository.PersonneRepository;
import etunicorn.repository.RoleRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* etunicorn-server
* Copyright © 2017 Le Club Info Polytech Lille
* Tous droits réservés
*/
@RestController
public class PersonneController extends BaseController implements etunicorn.generated.PersonneController {
@Autowired
private PersonneRepository personneRepository;
@Autowired
private RoleRepository roleRepository;
@Override
@RestrictedTo("PERSONNE_LIST")
public ResponseEntity<?> getPersonne() {
return new ResponseEntity<List>((List) this.personneRepository.findAll(), HttpStatus.OK);
}
private ResponseEntity<?> mergePersonne(Personne personne, String carte, Date naissance, String login, String role) {
if (carte != null) {
personne.setCarte(carte);
}
if (naissance != null) {
personne.setNaissance(naissance);
}
if (login != null) {
personne.setLogin(login);
}
// TODO Il faut que login ou carte soient mis
if (role != null) {
if (hasPermission("PERSONNE_ROLE")) {
Role roleObj = roleRepository.findByNom(role);
personne.setRole(roleObj);
if (roleObj == null) {
return new ResponseEntity<Object>("Rôle inconnu", HttpStatus.NOT_FOUND);
}
} else {
return new ResponseEntity<Object>(HttpStatus.FORBIDDEN);
}
}
try {
this.personneRepository.save(personne);
} catch (DataIntegrityViolationException e) {
return new ResponseEntity<Object>(HttpStatus.CONFLICT);
}
return new ResponseEntity<Object>(personne, HttpStatus.CREATED);
}
@Override
@RestrictedTo("PERSONNE_ADD")
public ResponseEntity<?> updatePersonne(@Valid @RequestBody UpdatePersonneRequest updatePersonneRequest) {
Personne personne = new Personne();
try {
mergeRequestInEntity(updatePersonneRequest, personne);
} catch (EntityRequestMismatchException e) {
return generateError(e);
} catch (NotEnoughDataException e) {
return generateError(HttpStatus.BAD_REQUEST, e, "Il n'y a pas suffisament de données pour identifier un sous-objet");
} catch (ObjectNotFoundException e) {
return generateError(HttpStatus.NOT_FOUND, e, "Sous-objet non trouvé");
}
return new ResponseEntity<Object>(personne, HttpStatus.CREATED);
}
public ResponseEntity<?> updatePersonne(@RequestParam(required = false) String carte, @RequestParam(required = false) Date naissance, @RequestParam(required = false) String login, @RequestParam(required = false) String role) {
Personne personne = new Personne();
return mergePersonne(personne, carte, naissance, login, role);
}
@Override
@RestrictedTo("PERSONNE_GET")
public ResponseEntity<?> getPersonneById(@PathVariable BigDecimal idPersonne) {
Personne personne = personneRepository.findById(idPersonne.intValueExact());
if (personne == null) {
return new ResponseEntity<Object>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<Object>(personne, HttpStatus.OK);
}
@Override
@RestrictedTo("PERSONNE_EDIT")
public ResponseEntity<?> updatePersonneById(@PathVariable BigDecimal idPersonne, @Valid @RequestBody UpdatePersonneByIdRequest updatePersonneByIdRequest) {
return null;
}
public ResponseEntity<?> updatePersonneById(@PathVariable BigDecimal idPersonne, @RequestParam(required = false) String carte, @RequestParam(required = false) Date naissance, @RequestParam(required = false) String login, @RequestParam(required = false) String role) {
Personne personne = personneRepository.findById(idPersonne.intValueExact());
if (personne == null) {
return new ResponseEntity<Object>(HttpStatus.NOT_FOUND);
}
return mergePersonne(personne, carte, naissance, login, role);
}
@Override
@RestrictedTo("PERSONNE_REMOVE")
public ResponseEntity<?> deletePersonneById(@PathVariable BigDecimal idPersonne) {
Personne personne = personneRepository.findById(idPersonne.intValueExact());
if (personne == null) {
return new ResponseEntity<Object>(HttpStatus.NOT_FOUND);
}
personneRepository.delete(personne);
return new ResponseEntity<Object>(personne, HttpStatus.NO_CONTENT);
}
}