Skip to content

Commit 9f03bdf

Browse files
authored
Who are you?
They said therefore to him, "Who are you? Give us an answer to take back to those who sent us. What do you say about yourself?" (John 1:22)
1 parent c6df340 commit 9f03bdf

1 file changed

Lines changed: 79 additions & 0 deletions

File tree

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
2+
//They said therefore to him, "Who are you? Give us an answer to take back to those who sent us. What do you say about yourself?" (John 1:22)
3+
4+
package com.javarush.task.task36.task3608.model;
5+
6+
import com.javarush.task.task36.task3608.bean.User;
7+
import com.javarush.task.task36.task3608.model.service.UserService;
8+
import com.javarush.task.task36.task3608.model.service.UserServiceImpl;
9+
import com.javarush.task.task36.task3608.model.ModelData;
10+
import java.util.Arrays;
11+
import java.util.List;
12+
13+
public class MainModel implements Model {
14+
private ModelData modelData = new ModelData();
15+
private UserService userService = new UserServiceImpl();
16+
17+
private List<User> getAllUsers() { return userService.filterOnlyActiveUsers(userService.getUsersBetweenLevels(1, 100)); }
18+
19+
public ModelData getModelData() {
20+
return modelData;
21+
}
22+
23+
public void loadUsers() {
24+
modelData.setDisplayDeletedUserList(false);
25+
modelData.setUsers(getAllUsers());
26+
}
27+
28+
public void loadDeletedUsers() {
29+
modelData.setDisplayDeletedUserList(true);
30+
List<User> users = userService.getAllDeletedUsers();
31+
modelData.setUsers(users);
32+
}
33+
34+
public void loadUserById(long userId) {
35+
User user = userService.getUsersById(userId);
36+
modelData.setActiveUser(user);
37+
}
38+
39+
public void deleteUserById(long id) {
40+
userService.deleteUser(id);
41+
modelData.setDisplayDeletedUserList(false);
42+
modelData.setUsers(getAllUsers());
43+
}
44+
}
45+
46+
/*
47+
MVC (8)
48+
1. Следуя принципу MVC аналогично реализации предыдущих методов сделай следующее:
49+
напиши логику удаления пользователя. После удаления должен отображаться список пользователей.
50+
51+
Распредели методы по классам MVC, используя следующие сигнатуры публичных методов:
52+
void fireEventUserDeleted(long id)
53+
void onUserDelete(long id)
54+
void deleteUserById(long id)
55+
56+
Примечание: метод, который ты собираешься добавить в Вью нужно добавить в EditUserView.
57+
58+
2. Добавь в main вызов fireEventUserDeleted(124L) перед вызовом метода fireEventShowDeletedUsers().
59+
60+
3. Выполни рефакторинг класса MainModel. Теперь, когда есть удаленные пользователи, часть методов стала работать неправильно.
61+
Почти во всех методах, где требуется список пользователей, нужно работать только с активными(живыми) пользователями.
62+
Вынеси в отдельный приватный метод List<User> getAllUsers() получение списка всех активных пользователей.
63+
Фильтрация активных пользователей у тебя уже есть — метод List<User> filterOnlyActiveUsers(List<User> allUsers).
64+
Отрефактори все методы, которые используют список пользователей. Они должны использовать список живых пользователей.
65+
66+
4. Добавь в интерфейс Model метод, который ты поместил в Модель, реализуй его в FakeModel: выброси UnsupportedOperationException.
67+
68+
69+
Требования:
70+
1. Необходимо определить правильное расположение метода fireEventUserDeleted(long) и реализовать этот метод.
71+
2. Необходимо определить правильное расположение метода onUserDelete(long) и реализовать этот метод.
72+
3. Необходимо определить правильное расположение метода deleteUserById(long) и реализовать этот метод.
73+
4. В методе main класса Solution необходимо вызвать метод fireEventUserDeleted(124L) у объекта класса EditUserView перед вызовом метода fireEventShowDeletedUsers().
74+
5. В методе main вызов методов должен происходить в такой последовательности: fireEventShowAllUsers(), fireEventOpenUserEditForm(126L), fireEventUserDeleted(124L), fireEventShowDeletedUsers().
75+
6. Необходимо реализовать приватный метод List getAllUsers() в классе MainModel.
76+
7. Необходимо выполнить рефакторинг: все методы класса MainModel, которые используют список пользователей, должны использовать список живых пользователей.
77+
8. Интерфейс Model должен содержать объявление метода, который ты ранее реализовал в классе MainModel.
78+
9. В классе FakeModel в теле метода, помещенного в интерфейс Model, необходимо бросить UnsupportedOperationException.
79+
*/

0 commit comments

Comments
 (0)