Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переместить код в MainView / 13 сообщений из 13, страница 1 из 1
15.01.2020, 07:58
    #39914072
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
У меня есть два класса 1)MessageConfigurator 2)MessageInfoManager.

Мне сказали их удалить, и их код переместить в класс MainView чтобы работало в этом классе.

MessageConfigurator
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class MessageConfigurator {

    private static MessageConfigurator messageConfigurator = null;
    private final MessagesInfoManager chatMessagesInfoManager = new MessagesInfoManager();

    private MessageConfigurator() {
    }

    public static MessageConfigurator getInstance() {
        if (messageConfigurator == null) {
            messageConfigurator = new MessageConfigurator();
        }
        return messageConfigurator;
    }

    public MessagesInfoManager getChatMessagesInfoManager() {
        return chatMessagesInfoManager;
    }
}


MessageInfoManager

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
public class MessagesInfoManager {


    private final List<MessageInfo> messagesInfoQueue = new ArrayList<>();

    private final Map<Optional<UI>, MessageList> messageListMap = new HashMap<>();

    public void updateMessageUIInfo(MessageInfo messageInfo) {

        addMessageInfo(messageInfo);
        Message message = messageInfo.getMessage();

        for (Map.Entry<Optional<UI>, MessageList> entry : this.messageListMap.entrySet()) {
            final Optional<UI> uiOptional = entry.getKey();
            final MessageList messageList = entry.getValue();
            uiOptional.ifPresent(ui ->

                    ui.access(() ->
                            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()))
                    ));
        }
    }

    private void addMessageInfo(MessageInfo messageInfo) {
        if (!messagesInfoQueue.contains(messageInfo)) {
            this.messagesInfoQueue.add(messageInfo);
            this.messageListMap.putIfAbsent(messageInfo.getUI(), messageInfo.getMessageList());
        }
    }

    public List<Message> getMessagesByUI(Optional<UI> uiOptional) {
        return messagesInfoQueue
                .stream()
                .filter(messageInfo -> !messageInfo.getUI().equals(uiOptional))
                .map(MessageInfo::getMessage)
                .collect(Collectors.toList());
    }
}


Надо вот коды этих двух классов переместить вот сюда

MainView

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
@StyleSheet("frontend://styles/styles.css")
@Route
@PWA(name = "Vaadin MessagesInfoManager", shortName = "Vaadin MessagesInfoManager")
@Push
public class MainView extends VerticalLayout {

    private final MessagesInfoManager messagesInfoManager;
    private final RestService restService;
    private String username;

    @Autowired
    public MainView(RestService restService) {
        this.messagesInfoManager = MessageConfigurator.getInstance().getChatMessagesInfoManager();
        addClassName("main-view");
        setSizeFull();
        setDefaultHorizontalComponentAlignment(Alignment.CENTER);

        H1 header = new H1("Vaadin Chat");
        header.getElement().getThemeList().add("dark");

        add(header);

        askUsername();
        this.restService = restService;
    }

    private void askUsername() {
        HorizontalLayout layout = new HorizontalLayout();
        TextField usernameField = new TextField();
        Button startButton = new Button("Start chat");

        layout.add(usernameField, startButton);

        startButton.addClickListener(click -> {
            username = usernameField.getValue();
            remove(layout);
            showChat(username);
        });

        add(layout);
    }

    private void showChat(String username) {
        MessageList messageList = new MessageList();

        List<Message> lasts = restService.getLast();
        for (Message message : lasts) {
            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));
        }

        add(messageList, createInputLayout(username, messageList));
        expand(messageList);
    }

    private Component createInputLayout(String username, MessageList messageList) {
        HorizontalLayout layout = new HorizontalLayout();
        layout.setWidth("100%");

        TextField messageField = new TextField();
        messageField.addKeyDownListener(Key.ENTER, keyDownEvent -> sender(messageField, messageList));
        Button sendButton = new Button("Send");
        sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

        layout.add(messageField, sendButton);
        layout.expand(messageField);

        messageField.addFocusListener(event -> {
            for (Message message : messagesInfoManager.getMessagesByUI(getUI())) {
                if (!message.getFrom().equals(username)) {
                    message.setUnread(false);
                    this.restService.updateMessage(message.getId(), message);
                }
            }
        });

        sendButton.addClickListener(click -> sender(messageField, messageList));
        messageField.focus();

        return layout;
    }

    private void sender(TextField textField, MessageList messageList) {
        Message message = new Message(username, textField.getValue());
        message = restService.saveMessage(message);
        messagesInfoManager.updateMessageUIInfo(new MessageInfo(messageList, message, this));
        textField.clear();
        textField.focus();
    }
...
Рейтинг: 0 / 0
15.01.2020, 10:06
    #39914112
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019,

а в чем проблема?
...
Рейтинг: 0 / 0
15.01.2020, 10:09
    #39914113
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
skyANA,
не получается
...
Рейтинг: 0 / 0
15.01.2020, 10:11
    #39914116
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019,
Удаляешь эти два класса.
Компилируешь. Смотришь где заругалось.
И пи шешь там код копи пастой из классов что удалил.
...
Рейтинг: 0 / 0
15.01.2020, 10:14
    #39914119
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019
skyANA,
не получается

Что конкретно не получается?
...
Рейтинг: 0 / 0
15.01.2020, 10:19
    #39914125
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
skyANA,

я вроде копипастнул но он ругается, как можно корректно написать его
...
Рейтинг: 0 / 0
15.01.2020, 10:31
    #39914131
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019,
Ты или работай - скрины, логи, шаги твои.
Или в работу ветку.
Там тебе уже делают.
...
Рейтинг: 0 / 0
15.01.2020, 10:34
    #39914135
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
PetroNotC Sharp,

Просто Ваадин мне дается, как его можно к вами запихать.

Я вот MessageInfoManager кое как запихал не знаю правильно ли, но MessageConfigurator не получается

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
public class MainView extends VerticalLayout {

    private final MessagesInfoManager messagesInfoManager;
    private final RestService restService;
    private String username;
    
    
    private final List<MessageInfo> messagesInfoQueue = new ArrayList<>();
    
    private final Map<Optional<UI>, MessageList> messageListMap = new HashMap<>();

    public void updateMessageUIInfo(MessageInfo messageInfo) {
    
        addMessageInfo(messageInfo);
        Message message = messageInfo.getMessage();

        for (Map.Entry<Optional<UI>, MessageList> entry : this.messageListMap.entrySet()) {
            final Optional<UI> uiOptional = entry.getKey();
            final MessageList messageList = entry.getValue();
            uiOptional.ifPresent(ui ->
                    
                    ui.access(() ->
                            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()))
                    ));
        }
    }

    private void addMessageInfo(MessageInfo messageInfo) {
        if (!messagesInfoQueue.contains(messageInfo)) {
            this.messagesInfoQueue.add(messageInfo);
            this.messageListMap.putIfAbsent(messageInfo.getUI(), messageInfo.getMessageList());
        }
    }

    public List<Message> getMessagesByUI(Optional<UI> uiOptional) {
        return messagesInfoQueue
                .stream()
                .filter(messageInfo -> !messageInfo.getUI().equals(uiOptional))
                .map(MessageInfo::getMessage)
                .collect(Collectors.toList());
    }
    

    @Autowired
    public MainView(RestService restService) {
        this.messagesInfoManager = MessageConfigurator.getInstance().getChatMessagesInfoManager();
        addClassName("main-view");
        setSizeFull();
        setDefaultHorizontalComponentAlignment(Alignment.CENTER);

        H1 header = new H1("Vaadin Chat");
        header.getElement().getThemeList().add("dark");

        add(header);

        askUsername();
        this.restService = restService;
    }

    private void askUsername() {
        HorizontalLayout layout = new HorizontalLayout();
        TextField usernameField = new TextField();
        Button startButton = new Button("Start chat");

        layout.add(usernameField, startButton);

        startButton.addClickListener(click -> {
            username = usernameField.getValue();
            remove(layout);
            showChat(username);
        });

        add(layout);
    }

    private void showChat(String username) {
        MessageList messageList = new MessageList();

        List<Message> lasts = restService.getLast();
        for (Message message : lasts) {
            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));
        }

        add(messageList, createInputLayout(username, messageList));
        expand(messageList);
    }

    private Component createInputLayout(String username, MessageList messageList) {
        HorizontalLayout layout = new HorizontalLayout();
        layout.setWidth("100%");

        TextField messageField = new TextField();
        messageField.addKeyDownListener(Key.ENTER, keyDownEvent -> sender(messageField, messageList));
        Button sendButton = new Button("Send");
        sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

        layout.add(messageField, sendButton);
        layout.expand(messageField);

        messageField.addFocusListener(event -> {
            for (Message message : messagesInfoManager.getMessagesByUI(getUI())) {
                if (!message.getFrom().equals(username)) {
                    message.setUnread(false);
                    this.restService.updateMessage(message.getId(), message);
                }
            }
        });

        sendButton.addClickListener(click -> sender(messageField, messageList));
        messageField.focus();

        return layout;
    }

    private void sender(TextField textField, MessageList messageList) {
        Message message = new Message(username, textField.getValue());
        message = restService.saveMessage(message);
        messagesInfoManager.updateMessageUIInfo(new MessageInfo(messageList, message, this));
        textField.clear();
        textField.focus();
    }
...
Рейтинг: 0 / 0
15.01.2020, 10:35
    #39914136
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019,

тоесть ваадин тяжело дается
...
Рейтинг: 0 / 0
15.01.2020, 10:39
    #39914141
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019
fallen2019,

тоесть ваадин тяжело дается

А стек ошибки... Скриншоты... Легко?
Если тяжело, меняй работу, профессию, препода.
...
Рейтинг: 0 / 0
15.01.2020, 10:44
    #39914148
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
PetroNotC Sharp,

Ошибки нет, как туда теперь MessageConfigurator запихать
...
Рейтинг: 0 / 0
15.01.2020, 10:59
    #39914154
fallen2019
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019,
Как будет корректно запихать код, я вроде запихал но ругается
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
public class MainView extends VerticalLayout {
    
     private static MessageConfigurator messageConfigurator = null;
    private final MessagesInfoManager chatMessagesInfoManager = new MessagesInfoManager();

    public MessagesInfoManager getChatMessagesInfoManager() {
        return chatMessagesInfoManager;
    }

    private final MessagesInfoManager messagesInfoManager;
    private final RestService restService;
    private String username;
    
    
    private final List<MessageInfo> messagesInfoQueue = new ArrayList<>();
    
    private final Map<Optional<UI>, MessageList> messageListMap = new HashMap<>();

    public void updateMessageUIInfo(MessageInfo messageInfo) {
    
        addMessageInfo(messageInfo);
        Message message = messageInfo.getMessage();

        for (Map.Entry<Optional<UI>, MessageList> entry : this.messageListMap.entrySet()) {
            final Optional<UI> uiOptional = entry.getKey();
            final MessageList messageList = entry.getValue();
            uiOptional.ifPresent(ui ->
                    
                    ui.access(() ->
                            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()))
                    ));
        }
    }

    private void addMessageInfo(MessageInfo messageInfo) {
        if (!messagesInfoQueue.contains(messageInfo)) {
            this.messagesInfoQueue.add(messageInfo);
            this.messageListMap.putIfAbsent(messageInfo.getUI(), messageInfo.getMessageList());
        }
    }

    public List<Message> getMessagesByUI(Optional<UI> uiOptional) {
        return messagesInfoQueue
                .stream()
                .filter(messageInfo -> !messageInfo.getUI().equals(uiOptional))
                .map(MessageInfo::getMessage)
                .collect(Collectors.toList());
    }
    

    @Autowired
    public MainView(RestService restService) {
        this.messagesInfoManager = MessageConfigurator.getInstance().getChatMessagesInfoManager();
        addClassName("main-view");
        setSizeFull();
        setDefaultHorizontalComponentAlignment(Alignment.CENTER);

        H1 header = new H1("Vaadin Chat");
        header.getElement().getThemeList().add("dark");

        add(header);

        askUsername();
        this.restService = restService;
    }

    private void askUsername() {
        HorizontalLayout layout = new HorizontalLayout();
        TextField usernameField = new TextField();
        Button startButton = new Button("Start chat");

        layout.add(usernameField, startButton);

        startButton.addClickListener(click -> {
            username = usernameField.getValue();
            remove(layout);
            showChat(username);
        });

        add(layout);
    }

    private void showChat(String username) {
        MessageList messageList = new MessageList();

        List<Message> lasts = restService.getLast();
        for (Message message : lasts) {
            messageList.add(new Paragraph(message.getFrom() + ": " + message.getMessage()));
        }

        add(messageList, createInputLayout(username, messageList));
        expand(messageList);
    }

    private Component createInputLayout(String username, MessageList messageList) {
        HorizontalLayout layout = new HorizontalLayout();
        layout.setWidth("100%");

        TextField messageField = new TextField();
        messageField.addKeyDownListener(Key.ENTER, keyDownEvent -> sender(messageField, messageList));
        Button sendButton = new Button("Send");
        sendButton.addThemeVariants(ButtonVariant.LUMO_PRIMARY);

        layout.add(messageField, sendButton);
        layout.expand(messageField);

        messageField.addFocusListener(event -> {
            for (Message message : messagesInfoManager.getMessagesByUI(getUI())) {
                if (!message.getFrom().equals(username)) {
                    message.setUnread(false);
                    this.restService.updateMessage(message.getId(), message);
                }
            }
        });

        sendButton.addClickListener(click -> sender(messageField, messageList));
        messageField.focus();

        return layout;
    }

    private void sender(TextField textField, MessageList messageList) {
        Message message = new Message(username, textField.getValue());
        message = restService.saveMessage(message);
        messagesInfoManager.updateMessageUIInfo(new MessageInfo(messageList, message, this));
        textField.clear();
        textField.focus();
    }
    

    
...
Рейтинг: 0 / 0
15.01.2020, 11:05
    #39914161
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как переместить код в MainView
fallen2019,
Я по шагам написал что делать. Не ясно? В форум работа.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переместить код в MainView / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]