1
1
package com .codedifferently .lesson26 .web ;
2
2
3
+ import com .codedifferently .lesson26 .library .Librarian ;
4
+ import com .codedifferently .lesson26 .library .Library ;
5
+ import com .codedifferently .lesson26 .library .MediaItem ;
6
+ import com .codedifferently .lesson26 .library .exceptions .MediaItemCheckedOutException ;
7
+ import com .codedifferently .lesson26 .library .search .SearchCriteria ;
8
+ import io .swagger .v3 .oas .annotations .parameters .RequestBody ;
9
+ import jakarta .validation .Valid ;
3
10
import java .io .IOException ;
4
11
import java .util .List ;
5
12
import java .util .Map ;
6
13
import java .util .Set ;
7
-
8
14
import org .springframework .http .HttpStatus ;
9
15
import org .springframework .http .ResponseEntity ;
10
16
import org .springframework .web .bind .annotation .CrossOrigin ;
14
20
import org .springframework .web .bind .annotation .PostMapping ;
15
21
import org .springframework .web .bind .annotation .RestController ;
16
22
17
- import com .codedifferently .lesson26 .library .Librarian ;
18
- import com .codedifferently .lesson26 .library .Library ;
19
- import com .codedifferently .lesson26 .library .MediaItem ;
20
- import com .codedifferently .lesson26 .library .exceptions .MediaItemCheckedOutException ;
21
- import com .codedifferently .lesson26 .library .search .SearchCriteria ;
22
-
23
- import io .swagger .v3 .oas .annotations .parameters .RequestBody ;
24
- import jakarta .validation .Valid ;
25
-
26
23
@ RestController
27
24
@ CrossOrigin
28
25
public class MediaItemsController {
@@ -44,7 +41,7 @@ public GetMediaItemsResponse getItems() {
44
41
45
42
@ GetMapping ("/items/{id}" )
46
43
public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable ("id" ) String id ) {
47
- Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
44
+ Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
48
45
if (items .isEmpty ()) {
49
46
return ResponseEntity .status (HttpStatus .NOT_FOUND ).build ();
50
47
}
@@ -54,39 +51,40 @@ public ResponseEntity<MediaItemResponse> getItemById(@PathVariable("id") String
54
51
}
55
52
56
53
@ PostMapping ("/items" )
57
- public ResponseEntity <?> addItem (@ Valid @ RequestBody MediaItemRequest request ) {
54
+ public ResponseEntity <?> addItem (@ Valid @ RequestBody MediaItemRequest request ) {
58
55
if (request == null ) {
59
- return ResponseEntity .badRequest ().body (Map .of ("errors" , List .of ("Missing required fields" )));
56
+ return ResponseEntity .badRequest ().body (Map .of ("errors" , List .of ("Missing required fields" )));
60
57
}
61
58
62
59
MediaItem newItem ;
63
60
try {
64
- newItem = MediaItemRequest .asMediaItem (request );
61
+ newItem = MediaItemRequest .asMediaItem (request );
65
62
} catch (IllegalArgumentException e ) {
66
- return ResponseEntity .badRequest ().body (Map .of ("errors" , List .of ("Unknown media item type: " + request .getType ())));
63
+ return ResponseEntity .badRequest ()
64
+ .body (Map .of ("errors" , List .of ("Unknown media item type: " + request .getType ())));
67
65
}
68
66
69
- library .
addMediaItem (
newItem ,
new Librarian (
"Jane Doe" ,
"[email protected] " ));
67
+ library .
addMediaItem (
newItem ,
new Librarian (
"Jane Doe" ,
"[email protected] " ));
70
68
71
69
return ResponseEntity .ok (Map .of ("item" , Map .of ("id" , newItem .getId ().toString ())));
72
- }
70
+ }
73
71
74
- @ DeleteMapping ("/items/{id}" )
72
+ @ DeleteMapping ("/items/{id}" )
75
73
public ResponseEntity <Map <String , List <String >>> deleteItem (@ PathVariable ("id" ) String id ) {
76
- Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
74
+ Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
77
75
if (items .isEmpty ()) {
78
76
return ResponseEntity .status (HttpStatus .NOT_FOUND ).build ();
79
77
}
80
-
78
+
81
79
MediaItem item = items .iterator ().next ();
82
80
83
81
try {
84
82
library .removeMediaItem (item , librarian );
85
83
} catch (MediaItemCheckedOutException e ) {
86
- return ResponseEntity .status (HttpStatus .BAD_REQUEST )
84
+ return ResponseEntity .status (HttpStatus .BAD_REQUEST )
87
85
.body (Map .of ("errors" , List .of (e .getMessage ())));
88
86
}
89
87
90
88
return ResponseEntity .noContent ().build ();
91
- }
89
+ }
92
90
}
0 commit comments