Untitled

Daos
 avatar
unknown
plain_text
5 months ago
5.8 kB
2
Indexable
/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package DAO;

/**
 *
 * @author Bang
 */
import DB_Context.DatabaseConnection;
import Model.Category;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class CategoryDAO extends DatabaseConnection {

    // CREATE - Thêm một category mới
    public boolean createCategory(Category category) {
        String sql = "INSERT INTO Categories (category_name) VALUES (?)";

        try ( Connection conn = getConnection()) {
            // Kiểm tra kết nối trước khi tiếp tục
            if (conn == null || conn.isClosed()) {
                System.out.println("Kết nối không được thiết lập hoặc đã bị đóng.");
                return false;
            }

            // Tạo PreparedStatement và thực hiện câu lệnh INSERT
            try ( PreparedStatement ps = conn.prepareStatement(sql)) {
                ps.setString(1, category.getCategoryName());

                int affectedRows = ps.executeUpdate();

                // Kiểm tra số lượng dòng bị ảnh hưởng để xác nhận INSERT thành công
                if (affectedRows > 0) {
                    System.out.println("Thêm danh mục thành công!");
                    return true;
                } else {
                    System.out.println("Thêm danh mục thất bại, không có dòng nào được chèn.");
                }
            }
        } catch (SQLIntegrityConstraintViolationException e) {
            System.out.println("Tên danh mục đã tồn tại: " + e.getMessage());
            return false;
        } catch (SQLException e) {
            System.out.println("Lỗi khi thêm danh mục: " + e.getMessage());
            e.printStackTrace();
        }

        return false;
    }

    // READ - Lấy tất cả categories
    public List<Category> getAllCategories() {
        List<Category> categories = new ArrayList<>();
        String sql = "SELECT * FROM Categories";
        try ( Connection conn = getConnection();  PreparedStatement ps = conn.prepareStatement(sql);  ResultSet rs = ps.executeQuery()) {
            while (rs.next()) {
                Category category = new Category();
                category.setCategoryId(rs.getInt("category_id"));
                category.setCategoryName(rs.getString("category_name"));
                category.setIsHidden(rs.getBoolean("is_hidden"));
                categories.add(category);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return categories;
    }

    // READ - Lấy một category theo ID
    public Category getCategoryById(int categoryId) {
        String sql = "SELECT * FROM Categories WHERE category_id = ?";
        try ( Connection conn = getConnection();  PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setInt(1, categoryId);
            try ( ResultSet rs = ps.executeQuery()) {
                if (rs.next()) {
                    Category category = new Category();
                    category.setCategoryId(rs.getInt("category_id"));
                    category.setCategoryName(rs.getString("category_name"));
                    category.setIsHidden(rs.getBoolean("is_hidden"));
                    return category;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    // UPDATE - Cập nhật một category
    public boolean updateCategory(Category category) {
        String sql = "UPDATE Categories SET category_name = ?, is_hidden = ? WHERE category_id = ?";
        try ( Connection conn = getConnection();  PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, category.getCategoryName());
            ps.setBoolean(2, category.getIsHidden() != null ? category.getIsHidden() : false);
            ps.setInt(3, category.getCategoryId());

            return ps.executeUpdate() > 0;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    // DELETE - Xóa một category theo ID
    public boolean deleteCategory(int categoryId) {
        String sql = "DELETE FROM Categories WHERE category_id = ?";
        try ( Connection conn = getConnection();  PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setInt(1, categoryId);

            return ps.executeUpdate() > 0;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    public List<Category> getCategoriesWithSearch(String searchQuery) {
        List<Category> categories = new ArrayList<>();
        String sql = "SELECT *, CASE WHEN category_name LIKE ? THEN 0 ELSE 1 END AS sort_order FROM Categories ORDER BY sort_order, category_name";
        try ( Connection conn = getConnection();  PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, "%" + searchQuery + "%");
            try ( ResultSet rs = ps.executeQuery()) {
                while (rs.next()) {
                    Category category = new Category();
                    category.setCategoryId(rs.getInt("category_id"));
                    category.setCategoryName(rs.getString("category_name"));
                    categories.add(category);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return categories;
    }
}
Editor is loading...
Leave a Comment