11package com .codedifferently .lesson26 .web ;
22
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 .search .SearchCriteria ;
37import java .io .IOException ;
48import java .util .List ;
59import java .util .Optional ;
610import java .util .Set ;
711import java .util .UUID ;
8-
12+ import org . springframework . http . HttpStatus ;
913import org .springframework .http .ResponseEntity ;
1014import org .springframework .web .bind .annotation .CrossOrigin ;
1115import org .springframework .web .bind .annotation .DeleteMapping ;
1620import org .springframework .web .bind .annotation .RequestMapping ;
1721import org .springframework .web .bind .annotation .RestController ;
1822
19- import com .codedifferently .lesson26 .library .Librarian ;
20- import com .codedifferently .lesson26 .library .Library ;
21- import com .codedifferently .lesson26 .library .MediaItem ;
22- import com .codedifferently .lesson26 .library .search .SearchCriteria ;
23-
2423@ RestController
2524@ RequestMapping ("/items" )
2625@ CrossOrigin
@@ -33,51 +32,66 @@ public MediaItemsController(Library library) throws IOException {
3332 this .librarian = library .getLibrarians ().stream ().findFirst ().orElseThrow ();
3433 }
3534
36-
37-
3835 @ GetMapping ()
39- public ResponseEntity <GetMediaItemsResponse > getItemById () {
40- Set <MediaItem > items = library .search (SearchCriteria .builder ().build ());
36+ public ResponseEntity <GetMediaItemsResponse > getItemById () {
37+ Set <MediaItem > items = library .search (SearchCriteria .builder ().build ());
38+ if (items .isEmpty ()) {
39+ ResponseEntity .noContent ();
40+ }
4141 List <MediaItemResponse > responseItems = items .stream ().map (MediaItemResponse ::from ).toList ();
4242 var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
4343 return ResponseEntity .ok (response );
44- }
45-
46- @ GetMapping (value = "/{id}" )
47- public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable ("id" ) UUID id ) {
48-
49- System .out .println (id .toString ());
44+ }
5045
46+ @ GetMapping (value = "/{id}" )
47+ public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable ("id" ) UUID id ) {
5148
52- Set < MediaItem > items = library . search ( SearchCriteria . builder (). id ( id .toString ()). build ());
49+ System . out . println ( id .toString ());
5350
54- Optional <MediaItem > matchedItem = items .stream ()
55- .filter (item -> item .getId ().equals (id ))
56- .findFirst ();
57- System .out .println ("items" );
58- System .out .println (items );
59- System .out .println (matchedItem );
60- System .out .println ("mathcedItems" );
61- return matchedItem .map (item -> {
62- MediaItemResponse responseItem = MediaItemResponse .from (item );
63- return ResponseEntity .ok (responseItem );
64- }).orElse (ResponseEntity .notFound ().build ());
65- }
51+ Set <MediaItem > items = library .search (SearchCriteria .builder ().id (id .toString ()).build ());
52+ Optional <MediaItem > matchedItem =
53+ items .stream ().filter (item -> item .getId ().equals (id )).findFirst ();
54+ System .out .println ("items" );
55+ System .out .println (items );
56+ System .out .println (matchedItem );
57+ System .out .println ("mathcedItems" );
58+ return matchedItem
59+ .map (
60+ item -> {
61+ MediaItemResponse responseItem = MediaItemResponse .from (item );
62+ return ResponseEntity .ok (responseItem );
63+ })
64+ .orElse (ResponseEntity .notFound ().build ());
65+ }
6666
6767 @ PostMapping ()
68- public CreateMediaItemResponse postItems (@ RequestBody MediaItemRequest request ) {
68+ public ResponseEntity <?> postItems (@ RequestBody ( required = true ) MediaItemRequest request ) {
6969 MediaItem newMediaItem = MediaItemRequest .asMediaItem (request );
7070
71+ if (newMediaItem .getTitle () == null
72+ || newMediaItem .getType () == null
73+ || request .getType () == null ) {
74+
75+ return ResponseEntity .status (HttpStatus .BAD_REQUEST ).body (request );
76+ }
77+
7178 library .addMediaItem (newMediaItem , librarian );
7279
73- MediaItemResponse responseItem = MediaItemResponse .from (newMediaItem );
74- return CreateMediaItemResponse .builder ().item (responseItem ).build ();
80+ return ResponseEntity .status (HttpStatus .CREATED ).body (request );
7581 }
7682
7783 @ DeleteMapping (value = "/{id}" )
78- public Set <MediaItem > deleteItem (@ PathVariable ("id" ) UUID id ){
84+ public ResponseEntity <Void > deleteItem (@ PathVariable ("id" ) UUID id ) {
85+ Set <MediaItem > test1 = library .search (SearchCriteria .builder ().id (id .toString ()).build ());
86+
87+ Set <MediaItem > item = library .search (SearchCriteria .builder ().id (id .toString ()).build ());
88+ if (item .isEmpty ()) {
89+ ResponseEntity .notFound ().build ();
90+ } else if (!test1 .contains (item .iterator ().next ())) {
91+ ResponseEntity .notFound ().build ();
92+ }
7993 library .removeMediaItem (id , librarian );
80- Set <MediaItem > libraryAltercation = library .search (SearchCriteria .builder ().build ());
81- return libraryAltercation ;
94+ // Set<MediaItem> libraryAltercation = library.search(SearchCriteria.builder().build());
95+ return ResponseEntity . noContent (). build () ;
8296 }
8397}
0 commit comments