powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как переместить код в MainView
13 сообщений из 13, страница 1 из 1
Как переместить код в MainView
    #39914072
fallen2019
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть два класса 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
Как переместить код в MainView
    #39914112
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fallen2019,

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

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

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

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

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

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

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


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