diff --git a/src/main/java/de/deadlocker8/budgetmaster/accounts/Account.java b/src/main/java/de/deadlocker8/budgetmaster/accounts/Account.java index c1647ca760e5ee6508f5e78197ac61b6cb5cef47..8f2adfa3ad25882da8fb2c1296526ed837ddb84e 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/accounts/Account.java +++ b/src/main/java/de/deadlocker8/budgetmaster/accounts/Account.java @@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.accounts; import com.google.gson.annotations.Expose; import de.deadlocker8.budgetmaster.images.Image; import de.deadlocker8.budgetmaster.transactions.Transaction; +import de.deadlocker8.budgetmaster.utils.ProvidesID; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -11,7 +12,7 @@ import java.util.List; import java.util.Objects; @Entity -public class Account +public class Account implements ProvidesID { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/Category.java b/src/main/java/de/deadlocker8/budgetmaster/categories/Category.java index 835ce0bbd772e9a21bd56b5719621efefe177413..502aef8cbe4f1129cb4650f516da1fc5175a3dff 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/categories/Category.java +++ b/src/main/java/de/deadlocker8/budgetmaster/categories/Category.java @@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.categories; import com.google.gson.annotations.Expose; import de.deadlocker8.budgetmaster.transactions.Transaction; +import de.deadlocker8.budgetmaster.utils.ProvidesID; import de.thecodelabs.utils.util.Color; import de.thecodelabs.utils.util.ColorUtilsNonJavaFX; @@ -12,7 +13,7 @@ import java.util.List; import java.util.Objects; @Entity -public class Category +public class Category implements ProvidesID { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java index d149ed3a3163720c8f9d08f0ebbc849e909b1116..784bd814ace6fe6f31d2916a1a7bd536bfa3a39c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java @@ -17,7 +17,7 @@ public class DatabaseParser final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); private static final int MINIMUM_VERSION = 4; - private static final int LATEST_VERSION = 5; + private static final int LATEST_VERSION = 6; private final String jsonString; diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/Converter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/Converter.java index b6d6f738579579890338f9214c36d32dfbbed883..a48e7e8745c7f6f22adf4d7a3e9ad919550858d7 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/model/Converter.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/Converter.java @@ -1,8 +1,19 @@ package de.deadlocker8.budgetmaster.database.model; +import de.deadlocker8.budgetmaster.utils.ProvidesID; + +import java.util.List; + public interface Converter<T, S> { T convertToInternalForm(S backupItem); S convertToExternalForm(T internalItem); + + default <U extends ProvidesID> U getItemById(List<U> items, Integer ID) + { + return items.stream() + .filter(item -> item.getID().equals(ID)) + .findFirst().orElse(null); + } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java index d10a40b4209d3e15f55e756970e9f0b82efd7401..2e1c80c3869eb6a78afd7069c2e1afad274cfbf6 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupAccount_v5.java @@ -108,6 +108,12 @@ public class BackupAccount_v5 implements Upgradeable<BackupAccount_v6> public BackupAccount_v6 upgrade() { - return new BackupAccount_v6(ID, name, accountState, type, icon.getID()); + Integer iconID = null; + if(icon != null) + { + iconID = icon.getID(); + } + + return new BackupAccount_v6(ID, name, accountState, type, iconID); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupDatabase_v5.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupDatabase_v5.java index 257a0d0b76411f1587b1a9b9e8abce4815c1dba0..09cbdd827fac380aaf4c460cfc12c4d221c5aac7 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupDatabase_v5.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v5/BackupDatabase_v5.java @@ -106,14 +106,7 @@ public class BackupDatabase_v5 implements BackupDatabase public InternalDatabase convertToInternal() { - final List<Category> convertedCategories = convertItemsToInternal(categories, new CategoryConverter_v5()); - final List<Account> convertedAccounts = convertItemsToInternal(accounts, new AccountConverter_v5()); - final List<Transaction> convertedTransactions = convertItemsToInternal(this.transactions, new TransactionConverter_v5()); - final List<Template> convertedTemplates = convertItemsToInternal(this.templates, new TemplateConverter_v5()); - final List<Chart> convertedCharts = convertItemsToInternal(this.charts, new ChartConverter_v5()); - final List<Image> convertedImages = convertItemsToInternal(this.images, new ImageConverter_v5()); - - return new InternalDatabase(convertedCategories, convertedAccounts, convertedTransactions, convertedTemplates, convertedCharts, convertedImages); + throw new UnsupportedOperationException(); } @Override diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/BackupDatabase_v6.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/BackupDatabase_v6.java index 0847306d3002edc875a536024131676fb648c714..07ecdbeaab95b9c3efa07c2ba57fe0fa52d23a14 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/BackupDatabase_v6.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/BackupDatabase_v6.java @@ -9,7 +9,7 @@ import de.deadlocker8.budgetmaster.database.model.BackupDatabase; import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5; import de.deadlocker8.budgetmaster.database.model.v5.BackupChart_v5; import de.deadlocker8.budgetmaster.database.model.v5.BackupImage_v5; -import de.deadlocker8.budgetmaster.database.model.v5.converter.*; +import de.deadlocker8.budgetmaster.database.model.v6.converter.*; import de.deadlocker8.budgetmaster.images.Image; import de.deadlocker8.budgetmaster.templates.Template; import de.deadlocker8.budgetmaster.transactions.Transaction; @@ -22,7 +22,7 @@ public class BackupDatabase_v6 implements BackupDatabase private final String TYPE = JSONIdentifier.BUDGETMASTER_DATABASE.toString(); @SuppressWarnings("FieldCanBeLocal") - private final int VERSION = 5; + private final int VERSION = 6; private List<BackupCategory_v5> categories; private List<BackupAccount_v6> accounts; @@ -108,15 +108,14 @@ public class BackupDatabase_v6 implements BackupDatabase public InternalDatabase convertToInternal() { -// final List<Category> convertedCategories = convertItemsToInternal(categories, new CategoryConverter_v5()); -// final List<Account> convertedAccounts = convertItemsToInternal(accounts, new AccountConverter_v5()); -// final List<Transaction> convertedTransactions = convertItemsToInternal(this.transactions, new TransactionConverter_v5()); -// final List<Template> convertedTemplates = convertItemsToInternal(this.templates, new TemplateConverter_v5()); -// final List<Chart> convertedCharts = convertItemsToInternal(this.charts, new ChartConverter_v5()); -// final List<Image> convertedImages = convertItemsToInternal(this.images, new ImageConverter_v5()); -// -// return new InternalDatabase(convertedCategories, convertedAccounts, convertedTransactions, convertedTemplates, convertedCharts, convertedImages); - return null; + final List<Image> convertedImages = convertItemsToInternal(this.images, new ImageConverter()); + final List<Category> convertedCategories = convertItemsToInternal(categories, new CategoryConverter()); + final List<Account> convertedAccounts = convertItemsToInternal(accounts, new AccountConverter(convertedImages)); + final List<Transaction> convertedTransactions = convertItemsToInternal(this.transactions, new TransactionConverter(convertedCategories, convertedAccounts)); + final List<Template> convertedTemplates = convertItemsToInternal(this.templates, new TemplateConverter(convertedImages, convertedCategories, convertedAccounts)); + final List<Chart> convertedCharts = convertItemsToInternal(this.charts, new ChartConverter()); + + return new InternalDatabase(convertedCategories, convertedAccounts, convertedTransactions, convertedTemplates, convertedCharts, convertedImages); } @Override diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/AccountConverter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/AccountConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..0310f11c640b870556fec5a42579fad844934baa --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/AccountConverter.java @@ -0,0 +1,64 @@ +package de.deadlocker8.budgetmaster.database.model.v6.converter; + +import de.deadlocker8.budgetmaster.accounts.Account; +import de.deadlocker8.budgetmaster.database.model.Converter; +import de.deadlocker8.budgetmaster.database.model.v6.BackupAccount_v6; +import de.deadlocker8.budgetmaster.images.Image; + +import java.util.List; + +public class AccountConverter implements Converter<Account, BackupAccount_v6> +{ + private final List<Image> availableIcons; + + public AccountConverter(List<Image> availableIcons) + { + this.availableIcons = availableIcons; + } + + public Account convertToInternalForm(BackupAccount_v6 backupAccount) + { + if(backupAccount == null) + { + return null; + } + + final Account account = new Account(); + account.setID(backupAccount.getID()); + account.setName(backupAccount.getName()); + account.setDefault(false); + account.setSelected(false); + account.setAccountState(backupAccount.getAccountState()); + account.setType(backupAccount.getType()); + account.setIcon(getIconById(backupAccount.getIconID())); + return account; + } + + private Image getIconById(Integer iconID) + { + return availableIcons.stream() + .filter(icon -> icon.getID().equals(iconID)) + .findFirst().orElse(null); + } + + @Override + public BackupAccount_v6 convertToExternalForm(Account internalAccount) + { + if(internalAccount == null) + { + return null; + } + + final BackupAccount_v6 account = new BackupAccount_v6(); + account.setID(internalAccount.getID()); + account.setName(internalAccount.getName()); + account.setAccountState(internalAccount.getAccountState()); + account.setType(internalAccount.getType()); + + if(internalAccount.getIcon() != null) + { + account.setIconID(internalAccount.getIcon().getID()); + } + return account; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/CategoryConverter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/CategoryConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..d7050d2153382039e0211ff8ba3c1eb234fa605a --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/CategoryConverter.java @@ -0,0 +1,41 @@ +package de.deadlocker8.budgetmaster.database.model.v6.converter; + +import de.deadlocker8.budgetmaster.categories.Category; +import de.deadlocker8.budgetmaster.database.model.Converter; +import de.deadlocker8.budgetmaster.database.model.v5.BackupCategory_v5; + +public class CategoryConverter implements Converter<Category, BackupCategory_v5> +{ + public Category convertToInternalForm(BackupCategory_v5 backupCategory) + { + if(backupCategory == null) + { + return null; + } + + final Category category = new Category(); + category.setID(backupCategory.getID()); + category.setName(backupCategory.getName()); + category.setColor(backupCategory.getColor()); + category.setType(backupCategory.getType()); + category.setIcon(backupCategory.getIcon()); + return category; + } + + @Override + public BackupCategory_v5 convertToExternalForm(Category internalItem) + { + if(internalItem == null) + { + return null; + } + + final BackupCategory_v5 category = new BackupCategory_v5(); + category.setID(internalItem.getID()); + category.setName(internalItem.getName()); + category.setColor(internalItem.getColor()); + category.setType(internalItem.getType()); + category.setIcon(internalItem.getIcon()); + return category; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/ChartConverter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/ChartConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..ba1dbcfcc0e01d4d30ca910d065af3ad1f2782f5 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/ChartConverter.java @@ -0,0 +1,41 @@ +package de.deadlocker8.budgetmaster.database.model.v6.converter; + +import de.deadlocker8.budgetmaster.charts.Chart; +import de.deadlocker8.budgetmaster.database.model.Converter; +import de.deadlocker8.budgetmaster.database.model.v5.BackupChart_v5; + +public class ChartConverter implements Converter<Chart, BackupChart_v5> +{ + public Chart convertToInternalForm(BackupChart_v5 backupChart) + { + if(backupChart == null) + { + return null; + } + + final Chart chart = new Chart(); + chart.setID(backupChart.getID()); + chart.setName(backupChart.getName()); + chart.setType(backupChart.getType()); + chart.setVersion(backupChart.getVersion()); + chart.setScript(backupChart.getScript()); + return chart; + } + + @Override + public BackupChart_v5 convertToExternalForm(Chart internalItem) + { + if(internalItem == null) + { + return null; + } + + final BackupChart_v5 chart = new BackupChart_v5(); + chart.setID(internalItem.getID()); + chart.setName(internalItem.getName()); + chart.setType(internalItem.getType()); + chart.setVersion(internalItem.getVersion()); + chart.setScript(internalItem.getScript()); + return chart; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/ImageConverter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/ImageConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..78d5ba28fa088fa5f412d2decc21114770a4baee --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/ImageConverter.java @@ -0,0 +1,39 @@ +package de.deadlocker8.budgetmaster.database.model.v6.converter; + +import de.deadlocker8.budgetmaster.database.model.Converter; +import de.deadlocker8.budgetmaster.database.model.v5.BackupImage_v5; +import de.deadlocker8.budgetmaster.images.Image; + +public class ImageConverter implements Converter<Image, BackupImage_v5> +{ + public Image convertToInternalForm(BackupImage_v5 backupImage) + { + if(backupImage == null) + { + return null; + } + + final Image image = new Image(); + image.setID(backupImage.getID()); + image.setFileName(backupImage.getFileName()); + image.setFileExtension(backupImage.getFileExtension()); + image.setImage(backupImage.getImage()); + return image; + } + + @Override + public BackupImage_v5 convertToExternalForm(Image internalItem) + { + if(internalItem == null) + { + return null; + } + + final BackupImage_v5 image = new BackupImage_v5(); + image.setID(internalItem.getID()); + image.setFileName(internalItem.getFileName()); + image.setFileExtension(internalItem.getFileExtension()); + image.setImage(internalItem.getImage()); + return image; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/TemplateConverter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/TemplateConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..1611f4ca871276fbddf12044caa1e2d11aab3b90 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/TemplateConverter.java @@ -0,0 +1,113 @@ +package de.deadlocker8.budgetmaster.database.model.v6.converter; + +import de.deadlocker8.budgetmaster.accounts.Account; +import de.deadlocker8.budgetmaster.categories.Category; +import de.deadlocker8.budgetmaster.database.model.Converter; +import de.deadlocker8.budgetmaster.database.model.v4.BackupTag_v4; +import de.deadlocker8.budgetmaster.database.model.v5.converter.TagConverter_v5; +import de.deadlocker8.budgetmaster.database.model.v6.BackupTemplate_v6; +import de.deadlocker8.budgetmaster.images.Image; +import de.deadlocker8.budgetmaster.tags.Tag; +import de.deadlocker8.budgetmaster.templates.Template; + +import java.util.ArrayList; +import java.util.List; + +public class TemplateConverter implements Converter<Template, BackupTemplate_v6> +{ + private final List<Image> availableIcons; + private final List<Category> availableCategories; + private final List<Account> availableAccounts; + + public TemplateConverter(List<Image> availableIcons, List<Category> availableCategories, List<Account> availableAccounts) + { + this.availableIcons = availableIcons; + this.availableCategories = availableCategories; + this.availableAccounts = availableAccounts; + } + + public Template convertToInternalForm(BackupTemplate_v6 backupTemplate) + { + if(backupTemplate == null) + { + return null; + } + + final Template template = new Template(); + template.setAmount(backupTemplate.getAmount()); + template.setName(backupTemplate.getName()); + template.setCategory(getItemById(availableCategories, backupTemplate.getCategoryID())); + template.setDescription(backupTemplate.getDescription()); + + if(backupTemplate.getExpenditure() == null) + { + template.setIsExpenditure(true); + } + else + { + template.setIsExpenditure(backupTemplate.getExpenditure()); + } + + template.setAccount(getItemById(availableAccounts, backupTemplate.getAccountID())); + template.setTransferAccount(getItemById(availableAccounts, backupTemplate.getTransferAccountID())); + + List<Tag> convertedTags = new ArrayList<>(); + TagConverter_v5 tagConverter = new TagConverter_v5(); + for(BackupTag_v4 tag : backupTemplate.getTags()) + { + convertedTags.add(tagConverter.convertToInternalForm(tag)); + } + template.setTags(convertedTags); + + template.setTemplateName(backupTemplate.getTemplateName()); + template.setIcon(getItemById(availableIcons, backupTemplate.getIconID())); + return template; + } + + @Override + public BackupTemplate_v6 convertToExternalForm(Template internalItem) + { + if(internalItem == null) + { + return null; + } + + final BackupTemplate_v6 template = new BackupTemplate_v6(); + template.setAmount(internalItem.getAmount()); + template.setName(internalItem.getName()); + + if(internalItem.getCategory() != null) + { + template.setCategoryID(internalItem.getCategory().getID()); + } + + template.setDescription(internalItem.getDescription()); + template.setExpenditure(internalItem.getExpenditure()); + + if(internalItem.getAccount() != null) + { + template.setAccountID(internalItem.getAccount().getID()); + } + + if(internalItem.getTransferAccount() != null) + { + template.setTransferAccountID(internalItem.getTransferAccount().getID()); + } + + List<BackupTag_v4> convertedTags = new ArrayList<>(); + TagConverter_v5 tagConverter = new TagConverter_v5(); + for(Tag tag : internalItem.getTags()) + { + convertedTags.add(tagConverter.convertToExternalForm(tag)); + } + template.setTags(convertedTags); + + template.setTemplateName(internalItem.getTemplateName()); + + if(internalItem.getIcon() != null) + { + template.setIconID(internalItem.getIcon().getID()); + } + return template; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/TransactionConverter.java b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/TransactionConverter.java new file mode 100644 index 0000000000000000000000000000000000000000..19416cc06a6e483b960e0c678dd36edd11103f19 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/database/model/v6/converter/TransactionConverter.java @@ -0,0 +1,95 @@ +package de.deadlocker8.budgetmaster.database.model.v6.converter; + +import de.deadlocker8.budgetmaster.accounts.Account; +import de.deadlocker8.budgetmaster.categories.Category; +import de.deadlocker8.budgetmaster.database.model.Converter; +import de.deadlocker8.budgetmaster.database.model.v4.BackupTag_v4; +import de.deadlocker8.budgetmaster.database.model.v5.converter.RepeatingOptionConverter_v5; +import de.deadlocker8.budgetmaster.database.model.v5.converter.TagConverter_v5; +import de.deadlocker8.budgetmaster.database.model.v6.BackupTransaction_v6; +import de.deadlocker8.budgetmaster.tags.Tag; +import de.deadlocker8.budgetmaster.transactions.Transaction; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; + +import java.util.ArrayList; +import java.util.List; + +public class TransactionConverter implements Converter<Transaction, BackupTransaction_v6> +{ + private final List<Category> availableCategories; + private final List<Account> availableAccounts; + + public TransactionConverter(List<Category> availableCategories, List<Account> availableAccounts) + { + this.availableCategories = availableCategories; + this.availableAccounts = availableAccounts; + } + + public Transaction convertToInternalForm(BackupTransaction_v6 backupTransaction) + { + if(backupTransaction == null) + { + return null; + } + + final Transaction transaction = new Transaction(); + transaction.setAmount(backupTransaction.getAmount()); + transaction.setName(backupTransaction.getName()); + transaction.setCategory(getItemById(availableCategories, backupTransaction.getCategoryID())); + transaction.setDescription(backupTransaction.getDescription()); + transaction.setIsExpenditure(backupTransaction.getExpenditure()); + transaction.setAccount(getItemById(availableAccounts, backupTransaction.getAccountID())); + transaction.setTransferAccount(getItemById(availableAccounts, backupTransaction.getTransferAccountID())); + + DateTime date = DateTime.parse(backupTransaction.getDate(), DateTimeFormat.forPattern("yyyy-MM-dd")); + date = date.withHourOfDay(12).withMinuteOfHour(0).withSecondOfMinute(0); + transaction.setDate(date); + + List<Tag> convertedTags = new ArrayList<>(); + TagConverter_v5 tagConverter = new TagConverter_v5(); + for(BackupTag_v4 tag : backupTransaction.getTags()) + { + convertedTags.add(tagConverter.convertToInternalForm(tag)); + } + transaction.setTags(convertedTags); + + transaction.setRepeatingOption(new RepeatingOptionConverter_v5().convertToInternalForm(backupTransaction.getRepeatingOption())); + return transaction; + } + + @Override + public BackupTransaction_v6 convertToExternalForm(Transaction internalItem) + { + if(internalItem == null) + { + return null; + } + + final BackupTransaction_v6 transaction = new BackupTransaction_v6(); + transaction.setAmount(internalItem.getAmount()); + transaction.setName(internalItem.getName()); + transaction.setCategoryID(internalItem.getCategory().getID()); + transaction.setDescription(internalItem.getDescription()); + transaction.setExpenditure(internalItem.getExpenditure()); + transaction.setAccountID(internalItem.getAccount().getID()); + + if(internalItem.getTransferAccount() != null) + { + transaction.setTransferAccountID(internalItem.getTransferAccount().getID()); + } + + transaction.setDate(internalItem.getDate().toString(DateTimeFormat.forPattern("yyyy-MM-dd"))); + + List<BackupTag_v4> convertedTags = new ArrayList<>(); + TagConverter_v5 tagConverter = new TagConverter_v5(); + for(Tag tag : internalItem.getTags()) + { + convertedTags.add(tagConverter.convertToExternalForm(tag)); + } + transaction.setTags(convertedTags); + + transaction.setRepeatingOption(new RepeatingOptionConverter_v5().convertToExternalForm(internalItem.getRepeatingOption())); + return transaction; + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/images/Image.java b/src/main/java/de/deadlocker8/budgetmaster/images/Image.java index fdcdc2739b3c0e878af4b22a3c7ad42979ed9b35..5dfce63bdc876d0f37fbfd8ba4d577839fef0d06 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/images/Image.java +++ b/src/main/java/de/deadlocker8/budgetmaster/images/Image.java @@ -2,6 +2,7 @@ package de.deadlocker8.budgetmaster.images; import com.google.gson.annotations.Expose; import de.deadlocker8.budgetmaster.accounts.Account; +import de.deadlocker8.budgetmaster.utils.ProvidesID; import org.apache.commons.lang3.ArrayUtils; import org.apache.tomcat.util.codec.binary.Base64; @@ -12,7 +13,7 @@ import java.util.List; import java.util.Objects; @Entity -public class Image +public class Image implements ProvidesID { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/ProvidesID.java b/src/main/java/de/deadlocker8/budgetmaster/utils/ProvidesID.java new file mode 100644 index 0000000000000000000000000000000000000000..783961088ae17a25321a68fbc4b99717609d88ab --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/ProvidesID.java @@ -0,0 +1,6 @@ +package de.deadlocker8.budgetmaster.utils; + +public interface ProvidesID +{ + Integer getID(); +}