+ delete(Book/Author/Publisher/Category)
This commit is contained in:
parent
59ecac912c
commit
8b9d81bfc1
@ -30,6 +30,12 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public class Database {
|
public class Database {
|
||||||
|
|
||||||
|
private final String BOOK = "book";
|
||||||
|
private final String AUTHOR = "author";
|
||||||
|
private final String AUTHOR_BOOK = "author_book";
|
||||||
|
private final String PUBLISHER = "publisher";
|
||||||
|
private final String CATEGORY = "category";
|
||||||
|
|
||||||
private static Database instance;
|
private static Database instance;
|
||||||
|
|
||||||
public static Database getInstance() {
|
public static Database getInstance() {
|
||||||
@ -100,7 +106,7 @@ public class Database {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Author getAuthor(long id) {
|
public Author getAuthor(long id) {
|
||||||
Map.Entry<ResultSet, Connection> entry = getResultSet(id, "author");
|
Map.Entry<ResultSet, Connection> entry = getResultSet(id, AUTHOR);
|
||||||
assert entry != null;
|
assert entry != null;
|
||||||
|
|
||||||
ResultSet rs = entry.getKey();
|
ResultSet rs = entry.getKey();
|
||||||
@ -116,7 +122,7 @@ public class Database {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Category getCategory(long id) {
|
public Category getCategory(long id) {
|
||||||
Map.Entry<ResultSet, Connection> entry = getResultSet(id, "category");
|
Map.Entry<ResultSet, Connection> entry = getResultSet(id, CATEGORY);
|
||||||
assert entry != null;
|
assert entry != null;
|
||||||
|
|
||||||
ResultSet rs = entry.getKey();
|
ResultSet rs = entry.getKey();
|
||||||
@ -132,7 +138,7 @@ public class Database {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Publisher getPublisher(long id) {
|
public Publisher getPublisher(long id) {
|
||||||
Map.Entry<ResultSet, Connection> entry = getResultSet(id, "category");
|
Map.Entry<ResultSet, Connection> entry = getResultSet(id, PUBLISHER);
|
||||||
assert entry != null;
|
assert entry != null;
|
||||||
|
|
||||||
ResultSet rs = entry.getKey();
|
ResultSet rs = entry.getKey();
|
||||||
@ -148,12 +154,12 @@ public class Database {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private List<Integer> getAuthors(long id) {
|
private List<Integer> getAuthors(long id) {
|
||||||
Map.Entry<List<ResultSet>, Connection> entry = getResultSets(id, "author_book", "book");
|
Map.Entry<List<ResultSet>, Connection> entry = getResultSets(id, AUTHOR_BOOK, BOOK);
|
||||||
assert entry != null;
|
assert entry != null;
|
||||||
try {
|
try {
|
||||||
List<Integer> list = new ArrayList<>();
|
List<Integer> list = new ArrayList<>();
|
||||||
for (ResultSet rs : entry.getKey()) {
|
for (ResultSet rs : entry.getKey()) {
|
||||||
list.add(rs.getInt("author"));
|
list.add(rs.getInt(AUTHOR));
|
||||||
}
|
}
|
||||||
entry.getValue().close();
|
entry.getValue().close();
|
||||||
return list;
|
return list;
|
||||||
@ -165,14 +171,14 @@ public class Database {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Book getBook(long id) {
|
public Book getBook(long id) {
|
||||||
Map.Entry<ResultSet, Connection> entry = getResultSet(id, "book");
|
Map.Entry<ResultSet, Connection> entry = getResultSet(id, BOOK);
|
||||||
assert entry != null;
|
assert entry != null;
|
||||||
|
|
||||||
ResultSet rs = entry.getKey();
|
ResultSet rs = entry.getKey();
|
||||||
Book book = null;
|
Book book = null;
|
||||||
try {
|
try {
|
||||||
Category category = getCategory(rs.getLong("category"));
|
Category category = getCategory(rs.getLong(CATEGORY));
|
||||||
Publisher publisher = getPublisher(rs.getLong("publisher"));
|
Publisher publisher = getPublisher(rs.getLong(PUBLISHER));
|
||||||
List<Integer> authorIds = getAuthors(id);
|
List<Integer> authorIds = getAuthors(id);
|
||||||
assert authorIds != null;
|
assert authorIds != null;
|
||||||
List<Author> authors = new ArrayList<>();
|
List<Author> authors = new ArrayList<>();
|
||||||
@ -191,7 +197,7 @@ public class Database {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public List<Book> getBooks() {
|
public List<Book> getBooks() {
|
||||||
Map.Entry<List<ResultSet>, Connection> entry = getResultSets("book", "id");
|
Map.Entry<List<ResultSet>, Connection> entry = getResultSets(BOOK, "id");
|
||||||
assert entry != null;
|
assert entry != null;
|
||||||
|
|
||||||
List<Long> ids = new ArrayList<>();
|
List<Long> ids = new ArrayList<>();
|
||||||
@ -298,7 +304,6 @@ public class Database {
|
|||||||
}catch (SQLException ex) {
|
}catch (SQLException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
return insertCount;
|
return insertCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,11 +327,90 @@ public class Database {
|
|||||||
}catch (SQLException ex) {
|
}catch (SQLException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return insertCount;
|
return insertCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* inserts Publisher
|
||||||
|
* @param publisher Publisher
|
||||||
|
* @return insert count
|
||||||
|
*/
|
||||||
|
public int insert(@NotNull Publisher publisher) {
|
||||||
|
Connection connection = getConnection();
|
||||||
|
assert connection != null;
|
||||||
|
|
||||||
|
int insertCount = 0;
|
||||||
|
try{
|
||||||
|
PreparedStatement statement = connection.prepareStatement("INSERT INTO publisher (name) VALUES (?)");
|
||||||
|
statement.setString(1, publisher.getName());
|
||||||
|
|
||||||
|
insertCount += statement.executeUpdate();
|
||||||
|
|
||||||
|
connection.close();
|
||||||
|
}catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
return insertCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int deleteBook(long id) {
|
||||||
|
int deleteCount = 0;
|
||||||
|
|
||||||
|
try{
|
||||||
|
Connection connection = getConnection();
|
||||||
|
assert connection != null;
|
||||||
|
|
||||||
|
PreparedStatement statement = connection.prepareStatement("DELETE FROM author_book WHERE book = ?");
|
||||||
|
statement.setLong(1, id);
|
||||||
|
deleteCount =+ statement.executeUpdate();
|
||||||
|
|
||||||
|
connection.close();
|
||||||
|
}catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteCount += delete(id, BOOK);
|
||||||
|
|
||||||
|
return deleteCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int deleteAuthor(long id) {
|
||||||
|
return delete(id, AUTHOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int deletePublisher(long id) {
|
||||||
|
return delete(id, PUBLISHER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int deleteCategory(long id) {
|
||||||
|
return delete(id, CATEGORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @param table
|
||||||
|
* @return delete count
|
||||||
|
*/
|
||||||
|
private int delete(long id, String table) {
|
||||||
|
Connection connection = getConnection();
|
||||||
|
assert connection != null;
|
||||||
|
|
||||||
|
int deleteCount = 0;
|
||||||
|
try{
|
||||||
|
PreparedStatement statement = connection.prepareStatement("DELETE FROM ? WHERE id=?");
|
||||||
|
statement.setString(1, table);
|
||||||
|
statement.setLong(2, id);
|
||||||
|
|
||||||
|
deleteCount =+ statement.executeUpdate();
|
||||||
|
|
||||||
|
}catch (SQLException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
return deleteCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -351,19 +435,8 @@ public class Database {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private Map.Entry<List<ResultSet>, Connection> getListConnectionEntry(Connection connection, PreparedStatement statement) throws SQLException {
|
|
||||||
ResultSet resultSet = statement.executeQuery();
|
|
||||||
|
|
||||||
Map.Entry<List<ResultSet>, Connection> entry = new AbstractMap.SimpleEntry<>(new ArrayList<>(), connection);
|
|
||||||
while (resultSet.next()) {
|
|
||||||
entry.getKey().add(resultSet);
|
|
||||||
}
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Map.Entry<List<ResultSet>, Connection> getResultSets(long id, String table, String column) {
|
private Map.Entry<List<ResultSet>, Connection> getResultSets(long id, @NotNull String table, @NotNull String column) {
|
||||||
Connection connection = getConnection();
|
Connection connection = getConnection();
|
||||||
try {
|
try {
|
||||||
assert connection != null;
|
assert connection != null;
|
||||||
@ -380,7 +453,7 @@ public class Database {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Map.Entry<List<ResultSet>, Connection> getResultSets(String table, String columns) {
|
private Map.Entry<List<ResultSet>, Connection> getResultSets(@NotNull String table, @NotNull String columns) {
|
||||||
Connection connection = getConnection();
|
Connection connection = getConnection();
|
||||||
try {
|
try {
|
||||||
assert connection != null;
|
assert connection != null;
|
||||||
@ -395,4 +468,14 @@ public class Database {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private Map.Entry<List<ResultSet>, Connection> getListConnectionEntry(@NotNull Connection connection, @NotNull PreparedStatement statement) throws SQLException {
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
|
|
||||||
|
Map.Entry<List<ResultSet>, Connection> entry = new AbstractMap.SimpleEntry<>(new ArrayList<>(), connection);
|
||||||
|
while (resultSet.next()) {
|
||||||
|
entry.getKey().add(resultSet);
|
||||||
|
}
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user