11package 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 ;
72
8- import jakarta .validation .Valid ;
93import java .io .IOException ;
104import java .util .List ;
115import java .util .Map ;
126import java .util .Set ;
137import java .util .UUID ;
8+
149import org .springframework .http .ResponseEntity ;
1510import org .springframework .validation .FieldError ;
1611import org .springframework .web .bind .MethodArgumentNotValidException ;
2318import org .springframework .web .bind .annotation .RequestBody ;
2419import org .springframework .web .bind .annotation .RequestMapping ;
2520import 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 ;
2625import com .codedifferently .lesson26 .library .search .SearchCriteria ;
2726
27+ import jakarta .validation .Valid ;
2828
2929@ RestController
3030@ CrossOrigin
@@ -33,10 +33,12 @@ public class MediaItemsController {
3333
3434 private final Library library ;
3535 private final Librarian librarian ;
36+
3637 public MediaItemsController (Library library ) throws IOException {
3738 this .library = library ;
3839 this .librarian = library .getLibrarians ().stream ().findFirst ().orElseThrow ();
3940 }
41+
4042 @ GetMapping ("/items" )
4143 public ResponseEntity <GetMediaItemsResponse > getItems () {
4244 Set <MediaItem > items = library .search (SearchCriteria .builder ().build ());
@@ -48,7 +50,7 @@ public ResponseEntity<GetMediaItemsResponse> getItems() {
4850 @ GetMapping ("/items/{id}" )
4951 public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable String id ) {
5052 try {
51- Set <MediaItem > items = library .search ((( Object ) SearchCriteria .builder ()) .id (id ).build ());
53+ Set <MediaItem > items = library .search ((SearchCriteria .builder ().id (id ).build () ));
5254 if (items .isEmpty ()) {
5355 return ResponseEntity .notFound ().build ();
5456 }
@@ -60,20 +62,19 @@ public ResponseEntity<MediaItemResponse> getItemById(@PathVariable String id) {
6062 }
6163
6264 @ PostMapping ("/items" )
63- public ResponseEntity <Object > createItem (
64- @ Valid @ RequestBody CreateMediaItemRequest request ) {
65+ public ResponseEntity <Object > createItem (@ Valid @ RequestBody CreateMediaItemRequest request ) {
6566 try {
6667 MediaItem item = MediaItemRequest .asMediaItem (request .getItem ());
6768 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 ();
6970 return ResponseEntity .ok (response );
7071 } catch (IllegalArgumentException e ) {
7172 return ResponseEntity .badRequest ().build ();
7273 }
7374 }
7475
7576 @ DeleteMapping ("/items/{id}" )
76- public ResponseEntity <Void > deleteItemById (@ PathVariable ("id" ) String id ) {
77+ public ResponseEntity <Void > deleteItemById (@ PathVariable ("id" ) String id ) {
7778 try {
7879 UUID uuid = UUID .fromString (id );
7980 Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id ).build ());
@@ -94,4 +95,4 @@ public ResponseEntity<Map<String, List<String>>> handleValidationErrors(
9495 ex .getBindingResult ().getFieldErrors ().stream ().map (FieldError ::getDefaultMessage ).toList ();
9596 return ResponseEntity .badRequest ().body (Map .of ("errors" , errors ));
9697 }
97- }
98+ }
0 commit comments