Skip to content

Commit ec3726d

Browse files
committed
Modify code and added lombok @
1 parent e3a1c78 commit ec3726d

File tree

2 files changed

+48
-91
lines changed

2 files changed

+48
-91
lines changed
Lines changed: 11 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,30 @@
11
package com.kaluzny.domain;
22

3+
import lombok.*;
4+
35
import javax.persistence.*;
46
import java.util.ArrayList;
57
import java.util.List;
68

79
@Entity
10+
@Getter
11+
@Setter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
@EqualsAndHashCode
15+
@ToString
816
public class Book {
917

1018
@Id
1119
@GeneratedValue(strategy = GenerationType.SEQUENCE)
1220
private Long id;
21+
1322
private String name;
23+
1424
private String description;
25+
1526
@ElementCollection(fetch = FetchType.EAGER)
1627
@CollectionTable(name = "tag")
1728
@Column(name = "Value")
1829
private List<String> tags = new ArrayList<>();
19-
20-
public Book(String name, String description, List<String> tags) {
21-
this.name = name;
22-
this.description = description;
23-
this.tags = tags;
24-
}
25-
26-
public Book() {
27-
}
28-
29-
public Long getId() {
30-
return id;
31-
}
32-
33-
public String getName() {
34-
return name;
35-
}
36-
37-
public void setName(String name) {
38-
this.name = name;
39-
}
40-
41-
public String getDescription() {
42-
return description;
43-
}
44-
45-
public void setDescription(String description) {
46-
this.description = description;
47-
}
48-
49-
50-
public List<String> getTags() {
51-
return tags;
52-
}
53-
54-
public void setTags(List<String> tags) {
55-
this.tags = tags;
56-
}
57-
58-
@Override
59-
public String toString() {
60-
return "Book{" +
61-
"id=" + id +
62-
", name='" + name + '\'' +
63-
", description='" + description + '\'' +
64-
", tags=" + tags +
65-
'}';
66-
}
6730
}

src/main/java/com/kaluzny/web/BookRestController.java

Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,73 +2,67 @@
22

33
import com.kaluzny.domain.Book;
44
import com.kaluzny.domain.BookRepository;
5+
import lombok.RequiredArgsConstructor;
56
import org.springframework.http.HttpStatus;
6-
import org.springframework.http.ResponseEntity;
7+
import org.springframework.http.MediaType;
78
import org.springframework.web.bind.annotation.*;
89

9-
import javax.inject.Inject;
1010
import java.util.Collection;
1111

1212
@RestController
13-
@RequestMapping("/api/books")
13+
@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
14+
@RequiredArgsConstructor
1415
public class BookRestController {
1516

16-
private BookRepository repository;
17+
private final BookRepository repository;
1718

18-
@Inject
19-
public void setRepository(BookRepository repository) {
20-
this.repository = repository;
19+
@PostMapping("/books")
20+
@ResponseStatus(HttpStatus.CREATED)
21+
public Book addBook(@RequestBody Book book) {
22+
return repository.save(book);
2123
}
2224

23-
@RequestMapping(
24-
method = RequestMethod.POST)
25-
public ResponseEntity<?> addBook(@RequestBody Book book) {
26-
return new ResponseEntity<>(repository.save(book), HttpStatus.CREATED);
25+
@GetMapping("/books")
26+
@ResponseStatus(HttpStatus.OK)
27+
public Collection<Book> getAllBooks() {
28+
return repository.findAll();
2729
}
2830

29-
@RequestMapping(
30-
method = RequestMethod.GET)
31-
public ResponseEntity<Collection<Book>> getAllBooks() {
32-
return new ResponseEntity<>(repository.findAll(), HttpStatus.OK);
31+
@GetMapping("/books/{id}")
32+
@ResponseStatus(HttpStatus.OK)
33+
public Book getBookWithId(@PathVariable Long id) {
34+
return repository.findOne(id);
3335
}
3436

35-
@RequestMapping(
36-
value = "/{id}",
37-
method = RequestMethod.GET)
38-
public ResponseEntity<Book> getBookWithId(@PathVariable Long id) {
39-
return new ResponseEntity<>(repository.findOne(id), HttpStatus.OK);
37+
@GetMapping(value = "/books", params = {"name"})
38+
@ResponseStatus(HttpStatus.OK)
39+
public Collection<Book> findBookWithName(@RequestParam(value = "name") String name) {
40+
return repository.findByName(name);
4041
}
4142

42-
@RequestMapping(
43-
params = {"name"},
44-
method = RequestMethod.GET)
45-
public ResponseEntity<Collection<Book>> findBookWithName(@RequestParam(value = "name") String name) {
46-
return new ResponseEntity<>(repository.findByName(name), HttpStatus.OK);
43+
@PutMapping("/books/{id}")
44+
@ResponseStatus(HttpStatus.OK)
45+
public Book updateBookFromDB(@PathVariable("id") long id, @RequestBody Book book) {
46+
return repository.save(putBook(id, book));
4747
}
4848

49-
@RequestMapping(
50-
value = "/{id}",
51-
method = RequestMethod.PUT)
52-
public ResponseEntity<Book> updateBookFromDB(@PathVariable("id") long id, @RequestBody Book book) {
53-
54-
Book currentBook = repository.findOne(id);
55-
currentBook.setName(book.getName());
56-
currentBook.setDescription(book.getDescription());
57-
currentBook.setTags(book.getTags());
58-
59-
return new ResponseEntity<>(repository.save(currentBook), HttpStatus.OK);
60-
}
61-
62-
@RequestMapping(
63-
value = "/{id}",
64-
method = RequestMethod.DELETE)
49+
@DeleteMapping("/books/{id}")
50+
@ResponseStatus(HttpStatus.NO_CONTENT)
6551
public void deleteBookWithId(@PathVariable Long id) {
6652
repository.delete(id);
6753
}
6854

69-
@RequestMapping(
70-
method = RequestMethod.DELETE)
55+
@DeleteMapping("/books")
56+
@ResponseStatus(HttpStatus.NO_CONTENT)
7157
public void deleteAllBooks() {
7258
repository.deleteAll();
7359
}
60+
61+
private Book putBook(long id, Book existingBook) {
62+
Book putBook = repository.findOne(id);
63+
putBook.setName(existingBook.getName());
64+
putBook.setDescription(existingBook.getDescription());
65+
putBook.setTags(existingBook.getTags());
66+
return putBook;
67+
}
7468
}

0 commit comments

Comments
 (0)