database handling works perfectly now
parent
1598363031
commit
1db006b285
Binary file not shown.
Binary file not shown.
|
@ -53,7 +53,9 @@ class StatementBuilder
|
||||||
public PreparedStatement findBookStatement(Connection connection)
|
public PreparedStatement findBookStatement(Connection connection)
|
||||||
throws SQLException, ClassNotFoundException
|
throws SQLException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
String statementText = "select * from books where title=?";
|
String statementText = "select b.title, b.author_name, b.path_to_content,"
|
||||||
|
+ " a.additional_info from books b left join authors a on"
|
||||||
|
+ " b.author_name = a.name where b.title=?";
|
||||||
return prepareStatement(connection, statementText);
|
return prepareStatement(connection, statementText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +69,9 @@ class StatementBuilder
|
||||||
public PreparedStatement getAllBooksStatement(Connection connection)
|
public PreparedStatement getAllBooksStatement(Connection connection)
|
||||||
throws SQLException, ClassNotFoundException
|
throws SQLException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
String statementText = "select * from books";
|
String statementText = "select b.title, b.author_name, b.path_to_content,"
|
||||||
|
+ " a.additional_info from books b left join authors a on"
|
||||||
|
+ " b.author_name = a.name";
|
||||||
return prepareStatement(connection, statementText);
|
return prepareStatement(connection, statementText);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +160,9 @@ public class SqliteDatabaseHandler
|
||||||
stat.executeQuery();
|
stat.executeQuery();
|
||||||
ResultSet rs = stat.executeQuery();
|
ResultSet rs = stat.executeQuery();
|
||||||
String path = rs.getString("path_to_content");
|
String path = rs.getString("path_to_content");
|
||||||
Author author = new Author("Gepetto", title);
|
String author_name = rs.getString("author_name");
|
||||||
|
String info_about_author = rs.getString("additional_info");
|
||||||
|
Author author = new Author(author_name, info_about_author);
|
||||||
return new Book(title, author, path);
|
return new Book(title, author, path);
|
||||||
}
|
}
|
||||||
catch(SQLException e) { System.err.println(e.getMessage()); }
|
catch(SQLException e) { System.err.println(e.getMessage()); }
|
||||||
|
@ -218,7 +224,7 @@ public class SqliteDatabaseHandler
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Book> getAllBooks(Author author) throws ClassNotFoundException
|
public ArrayList<Book> getAllBooks() throws ClassNotFoundException
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -233,8 +239,12 @@ public class SqliteDatabaseHandler
|
||||||
{
|
{
|
||||||
String path = rs.getString("path_to_content");
|
String path = rs.getString("path_to_content");
|
||||||
String title = rs.getString("title");
|
String title = rs.getString("title");
|
||||||
|
String author_name = rs.getString("author_name");
|
||||||
|
String info_about_author = rs.getString("additional_info");
|
||||||
|
Author author = new Author(author_name, info_about_author);
|
||||||
books.add(new Book(title, author, path));
|
books.add(new Book(title, author, path));
|
||||||
}
|
}
|
||||||
|
rs.close();
|
||||||
return books;
|
return books;
|
||||||
}
|
}
|
||||||
catch(SQLException e) { System.err.println(e.getMessage()); }
|
catch(SQLException e) { System.err.println(e.getMessage()); }
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
*/
|
*/
|
||||||
package mobireader.gui.ui;
|
package mobireader.gui.ui;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javafx.application.Application;
|
import javafx.application.Application;
|
||||||
|
@ -121,7 +122,7 @@ public class AppMain extends Application {
|
||||||
Label htmlLabel;
|
Label htmlLabel;
|
||||||
Popup alertPopup;
|
Popup alertPopup;
|
||||||
Tab webViewTab;
|
Tab webViewTab;
|
||||||
ArrayList<Book> myBooks = Book.createSomeExamples();
|
ArrayList<Book> myBooks;
|
||||||
SqliteDatabaseHandler db = new SqliteDatabaseHandler("my_books.db");
|
SqliteDatabaseHandler db = new SqliteDatabaseHandler("my_books.db");
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -129,8 +130,7 @@ public class AppMain extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(final Stage primaryStage) throws ClassNotFoundException {
|
public void start(final Stage primaryStage) throws ClassNotFoundException, SQLException {
|
||||||
db.addBooks(myBooks);
|
|
||||||
myBooks = db.getAllBooks();
|
myBooks = db.getAllBooks();
|
||||||
stage = primaryStage;
|
stage = primaryStage;
|
||||||
Scene scene = SceneBuilder.create()
|
Scene scene = SceneBuilder.create()
|
||||||
|
|
|
@ -67,6 +67,7 @@ public class SqlConnectionJUnitTest {
|
||||||
assertEquals(path, bookFromDB.getPathToContent());
|
assertEquals(path, bookFromDB.getPathToContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddingFewBooksOfSameAuthorToDb() throws ClassNotFoundException
|
public void testAddingFewBooksOfSameAuthorToDb() throws ClassNotFoundException
|
||||||
{
|
{
|
||||||
|
@ -91,6 +92,34 @@ public class SqlConnectionJUnitTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGettingAllBooksFromDb() throws ClassNotFoundException
|
||||||
|
{
|
||||||
|
String title1 = "Title1";
|
||||||
|
String title2 = "Title2";
|
||||||
|
String title3 = "Title3";
|
||||||
|
String authorName1 = "Gepetto";
|
||||||
|
String authorName2 = "Geronimo";
|
||||||
|
Author gepetto = new Author(authorName1);
|
||||||
|
Author geronimo = new Author(authorName2);
|
||||||
|
String path = "/somepath/book.txt";
|
||||||
|
ArrayList<Book> books = new ArrayList<>();
|
||||||
|
books.add(new Book(title1, gepetto, path));
|
||||||
|
books.add(new Book(title2, gepetto, path));
|
||||||
|
books.add(new Book(title3, gepetto, path));
|
||||||
|
books.add(new Book(title1, geronimo, path));
|
||||||
|
books.add(new Book(title2, geronimo, path));
|
||||||
|
books.add(new Book(title3, geronimo, path));
|
||||||
|
handler.addBooks(books);
|
||||||
|
ArrayList<Book> booksFromDB = handler.getAllBooks();
|
||||||
|
assertEquals(books.size(), booksFromDB.size());
|
||||||
|
for(int i = 0; i < books.size(); i++ )
|
||||||
|
{
|
||||||
|
assertEquals(books.get(i).getTitle(), booksFromDB.get(i).getTitle());
|
||||||
|
assertEquals(books.get(i).getAuthor().getName(), booksFromDB.get(i).getAuthor().getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddingAuthorToDb() throws Exception
|
public void testAddingAuthorToDb() throws Exception
|
||||||
{
|
{
|
||||||
|
@ -103,6 +132,7 @@ public class SqlConnectionJUnitTest {
|
||||||
assertEquals(additionalInfo, authorFromDB.getAdditionalInfo());
|
assertEquals(additionalInfo, authorFromDB.getAdditionalInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddingTheSameAuthorToDbFewTimes() throws Exception
|
public void testAddingTheSameAuthorToDbFewTimes() throws Exception
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue