From f963f09d80885f40e714c7a1239da4e5463a3f05 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 18 Sep 2017 18:12:43 +0200 Subject: [PATCH] #96 - implemented database export --- .../budgetmaster/logic/tag/TagMatch.java | 59 ++++++++++++++++ .../logic/DatabaseImportExport.java | 7 ++ .../logic/database/Database.java | 47 +++++++++++++ .../logic/database/DatabaseExporter.java | 67 ++++++++++++++++++- 4 files changed, 178 insertions(+), 2 deletions(-) create mode 100644 src/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java create mode 100644 src/de/deadlocker8/budgetmasterserver/logic/DatabaseImportExport.java diff --git a/src/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java b/src/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java new file mode 100644 index 000000000..c09722461 --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/logic/tag/TagMatch.java @@ -0,0 +1,59 @@ +package de.deadlocker8.budgetmaster.logic.tag; + +import de.deadlocker8.budgetmasterserver.logic.DatabaseImportExport; + +@DatabaseImportExport +public class TagMatch +{ + private int tagID; + private int paymentID; + private int repeatingPaymentID; + + public TagMatch(int tagID, int paymentID, int repeatingPaymentID) + { + this.tagID = tagID; + this.paymentID = paymentID; + this.repeatingPaymentID = repeatingPaymentID; + } + + public TagMatch() + { + + } + + public int getTagID() + { + return tagID; + } + + public void setTagID(int tagID) + { + this.tagID = tagID; + } + + public int getPaymentID() + { + return paymentID; + } + + public void setPaymentID(int paymentID) + { + this.paymentID = paymentID; + } + + public int getRepeatingPaymentID() + { + return repeatingPaymentID; + } + + public void setRepeatingPaymentID(int repeatingPaymentID) + { + this.repeatingPaymentID = repeatingPaymentID; + } + + @Override + public String toString() + { + return "TagMatch [tagID=" + tagID + ", paymentID=" + paymentID + ", repeatingPaymentID=" + repeatingPaymentID + "]"; + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmasterserver/logic/DatabaseImportExport.java b/src/de/deadlocker8/budgetmasterserver/logic/DatabaseImportExport.java new file mode 100644 index 000000000..9ea98c3f7 --- /dev/null +++ b/src/de/deadlocker8/budgetmasterserver/logic/DatabaseImportExport.java @@ -0,0 +1,7 @@ +package de.deadlocker8.budgetmasterserver.logic; + +/** + * Used to mark model classes that only exists in order to allow gson to import and export the database + * + */ +public @interface DatabaseImportExport {} \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmasterserver/logic/database/Database.java b/src/de/deadlocker8/budgetmasterserver/logic/database/Database.java index 196f8f6c5..849d5991b 100644 --- a/src/de/deadlocker8/budgetmasterserver/logic/database/Database.java +++ b/src/de/deadlocker8/budgetmasterserver/logic/database/Database.java @@ -5,12 +5,27 @@ import java.util.ArrayList; import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; +import de.deadlocker8.budgetmaster.logic.tag.Tag; +import de.deadlocker8.budgetmaster.logic.tag.TagMatch; public class Database { + /* + * VERSIONS + * + * --> 1 + * initial + * + * --> 2 + * added tags and tag matches (additional tables) + */ + + private final int VERSION = 2; private ArrayList<Category> categories; private ArrayList<NormalPayment> normalPayments; private ArrayList<RepeatingPayment> repeatingPayments; + private ArrayList<Tag> tags; + private ArrayList<TagMatch> tagMatches; public Database() { @@ -22,8 +37,19 @@ public class Database this.categories = categories; this.normalPayments = normalPayments; this.repeatingPayments = repeatingPayments; + this.tags = new ArrayList<>(); + this.tagMatches = new ArrayList<>(); } + public Database(ArrayList<Category> categories, ArrayList<NormalPayment> normalPayments, ArrayList<RepeatingPayment> repeatingPayments, ArrayList<Tag> tags, ArrayList<TagMatch> tagMatches) + { + this.categories = categories; + this.normalPayments = normalPayments; + this.repeatingPayments = repeatingPayments; + this.tags = tags; + this.tagMatches = tagMatches; + } + public ArrayList<Category> getCategories() { return categories; @@ -38,4 +64,25 @@ public class Database { return repeatingPayments; } + + public int getVERSION() + { + return VERSION; + } + + public ArrayList<Tag> getTags() + { + return tags; + } + + public ArrayList<TagMatch> getTagMatches() + { + return tagMatches; + } + + @Override + public String toString() + { + return "Database [VERSION=" + VERSION + ", categories=" + categories + ", normalPayments=" + normalPayments + ", repeatingPayments=" + repeatingPayments + ", tags=" + tags + ", tagMatches=" + tagMatches + "]"; + } } \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java index 1953a6ef7..423eedc27 100644 --- a/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java +++ b/src/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java @@ -11,6 +11,8 @@ import java.util.ArrayList; import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; +import de.deadlocker8.budgetmaster.logic.tag.Tag; +import de.deadlocker8.budgetmaster.logic.tag.TagMatch; import de.deadlocker8.budgetmasterserver.logic.Settings; import logger.Logger; @@ -36,8 +38,10 @@ public class DatabaseExporter ArrayList<Category> categories = getAllCategories(); ArrayList<NormalPayment> normalPayments = getAllNormalPayments(); ArrayList<RepeatingPayment> repeatingPayments = getAllRepeatingPayments(); + ArrayList<Tag> tags = getAllTags(); + ArrayList<TagMatch> tagMatches = getAllTagMatches(); - return new Database(categories, normalPayments, repeatingPayments); + return new Database(categories, normalPayments, repeatingPayments, tags, tagMatches); } private void closeConnection(Statement statement) @@ -150,5 +154,64 @@ public class DatabaseExporter } return results; - } + } + + private ArrayList<Tag> getAllTags() + { + PreparedStatement stmt = null; + ArrayList<Tag> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT * FROM tag;"); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + String name = rs.getString("Name"); + + results.add(new Tag(resultID, name)); + } + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeConnection(stmt); + } + + return results; + } + + private ArrayList<TagMatch> getAllTagMatches() + { + PreparedStatement stmt = null; + ArrayList<TagMatch> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT * FROM tag_match;"); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int tagID = rs.getInt("Tag_ID"); + int paymentID = rs.getInt("Payment_ID"); + int repeatingPaymentID = rs.getInt("RepeatingPayment_ID"); + + results.add(new TagMatch(tagID, paymentID, repeatingPaymentID)); + } + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeConnection(stmt); + } + + return results; + } } \ No newline at end of file -- GitLab