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 .search .SearchCriteria ;
3
7
import java .io .IOException ;
4
8
import java .util .List ;
5
9
import java .util .Optional ;
6
10
import java .util .Set ;
7
11
import java .util .UUID ;
8
-
12
+ import org . springframework . http . HttpStatus ;
9
13
import org .springframework .http .ResponseEntity ;
10
14
import org .springframework .web .bind .annotation .CrossOrigin ;
11
15
import org .springframework .web .bind .annotation .DeleteMapping ;
16
20
import org .springframework .web .bind .annotation .RequestMapping ;
17
21
import org .springframework .web .bind .annotation .RestController ;
18
22
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
-
24
23
@ RestController
25
24
@ RequestMapping ("/items" )
26
25
@ CrossOrigin
@@ -33,51 +32,66 @@ public MediaItemsController(Library library) throws IOException {
33
32
this .librarian = library .getLibrarians ().stream ().findFirst ().orElseThrow ();
34
33
}
35
34
36
-
37
-
38
35
@ 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
+ }
41
41
List <MediaItemResponse > responseItems = items .stream ().map (MediaItemResponse ::from ).toList ();
42
42
var response = GetMediaItemsResponse .builder ().items (responseItems ).build ();
43
43
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
+ }
50
45
46
+ @ GetMapping (value = "/{id}" )
47
+ public ResponseEntity <MediaItemResponse > getItemById (@ PathVariable ("id" ) UUID id ) {
51
48
52
- Set < MediaItem > items = library . search ( SearchCriteria . builder (). id ( id .toString ()). build ());
49
+ System . out . println ( id .toString ());
53
50
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
+ }
66
66
67
67
@ PostMapping ()
68
- public CreateMediaItemResponse postItems (@ RequestBody MediaItemRequest request ) {
68
+ public ResponseEntity <?> postItems (@ RequestBody ( required = true ) MediaItemRequest request ) {
69
69
MediaItem newMediaItem = MediaItemRequest .asMediaItem (request );
70
70
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
+
71
78
library .addMediaItem (newMediaItem , librarian );
72
79
73
- MediaItemResponse responseItem = MediaItemResponse .from (newMediaItem );
74
- return CreateMediaItemResponse .builder ().item (responseItem ).build ();
80
+ return ResponseEntity .status (HttpStatus .CREATED ).body (request );
75
81
}
76
82
77
83
@ 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
+ }
79
93
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 () ;
82
96
}
83
97
}
0 commit comments