1
1
package com .codedifferently .lesson26 .web ;
2
- import com .codedifferently .lesson26 .library .Librarian ;
3
- import com .codedifferently .lesson26 .library .Library ;
4
- import com .codedifferently .lesson26 .library .MediaItem ;
5
- import com .codedifferently .lesson26 .library .search .SearchCriteria ;
6
- import com .codedifferently .lesson26 .web .GetMediaItemsResponse .GetMediaItemsResponseBuilder ;
7
2
8
- import jakarta .validation .Valid ;
9
3
import java .io .IOException ;
10
4
import java .util .List ;
11
5
import java .util .Map ;
12
6
import java .util .Set ;
13
7
import java .util .UUID ;
8
+
14
9
import org .springframework .http .ResponseEntity ;
15
10
import org .springframework .validation .FieldError ;
16
11
import org .springframework .web .bind .MethodArgumentNotValidException ;
23
18
import org .springframework .web .bind .annotation .RequestBody ;
24
19
import org .springframework .web .bind .annotation .RequestMapping ;
25
20
import org .springframework .web .bind .annotation .RestController ;
21
+
22
+ import com .codedifferently .lesson26 .library .Librarian ;
23
+ import com .codedifferently .lesson26 .library .Library ;
24
+ import com .codedifferently .lesson26 .library .MediaItem ;
26
25
import com .codedifferently .lesson26 .library .search .SearchCriteria ;
27
26
27
+ import jakarta .validation .Valid ;
28
28
29
29
@ RestController
30
30
@ CrossOrigin
@@ -33,10 +33,12 @@ public class MediaItemsController {
33
33
34
34
private final Library library ;
35
35
private final Librarian librarian ;
36
+
36
37
public MediaItemsController (Library library ) throws IOException {
37
38
this .library = library ;
38
39
this .librarian = library .getLibrarians ().stream ().findFirst ().orElseThrow ();
39
40
}
41
+
40
42
@ GetMapping ("/items" )
41
43
public ResponseEntity <GetMediaItemsResponse > getItems () {
42
44
Set <MediaItem > items = library .search (SearchCriteria .builder ().build ());
@@ -48,7 +50,7 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
48
50
@ GetMapping ("/items/{id}" )
49
51
public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable String id ) {
50
52
try {
51
- Set <MediaItem > items = library .search ((( Object ) SearchCriteria .builder ()) .id (id ).build ());
53
+ Set <MediaItem > items = library .search ((SearchCriteria .builder ().id (id ).build () ));
52
54
if (items .isEmpty ()) {
53
55
return ResponseEntity .notFound ().build ();
54
56
}
@@ -60,20 +62,19 @@ public ResponseEntity<MediaItemResponse> getItemById(@PathVariable String id) {
60
62
}
61
63
62
64
@ PostMapping ("/items" )
63
- public ResponseEntity <Object > createItem (
64
- @ Valid @ RequestBody CreateMediaItemRequest request ) {
65
+ public ResponseEntity <Object > createItem (@ Valid @ RequestBody CreateMediaItemRequest request ) {
65
66
try {
66
67
MediaItem item = MediaItemRequest .asMediaItem (request .getItem ());
67
68
library .addMediaItem (item , librarian );
68
- var response = (( GetMediaItemsResponseBuilder ) CreateMediaItemResponse .builder ()).item (MediaItemResponse .from (item )).build ();
69
+ var response = (CreateMediaItemResponse .builder ()).item (MediaItemResponse .from (item )).build ();
69
70
return ResponseEntity .ok (response );
70
71
} catch (IllegalArgumentException e ) {
71
72
return ResponseEntity .badRequest ().build ();
72
73
}
73
74
}
74
75
75
76
@ DeleteMapping ("/items/{id}" )
76
- public ResponseEntity <Void > deleteItemById (@ PathVariable ("id" ) String id ) {
77
+ public ResponseEntity <Void > deleteItemById (@ PathVariable ("id" ) String id ) {
77
78
try {
78
79
UUID uuid = UUID .fromString (id );
79
80
Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
@@ -94,4 +95,4 @@ public ResponseEntity<Map<String, List<String>>> handleValidationErrors(
94
95
ex .getBindingResult ().getFieldErrors ().stream ().map (FieldError ::getDefaultMessage ).toList ();
95
96
return ResponseEntity .badRequest ().body (Map .of ("errors" , errors ));
96
97
}
97
- }
98
+ }
0 commit comments