Загрузка данных


package ui;

import dao.UserDAO;

import javax.swing.*;
import java.awt.*;

public class RegisterFrame extends JFrame {
    private JTextField usernameField;
    private JTextField emailField;
    private JPasswordField passwordField;
    private JPasswordField confirmField;
    private UserDAO userDAO = new UserDAO();

    public RegisterFrame() {
        setTitle("Регистрация");
        setSize(350, 280);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(5, 5, 5, 5);
        gbc.fill = GridBagConstraints.HORIZONTAL;

        // Логин
        gbc.gridx = 0; gbc.gridy = 0;
        add(new JLabel("Логин:"), gbc);
        gbc.gridx = 1;
        usernameField = new JTextField(15);
        add(usernameField, gbc);

        // Email
        gbc.gridx = 0; gbc.gridy = 1;
        add(new JLabel("Email:"), gbc);
        gbc.gridx = 1;
        emailField = new JTextField(15);
        add(emailField, gbc);

        // Пароль
        gbc.gridx = 0; gbc.gridy = 2;
        add(new JLabel("Пароль:"), gbc);
        gbc.gridx = 1;
        passwordField = new JPasswordField(15);
        add(passwordField, gbc);

        // Подтверждение
        gbc.gridx = 0; gbc.gridy = 3;
        add(new JLabel("Повторите:"), gbc);
        gbc.gridx = 1;
        confirmField = new JPasswordField(15);
        add(confirmField, gbc);

        // Кнопка
        gbc.gridx = 0; gbc.gridy = 4;
        gbc.gridwidth = 2;
        JButton registerBtn = new JButton("Зарегистрироваться");
        add(registerBtn, gbc);

        // Назад
        gbc.gridy = 5;
        JButton backBtn = new JButton("Назад");
        add(backBtn, gbc);

        registerBtn.addActionListener(e -> doRegister());
        backBtn.addActionListener(e -> {
            new LoginFrame().setVisible(true);
            dispose();
        });
    }

    private void doRegister() {
        String username = usernameField.getText().trim();
        String email = emailField.getText().trim();
        String password = new String(passwordField.getPassword());
        String confirm = new String(confirmField.getPassword());

        // Валидация
        if (username.isEmpty() || email.isEmpty() || password.isEmpty()) {
            JOptionPane.showMessageDialog(this, "Заполните все поля!");
            return;
        }
        if (username.length() < 3) {
            JOptionPane.showMessageDialog(this, "Логин должен содержать минимум 3 символа!");
            return;
        }
        if (!email.matches("^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$")) {
            JOptionPane.showMessageDialog(this, "Некорректный email!");
            return;
        }
        if (password.length() < 6) {
            JOptionPane.showMessageDialog(this, "Пароль должен содержать минимум 6 символов!");
            return;
        }
        if (!password.equals(confirm)) {
            JOptionPane.showMessageDialog(this, "Пароли не совпадают!");
            return;
        }
        if (userDAO.userExists(username, email)) {
            JOptionPane.showMessageDialog(this, "Пользователь с таким логином или email уже существует!");
            return;
        }

        if (userDAO.register(username, email, password)) {
            JOptionPane.showMessageDialog(this, "Регистрация успешна!");
            new LoginFrame().setVisible(true);
            dispose();
        } else {
            JOptionPane.showMessageDialog(this, "Ошибка регистрации!",
                    "Ошибка", JOptionPane.ERROR_MESSAGE);
        }
    }
}