/* * Book Catalog - Catalog your book collection. * * Copyright (C) 2009 Joshua Walters * URL: http://joshwalters.com * * This file is part of Book Catalog. * * Book Catalog is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Book Catalog is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Book Catalog. If not, see . */ package com.joshwalters.bookcatalog; import java.sql.SQLException; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import com.joshwalters.bookcatalog.bookdatabase.BookDatabase; import com.joshwalters.bookcatalog.bookdatabase.EmptyDatabase; import com.joshwalters.bookcatalog.table.BookCatalogTableModel; /** * Searches the database for books. s * * @author Josh Walters */ class SearchDatabase implements DocumentListener { private JTable bookCatalogTable; private BookDatabase bookDatabase; private JTextField searchField; /** * Get the different objects needed for the class to function. * * @param bookCatalogTable * @param bookDatabase * @param searchField */ public SearchDatabase(JTable bookCatalogTable, BookDatabase bookDatabase, JTextField searchField) { this.bookCatalogTable = bookCatalogTable; this.bookDatabase = bookDatabase; this.searchField = searchField; } /** * Updates the table with the search string given by the user. */ public void updateTableWithSearchString() { try { // Get the table model. BookCatalogTableModel bookCatalogTableModel = (BookCatalogTableModel) bookCatalogTable .getModel(); // If the search field is empty, display all books in the database // in the table. if (searchField.getText().length() == 0) { String[][] data = bookDatabase.getDatabaseForTable(); bookCatalogTableModel.setData(data); bookCatalogTableModel.fireTableDataChanged(); } else { // Search for matches to the search string. String[][] data = bookDatabase .searchDatabaseForTable(searchField.getText()); // Update the table. bookCatalogTableModel.setData(data); // Refresh the table. bookCatalogTableModel.fireTableDataChanged(); } } catch (SQLException e) { // There was an SQL error of some sort. System.err.println(e.getLocalizedMessage()); } catch (EmptyDatabase e) { // The database was empty. System.err.println(e.getLocalizedMessage()); } } /** * Nothing to do here. */ public void changedUpdate(DocumentEvent arg0) { } /** * Update the table with the search string. */ public void insertUpdate(DocumentEvent arg0) { updateTableWithSearchString(); } /** * Update the table with the search string. */ public void removeUpdate(DocumentEvent arg0) { updateTableWithSearchString(); } }