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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
package com.ufund.api.ufundapi.controller;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
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 com.ufund.api.ufundapi.model.User;
import com.ufund.api.ufundapi.persistence.UserDAO;
@RestController
@RequestMapping("cupboard")
public class UserController {
private static final Logger LOG = Logger.getLogger(CupboardController.class.getName());
private final UserDAO UserDAO;
/**
* Create a cupboard controller to receive REST signals
*
* @param UserDAO The Data Access Object
*/
public UserController(UserDAO userDAO) {
this.UserDAO = userDAO;
}
/**
* Creates a User with the provided object
*
* @param user The user to create
* @return OK response and the user if it was successful, INTERNAL_SERVER_ERROR otherwise
*/
@PostMapping("")
public ResponseEntity<User> createUser(@RequestBody User user) {
try {
if (UserDAO.createUser(user) != null) {
return new ResponseEntity<>(user, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.CONFLICT);
}
} catch (IOException ex) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* Responds to the GET request for all {@linkplain User user}
*
* @return ResponseEntity with array of {@link User user} objects (may be empty)
* and
* HTTP status of OK<br>
* ResponseEntity with HTTP status of INTERNAL_SERVER_ERROR otherwise
*/
@GetMapping("")
public ResponseEntity<User[]> getUseers() {
LOG.info("GET /users");
try {
User[] users = UserDAO.getUsers();
return new ResponseEntity<>(users, HttpStatus.OK);
} catch (IOException e) {
LOG.log(Level.SEVERE, e.getLocalizedMessage());
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* Responds to the GET request for a {@linkplain User user} for the given id
*
* @param id The id used to locate the {@link User user}
*
* @return ResponseEntity with {@link User user} object and HTTP status of OK if
* found<br>
* ResponseEntity with HTTP status of NOT_FOUND if not found<br>
* ResponseEntity with HTTP status of INTERNAL_SERVER_ERROR otherwise
*/
@GetMapping("/{name}")
public ResponseEntity<User> getUser(@PathVariable String name) {
LOG.log(Level.INFO, "GET /user/{0}", name);
try {
User user = UserDAO.getUser(name);
if (user != null) {
return new ResponseEntity<>(user, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
} catch (IOException e) {
LOG.log(Level.SEVERE, e.getLocalizedMessage());
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* Updates a User with the provided one
*
* @param user The user to update
* @return OK response and the user if it was successful, or INTERNAL_SERVER_ERROR if there was an issue
*/
@PutMapping("")
public ResponseEntity<User> updateUser(@RequestBody User user, String string) {
try {
user = UserDAO.updateUser(user, string);
if (user != null) {
return new ResponseEntity<>(user, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
} catch (IOException e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* Deletes a user with the desired name
*
* @param name The name of the user
* @return OK if the user was deleted, NOT_FOUND if the user was not found, or INTERNAL_SERVER_ERROR if an error occurred
*/
@DeleteMapping("/{name}")
public ResponseEntity<User> deleteUser(@PathVariable String name) {
try {
if (UserDAO.deleteUser(name)) {
return new ResponseEntity<>(HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
} catch (IOException e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
|