Об этом проекте

OwnChat — это автономное десктопное приложение для чата, предназначенное для пользователей, которые хотят контролировать свою коммуникацию. Оно использует архитектуру «клиент-сервер-клиент», где несколько десктопных клиентов подключаются к центральному серверу, который ретранслирует сообщения в реальном времени. Приложение построено на Java Swing для пользовательского интерфейса, Java Sockets для сетевого взаимодействия и Oracle Database для постоянного хранения данных. Основные функции включают: - **Создание аккаунта и вход**: учетные данные пользователя хранятся в таблице `USER_DETAILS` и проверяются при входе. - **Управление контактами**: пользователи могут добавлять контакты, просматривать список контактов и проверять, находится ли контакт в сети, перед началом чата. - **Обмен сообщениями в реальном времени**: каждый вошедший клиент регистрирует сокет на сервере; сообщения передаются в реальном времени получателю, если у него открыто окно чата. Все сообщения записываются в `CHAT_HISTORY`. - **История чата**: повторное открытие чата с контактом воспроизводит предыдущие сообщения, цвет которых зависит от отправителя, с заголовками даты и времени. - **Темы**: пользователи могут выбирать между стилями Metal, Dark и Light. Выбранная тема сохраняется для каждого пользователя в таблице `SETTINGS` и автоматически применяется при входе. - **Отслеживание статуса онлайн/офлайн**: сервер обновляет `LOG_STATUS` при открытии/закрытии списка контактов или входе/выходе пользователя, включая автоматический выход при закрытии окна. - **Настраиваемый IP-адрес сервера**: клиенты могут указывать любой хост сервера через простой экран настроек. - **Экран «О программе»**: отображает информацию о разработчике и бренде. Проект разделен на три основные части: клиентское приложение, сервер и схема базы данных. Клиент состоит из нескольких классов Java для разных экранов (приветствие, вход, создание аккаунта, настройки, контакты, окно чата и т. д.). Сервер многопоточный, обрабатывает каждое клиентское соединение в отдельном потоке и использует `ConcurrentHashMap` для отслеживания подключенных клиентов с целью ретрансляции сообщений. Схема базы данных включает таблицы для пользователей, настроек, статуса входа, контактов и истории чата, а также триггеры для автоматического заполнения настроек по умолчанию и начального статуса «вышел» для новых пользователей. Настройка включает создание базы данных Oracle с помощью предоставленного SQL-скрипта, затем запуск исполняемого файла сервера (OwnChatS-Portable.zip) и ввод учетных данных базы данных, и, наконец, запуск исполняемого файла клиента (OwnChat-Portable.zip), установку IP-адреса сервера, создание аккаунта и начало общения. В дорожной карте упоминается будущая веб-версия с использованием Servlets, JSP, J2EE и Spring Boot с фронтендом на HTML/CSS/Bootstrap.