Skip to content

Commit b2566a8

Browse files
committed
add-controllers. Ревью. Метод по получению ID для новой сущности сделать внутренним. Вынести получение пользователя и вещи с проверкой на существование в отдельный метод.
1 parent b11c48b commit b2566a8

File tree

11 files changed

+56
-50
lines changed

11 files changed

+56
-50
lines changed

src/main/java/ru/practicum/shareit/item/mapper/ItemMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ public static ItemDto toItemDto(Item item) {
1717
);
1818
}
1919

20-
public static Item toItem(Long itemId, ItemDto itemDto, User owner, ItemRequest request) {
20+
public static Item toItem(ItemDto itemDto, User owner, ItemRequest request) {
2121
return new Item(
22-
itemId,
2322
itemDto.getName(),
2423
itemDto.getDescription(),
2524
itemDto.getAvailable(),

src/main/java/ru/practicum/shareit/item/model/Item.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,12 @@ public class Item {
1515
private Boolean available;
1616
private User owner;
1717
private ItemRequest request;
18+
19+
public Item(String name, String description, Boolean available, User owner, ItemRequest request) {
20+
this.name = name;
21+
this.description = description;
22+
this.available = available;
23+
this.owner = owner;
24+
this.request = request;
25+
}
1826
}

src/main/java/ru/practicum/shareit/item/repository/ItemRepository.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
public interface ItemRepository {
99

10-
List<Item> getItems();
11-
1210
List<Item> getItemsByUserId(Long userId);
1311

1412
Item createItem(Item item);
@@ -19,5 +17,4 @@ public interface ItemRepository {
1917

2018
List<Item> searchItemsByText(String text);
2119

22-
Long getNewItemId();
2320
}

src/main/java/ru/practicum/shareit/item/repository/ItemRepositoryImpl.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,7 @@
88
@Repository
99
public class ItemRepositoryImpl implements ItemRepository {
1010

11-
private Map<Long, Item> items = new HashMap<>();
12-
13-
@Override
14-
public List<Item> getItems() {
15-
return new ArrayList<>(items.values());
16-
}
11+
private final Map<Long, Item> items = new HashMap<>();
1712

1813
@Override
1914
public List<Item> getItemsByUserId(Long userId) {
@@ -24,6 +19,7 @@ public List<Item> getItemsByUserId(Long userId) {
2419

2520
@Override
2621
public Item createItem(Item item) {
22+
item.setId(getNewItemId());
2723
items.put(item.getId(), item);
2824
return items.get(item.getId());
2925
}
@@ -51,10 +47,8 @@ private Boolean containsIgnoreCase(String text, String containsText) {
5147
return text.toLowerCase().contains(containsText.toLowerCase());
5248
}
5349

54-
@Override
55-
public Long getNewItemId() {
56-
return getItems().stream()
57-
.map(Item::getId)
50+
private Long getNewItemId() {
51+
return items.keySet().stream()
5852
.max(Long::compareTo)
5953
.orElse(0L) + 1;
6054
}

src/main/java/ru/practicum/shareit/item/service/ItemServiceImpl.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import ru.practicum.shareit.item.model.Item;
1111
import ru.practicum.shareit.item.repository.ItemRepository;
1212
import ru.practicum.shareit.user.model.User;
13-
import ru.practicum.shareit.user.repository.UserRepository;
13+
import ru.practicum.shareit.user.service.UserService;
1414

1515
import java.util.ArrayList;
1616
import java.util.List;
@@ -22,52 +22,54 @@
2222
public class ItemServiceImpl implements ItemService {
2323

2424
private final ItemRepository itemRepository;
25-
private final UserRepository userRepository;
25+
private final UserService userService;
2626

2727

2828
@Override
2929
public List<ItemDto> getItemsByUserId(Long userId) {
3030
log.info("Поиск вещей пользователя с ID = {}", userId);
31-
userRepository.getUserById(userId)
32-
.orElseThrow(() -> new NotFoundException("Пользователь с ID = " + userId + " не найден"));
31+
userService.getUserWithCheck(userId);
3332
List<Item> itemsByUserId = itemRepository.getItemsByUserId(userId);
3433
return itemsByUserId.stream()
3534
.map(ItemMapper::toItemDto)
3635
.toList();
3736
}
3837

38+
public Item getItemWithCheck(Long itemId) {
39+
return itemRepository.getItemById(itemId)
40+
.orElseThrow(() -> new NotFoundException("Вещь с ID = " + itemId + " не найдена"));
41+
}
42+
3943
@Override
4044
public ItemDto createItem(ItemDto itemDto, Long userId) {
4145
log.info("Создание вещи у пользователя с ID = {}", userId);
42-
User user = userRepository.getUserById(userId)
43-
.orElseThrow(() -> new NotFoundException("Пользователь с ID = " + userId + " не найден"));
46+
User user = userService.getUserWithCheck(userId);
4447
return ItemMapper.toItemDto(
4548
itemRepository.createItem(
46-
ItemMapper.toItem(
47-
itemRepository.getNewItemId(), itemDto, user, null)));
49+
ItemMapper.toItem(itemDto, user, null)));
4850
}
4951

5052
@Override
5153
public ItemDto updateItem(ItemDto itemDto, Long itemId, Long userId) {
5254
log.info("Обновление вещи у пользователя с ID = {}", userId);
53-
Item findItem = itemRepository.getItemById(itemId)
54-
.orElseThrow(() -> new NotFoundException("Вещь с ID = " + itemId + " не найдена"));
55+
56+
Item findItem = getItemWithCheck(itemId);
5557
checkUser(findItem, userId);
56-
userRepository.getUserById(userId)
57-
.orElseThrow(() -> new NotFoundException("Пользователь с ID = " + userId + " не найден"));
58+
userService.getUserWithCheck(userId);
59+
5860
findItem.setName(itemDto.getName() == null || itemDto.getName().isBlank() ?
5961
findItem.getName() : itemDto.getName());
6062
findItem.setDescription(itemDto.getDescription() == null || itemDto.getDescription().isBlank() ?
6163
findItem.getDescription() : itemDto.getDescription());
6264
findItem.setAvailable(itemDto.getAvailable() != null ? itemDto.getAvailable() : findItem.getAvailable());
65+
6366
return ItemMapper.toItemDto(itemRepository.updateItem(findItem));
6467
}
6568

6669
@Override
6770
public ItemDto getItemById(Long itemId) {
6871
log.info("Запрос вещи с ID = {}", itemId);
69-
Item item = itemRepository.getItemById(itemId)
70-
.orElseThrow(() -> new NotFoundException("Вещь с ID = " + itemId + " не найдена"));
72+
Item item = getItemWithCheck(itemId);
7173
return ItemMapper.toItemDto(item);
7274
}
7375

src/main/java/ru/practicum/shareit/user/mapper/UserMapper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ public static UserDto toUserDto(User user) {
1212
);
1313
}
1414

15-
public static User toUser(UserDto user, Long userId) {
15+
public static User toUser(UserDto user) {
1616
return new User(
17-
userId,
1817
user.getName(),
1918
user.getEmail()
2019
);

src/main/java/ru/practicum/shareit/user/model/User.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,9 @@ public class User {
99
private Long id;
1010
private String name;
1111
private String email;
12+
13+
public User(String name, String email) {
14+
this.name = name;
15+
this.email = email;
16+
}
1217
}

src/main/java/ru/practicum/shareit/user/repository/UserRepository.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,5 @@ public interface UserRepository {
1717

1818
void deleteUserById(Long userId);
1919

20-
Long getNewUserId();
21-
2220
void checkEmail(String email);
2321
}

src/main/java/ru/practicum/shareit/user/repository/UserRepositoryImpl.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@Repository
1010
public class UserRepositoryImpl implements UserRepository {
1111

12-
private Map<Long, User> users = new HashMap<>();
12+
private final Map<Long, User> users = new HashMap<>();
1313

1414
@Override
1515
public List<User> getUsers() {
@@ -23,6 +23,7 @@ public Optional<User> getUserById(Long userId) {
2323

2424
@Override
2525
public User createUser(User user) {
26+
user.setId(getNewUserId());
2627
users.put(user.getId(), user);
2728
return users.get(user.getId());
2829
}
@@ -38,14 +39,6 @@ public void deleteUserById(Long userId) {
3839
users.remove(userId);
3940
}
4041

41-
@Override
42-
public Long getNewUserId() {
43-
return getUsers().stream()
44-
.map(User::getId)
45-
.max(Long::compareTo)
46-
.orElse(0L) + 1;
47-
}
48-
4942
@Override
5043
public void checkEmail(String email) {
5144
if (getUsers().stream()
@@ -54,4 +47,10 @@ public void checkEmail(String email) {
5447
throw new AlreadyExistException("Пользователь с почтой " + email + " уже существует");
5548
}
5649
}
50+
51+
private Long getNewUserId() {
52+
return users.keySet().stream()
53+
.max(Long::compareTo)
54+
.orElse(0L) + 1;
55+
}
5756
}

src/main/java/ru/practicum/shareit/user/service/UserService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package ru.practicum.shareit.user.service;
22

33
import ru.practicum.shareit.user.dto.UserDto;
4+
import ru.practicum.shareit.user.model.User;
45

56
public interface UserService {
67

78
UserDto getUserById(Long userId);
89

10+
User getUserWithCheck(Long userId);
11+
912
UserDto createUser(UserDto user);
1013

1114
UserDto updateUser(UserDto user, Long userId);

0 commit comments

Comments
 (0)