diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java index 266c89b600c3a216bfcdf0ef65b2b74d33088789..839782add21f503bfbfcce9620a96eee0fc9f73d 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/AccountController.java @@ -1,6 +1,7 @@ package de.deadlocker8.budgetmaster.controller; import de.deadlocker8.budgetmaster.entities.Account; +import de.deadlocker8.budgetmaster.entities.AccountType; import de.deadlocker8.budgetmaster.repositories.AccountRepository; import de.deadlocker8.budgetmaster.services.AccountService; import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException; @@ -56,7 +57,7 @@ public class AccountController extends BaseController @RequestMapping("/accounts/{ID}/delete") public String deleteAccountAndReferringTransactions(Model model, @PathVariable("ID") Integer ID) { - if(accountRepository.findAll().size() > 1) + if(accountRepository.findAllByType(AccountType.CUSTOM).size() > 1) { accountService.deleteAccount(ID); return "redirect:/accounts"; @@ -110,6 +111,7 @@ public class AccountController extends BaseController } else { + account.setType(AccountType.CUSTOM); if(account.getID() == null) { // new account diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java index 3278b5189486567de0fea608c62470a56f1ae9b5..de862a1111fe9a01fb543e67fbefc2974793829c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser.java @@ -49,6 +49,7 @@ public class DatabaseParser } catch(Exception e) { + e.printStackTrace(); throw new IllegalArgumentException(Localization.getString("error.database.import.invalid.json")); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java index f29aa58ea8cde4eb7141675eea3fdc64036d7c63..c95f8789017164c24607699c354b607535a0007a 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java @@ -5,10 +5,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import de.deadlocker8.budgetmaster.database.Database; -import de.deadlocker8.budgetmaster.entities.Account; -import de.deadlocker8.budgetmaster.entities.Category; -import de.deadlocker8.budgetmaster.entities.CategoryType; -import de.deadlocker8.budgetmaster.entities.Transaction; +import de.deadlocker8.budgetmaster.entities.*; import de.deadlocker8.budgetmaster.repeating.RepeatingOption; import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndDate; import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndNever; @@ -34,7 +31,7 @@ public class LegacyParser public LegacyParser(String json) { this.jsonString = json; - this.account = new Account("LEGACY_IMPORT"); + this.account = new Account("LEGACY_IMPORT", AccountType.CUSTOM); } public Database parseDatabaseFromJSON() diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java b/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java index bef1cb0f0da1292a6796b5352b970a3de3930caa..b028964c91ce0531e222729a64a665cba7b52b9d 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java +++ b/src/main/java/de/deadlocker8/budgetmaster/entities/Account.java @@ -27,9 +27,13 @@ public class Account private boolean isSelected; - public Account(String name) + @Expose + private AccountType type; + + public Account(String name, AccountType type) { this.name = name; + this.type = type; this.isSelected = false; } @@ -77,6 +81,16 @@ public class Account isSelected = selected; } + public AccountType getType() + { + return type; + } + + public void setType(AccountType type) + { + this.type = type; + } + @Override public String toString() { @@ -85,6 +99,7 @@ public class Account ", name='" + name + '\'' + ", referringTransactions=" + referringTransactions + ", isSelected=" + isSelected + + ", type=" + type + '}'; } @@ -96,13 +111,13 @@ public class Account Account account = (Account) o; return isSelected == account.isSelected && Objects.equals(ID, account.ID) && - Objects.equals(name, account.name); + Objects.equals(name, account.name) && + type == account.type; } @Override public int hashCode() { - - return Objects.hash(ID, name, isSelected); + return Objects.hash(ID, name, isSelected, type); } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/entities/AccountType.java b/src/main/java/de/deadlocker8/budgetmaster/entities/AccountType.java new file mode 100644 index 0000000000000000000000000000000000000000..5accc8789b2822eae798d5295104428a2e588aae --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/entities/AccountType.java @@ -0,0 +1,7 @@ +package de.deadlocker8.budgetmaster.entities; + + +public enum AccountType +{ + ALL, CUSTOM +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java b/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java index a0402829424f9fdb2b4201425ba18568e865949d..f36fab75fca24653d5ff12c27e434231cba5693f 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/repositories/AccountRepository.java @@ -1,6 +1,7 @@ package de.deadlocker8.budgetmaster.repositories; import de.deadlocker8.budgetmaster.entities.Account; +import de.deadlocker8.budgetmaster.entities.AccountType; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; @@ -12,5 +13,7 @@ public interface AccountRepository extends JpaRepository<Account, Integer> Account findByName(String name); + List<Account> findAllByType(AccountType accountType); + Account findByIsSelected(boolean isSelected); } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java b/src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java index 23033981cad3f6a98909a55bd347b588bf5ec801..b5adae4505f9e58d2a96d07793832456e512d665 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java +++ b/src/main/java/de/deadlocker8/budgetmaster/repositories/TransactionRepository.java @@ -13,6 +13,8 @@ public interface TransactionRepository extends JpaRepository<Transaction, Intege { List<Transaction> findAllByAccountAndDateBetweenOrderByDateDesc(Account account, DateTime startDate, DateTime endDate); + List<Transaction> findAllByDateBetweenOrderByDateDesc(DateTime startDate, DateTime endDate); + List<Transaction> findAllByAccount(Account account); @Query(value = "SELECT SUM(t.amount) FROM `transaction` as t WHERE t.account_id = ?1 AND t.date BETWEEN ?2 AND ?3", nativeQuery = true) diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java b/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java index 2248dd14645a0f62330975d4ed46e5b808e0208e..58c9af3453ea5a3ea515775f4ee54df4227bce3b 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/AccountService.java @@ -3,6 +3,7 @@ package de.deadlocker8.budgetmaster.services; import de.deadlocker8.budgetmaster.authentication.User; import de.deadlocker8.budgetmaster.authentication.UserRepository; import de.deadlocker8.budgetmaster.entities.Account; +import de.deadlocker8.budgetmaster.entities.AccountType; import de.deadlocker8.budgetmaster.repositories.AccountRepository; import de.deadlocker8.budgetmaster.repositories.TransactionRepository; import de.deadlocker8.budgetmaster.utils.Strings; @@ -69,7 +70,11 @@ public class AccountService implements Resetable { if(accountRepository.findAll().size() == 0) { - Account account = new Account(Localization.getString(Strings.ACCOUNT_DEFAULT_NAME)); + Account placeholder = new Account("Placeholder", AccountType.ALL); + accountRepository.save(placeholder); + LOGGER.debug("Created placeholder account"); + + Account account = new Account(Localization.getString(Strings.ACCOUNT_DEFAULT_NAME), AccountType.CUSTOM); account = accountRepository.save(account); selectAccount(account.getID()); LOGGER.debug("Created default account"); diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java index f29d2e07e173b9842e836c5d43e5c9076a688e7b..9f0ec74b422e38172e74123b379183db65800e48 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/HelpersService.java @@ -1,13 +1,9 @@ package de.deadlocker8.budgetmaster.services; import de.deadlocker8.budgetmaster.database.accountmatches.AccountMatch; -import de.deadlocker8.budgetmaster.entities.Account; -import de.deadlocker8.budgetmaster.entities.Transaction; -import de.deadlocker8.budgetmaster.entities.Settings; -import de.deadlocker8.budgetmaster.entities.Tag; +import de.deadlocker8.budgetmaster.entities.*; import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierType; import de.deadlocker8.budgetmaster.repositories.AccountRepository; -import de.deadlocker8.budgetmaster.repositories.TransactionRepository; import de.deadlocker8.budgetmaster.repositories.SettingsRepository; import de.deadlocker8.budgetmaster.repositories.TagRepository; import de.deadlocker8.budgetmaster.utils.Colors; @@ -199,7 +195,7 @@ public class HelpersService // select random account if no account is selected if(selectedAccount == null) { - Account account = accountRepository.findAll().get(0); + Account account = accountRepository.findAllByType(AccountType.CUSTOM).get(0); accountService.selectAccount(account.getID()); selectedAccount = accountRepository.findByIsSelected(true); } @@ -267,7 +263,10 @@ public class HelpersService List<AccountMatch> accountMatches = new ArrayList<>(); for(Account account : accounts) { - accountMatches.add(new AccountMatch(account)); + if(account.getType().equals(AccountType.CUSTOM)) + { + accountMatches.add(new AccountMatch(account)); + } } return accountMatches; diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java index e87d3bd4d7903f00ac456606fc30b7bfd76c9643..fa3b337437dc03f27adc8c46cf4fd99640d944fe 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/TransactionService.java @@ -1,6 +1,7 @@ package de.deadlocker8.budgetmaster.services; import de.deadlocker8.budgetmaster.entities.Account; +import de.deadlocker8.budgetmaster.entities.AccountType; import de.deadlocker8.budgetmaster.entities.CategoryType; import de.deadlocker8.budgetmaster.entities.Transaction; import de.deadlocker8.budgetmaster.repositories.CategoryRepository; @@ -24,13 +25,16 @@ public class TransactionService implements Resetable private TransactionRepository transactionRepository; private RepeatingOptionRepository repeatingOptionRepository; private CategoryRepository categoryRepository; + private AccountService accountService; + @Autowired - public TransactionService(TransactionRepository transactionRepository, RepeatingOptionRepository repeatingOptionRepository, CategoryRepository categoryRepository) + public TransactionService(TransactionRepository transactionRepository, RepeatingOptionRepository repeatingOptionRepository, CategoryRepository categoryRepository, AccountService accountService) { this.transactionRepository = transactionRepository; this.repeatingOptionRepository = repeatingOptionRepository; this.categoryRepository = categoryRepository; + this.accountService = accountService; } public TransactionRepository getRepository() @@ -56,8 +60,7 @@ public class TransactionService implements Resetable private List<Transaction> getTransactionsForMonthAndYearWithRest(Account account, int month, int year) { DateTime startDate = DateTime.now().withYear(year).withMonthOfYear(month).minusMonths(1).dayOfMonth().withMaximumValue(); - DateTime endDate = DateTime.now().withYear(year).withMonthOfYear(month).dayOfMonth().withMaximumValue(); - List<Transaction> transactions = transactionRepository.findAllByAccountAndDateBetweenOrderByDateDesc(account, startDate, endDate); + List<Transaction> transactions = getTransactionsForMonthAndYearWithoutRest(account, month, year); Transaction transactionRest = new Transaction(); transactionRest.setCategory(categoryRepository.findByType(CategoryType.REST)); @@ -73,12 +76,24 @@ public class TransactionService implements Resetable { DateTime startDate = DateTime.now().withYear(year).withMonthOfYear(month).minusMonths(1).dayOfMonth().withMaximumValue(); DateTime endDate = DateTime.now().withYear(year).withMonthOfYear(month).dayOfMonth().withMaximumValue(); + + if(account.getType().equals(AccountType.ALL)) + { + return transactionRepository.findAllByDateBetweenOrderByDateDesc(startDate, endDate); + } + return transactionRepository.findAllByAccountAndDateBetweenOrderByDateDesc(account, startDate, endDate); } public List<Transaction> getTransactionsForAccountUntilDate(Account account, DateTime date) { DateTime startDate = DateTime.now().withYear(1900).withMonthOfYear(1).withDayOfMonth(1); + + if(account.getType().equals(AccountType.ALL)) + { + return transactionRepository.findAllByDateBetweenOrderByDateDesc(startDate, date); + } + return transactionRepository.findAllByAccountAndDateBetweenOrderByDateDesc(account, startDate, date); } diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index aed78b8f09b41bcbef5e2a5db3fd69fc5a6ba639..1cd7fa14c3e88e4ba157cd01d52931f4612f33d3 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -147,6 +147,7 @@ settings.database.delete.verification=Best account.new.label.name=Name account.default.name=Standardkonto +account.all=Alle Konten account.budget.asof=Stand transaction.new.label.name=Name diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index 10ef3575b27005ba9404bfdf550350717cf4602a..ea12e48589d8affb897db5de9675f3e4452ef306 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -148,6 +148,7 @@ settings.database.delete.verification=Verification Code account.new.label.name=Name account.default.name=Default Account +account.all=All Accounts account.budget.asof=as of transaction.new.label.name=Name diff --git a/src/main/resources/static/css/dark/style.css b/src/main/resources/static/css/dark/style.css index 86c5b9a82c81600baf0d7c4c116f7db244126243..32de68041080ea0d654b0f972915e56c01a4fcd8 100644 --- a/src/main/resources/static/css/dark/style.css +++ b/src/main/resources/static/css/dark/style.css @@ -430,6 +430,10 @@ input[type="radio"]:not(:checked) + label::before, [type="radio"]:not(:checked) padding: 5px 32px 12px 32px; } +.all-account-placeholder { + font-weight: bold; +} + .login-button { text-transform: none; } diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index b77bf617222c483111a6f883055dbd2691a06fbe..de96876d53ee098fb83ce9f050ad100df47b6755 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -372,6 +372,10 @@ input[type="radio"]:checked + label::after, [type="radio"].with-gap:checked + la padding: 5px 32px 12px 32px; } +.all-account-placeholder { + font-weight: bold; +} + .login-button { text-transform: none; } diff --git a/src/main/resources/static/js/main.js b/src/main/resources/static/js/main.js index bd3862a0bb91948ae89a2f73f6997947b8c0cc6a..7ce931084c678e812e2eeeed56d32f7399d2810a 100644 --- a/src/main/resources/static/js/main.js +++ b/src/main/resources/static/js/main.js @@ -7,13 +7,21 @@ $( document ).ready(function() { $('select').material_select(); + $("#selectWrapper ul.dropdown-content.select-dropdown li span").each(function () { + if($(this).text() === accountPlaceholderName) + { + $(this).addClass("all-account-placeholder"); + } + }); + $("#selectAccount").on('change', function() { var accountID = $(this).val(); window.location = "/account/" + accountID + "/select"; }); - if($("#login-password").length) { + if($("#login-password").length) + { document.getElementById("login-password").focus(); } }); diff --git a/src/main/resources/templates/accounts/accounts.ftl b/src/main/resources/templates/accounts/accounts.ftl index b1b30e88b156335f923528b1b5f3659a3213674f..79930f1e2f1693291c4e476ccda0c0c0c04f5196 100644 --- a/src/main/resources/templates/accounts/accounts.ftl +++ b/src/main/resources/templates/accounts/accounts.ftl @@ -20,13 +20,15 @@ <div class="container"> <table class="bordered"> <#list accounts as account> - <tr> - <td>${account.getName()}</td> - <td> - <a href="/accounts/${account.getID()}/edit" class="btn-flat no-padding text-color"><i class="material-icons left">edit</i></a> - <a href="/accounts/${account.getID()}/requestDelete" class="btn-flat no-padding text-color"><i class="material-icons left">delete</i></a> - </td> - </tr> + <#if (account.getType().name() == "CUSTOM")> + <tr> + <td>${account.getName()}</td> + <td> + <a href="/accounts/${account.getID()}/edit" class="btn-flat no-padding text-color"><i class="material-icons left">edit</i></a> + <a href="/accounts/${account.getID()}/requestDelete" class="btn-flat no-padding text-color"><i class="material-icons left">delete</i></a> + </td> + </tr> + </#if> </#list> </table> <#if accounts?size == 0> diff --git a/src/main/resources/templates/import.ftl b/src/main/resources/templates/import.ftl index 0e37c35c87653ec48cc41e07c014165acc14359c..b3859b6679a94e6f9170c249319e6cfba57af0a5 100644 --- a/src/main/resources/templates/import.ftl +++ b/src/main/resources/templates/import.ftl @@ -30,7 +30,9 @@ <td> <select class="account-destination"> <#list availableAccounts as account> - <option value="${account.getID()}">${account.getName()}</option> + <#if (account.getType().name() == "CUSTOM")> + <option value="${account.getID()}">${account.getName()}</option> + </#if> </#list> </select> </td> diff --git a/src/main/resources/templates/navbar.ftl b/src/main/resources/templates/navbar.ftl index ed5059b75fdda1bf7b7b4bd9497fa383f782e9e3..2d568a762864fee4cd1d34f2f4e1e29fb136a8a4 100644 --- a/src/main/resources/templates/navbar.ftl +++ b/src/main/resources/templates/navbar.ftl @@ -50,10 +50,14 @@ <#macro itemAccountSelect> <div class="account-navbar center-align"> - <div class="input-field no-margin"> + <div class="input-field no-margin" id="selectWrapper"> <select id="selectAccount"> <#list helpers.getAllAccounts() as account> - <option <#if account.isSelected()>selected</#if> value="${account.getID()}">${account.getName()}</option> + <#if (account.getType().name() == "ALL")> + <option <#if account.isSelected()>selected</#if> value="${account.getID()}">${locale.getString("account.all")}</option> + <#else> + <option <#if account.isSelected()>selected</#if> value="${account.getID()}">${account.getName()}</option> + </#if> </#list> </select> </div> diff --git a/src/main/resources/templates/scripts.ftl b/src/main/resources/templates/scripts.ftl index e15e415e20ecf77a9ec91bd6d1bf049b6601ed88..6b9baab0d93deb969c83f27cec90c465b35069cb 100644 --- a/src/main/resources/templates/scripts.ftl +++ b/src/main/resources/templates/scripts.ftl @@ -2,4 +2,7 @@ <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> <script src="/materialize-0.100.2/js/materialize.min.js"></script> <script src="/js/main.js"></script> +<script> + accountPlaceholderName = "${locale.getString("account.all")}"; +</script> </#macro> \ No newline at end of file diff --git a/src/main/resources/templates/transactions/newTransaction.ftl b/src/main/resources/templates/transactions/newTransaction.ftl index ee6821b8ca06d785a8198e9c7dd27dc0471475b1..b32c134b7127ae5a07816bf307795c0a4a4ffeae 100644 --- a/src/main/resources/templates/transactions/newTransaction.ftl +++ b/src/main/resources/templates/transactions/newTransaction.ftl @@ -123,13 +123,15 @@ <div class="input-field col s12 m12 l8 offset-l2"> <select id="transaction-account" name="account" <@validation.validation "account"/>> <#list accounts as account> - <#if transaction.getAccount()?? && transaction.getAccount() == account> - <option selected value="${account.getID()}">${account.getName()}</option> - <#else> - <#if account == helpers.getCurrentAccount()> + <#if (account.getType().name() == "CUSTOM")> + <#if transaction.getAccount()?? && transaction.getAccount() == account> <option selected value="${account.getID()}">${account.getName()}</option> <#else> - <option value="${account.getID()}">${account.getName()}</option> + <#if account == helpers.getCurrentAccount()> + <option selected value="${account.getID()}">${account.getName()}</option> + <#else> + <option value="${account.getID()}">${account.getName()}</option> + </#if> </#if> </#if> </#list> diff --git a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java index 8de0f9e17e7105af5ef0e56cc666e1a80514054c..9fabfb28ee172de0ec72520a30072769c45e36ba 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseImportTest.java @@ -214,6 +214,12 @@ public class DatabaseImportTest return null; } + @Override + public List<Transaction> findAllByDateBetweenOrderByDateDesc(DateTime startDate, DateTime endDate) + { + return null; + } + @Override public List<Transaction> findAllByAccount(Account account) { @@ -589,7 +595,7 @@ public class DatabaseImportTest transaction1.setAmount(200); transaction1.setDate(new DateTime(2018, 10, 3, 12, 0, 0, 0)); transaction1.setCategory(category1); - transaction1.setAccount(new Account("Account")); + transaction1.setAccount(new Account("Account", AccountType.CUSTOM)); transactionList.add(transaction1); Transaction transaction2 = new Transaction(); @@ -597,7 +603,7 @@ public class DatabaseImportTest transaction2.setAmount(-525); transaction2.setDate(new DateTime(2018, 10, 3, 12, 0, 0, 0)); transaction2.setCategory(category2); - transaction2.setAccount(new Account("Account")); + transaction2.setAccount(new Account("Account", AccountType.CUSTOM)); transactionList.add(transaction2); List<Transaction> alreadyUpdatedTransactions = new ArrayList<>(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java index b9b1584578b8c9f06ee8127e0f14d79118bd01ab..50cfbfa1987f1cab086da0bbe6175a0392e109d9 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java +++ b/src/test/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3Test.java @@ -81,9 +81,10 @@ public class DatabaseParser_v3Test DatabaseParser_v3 importer = new DatabaseParser_v3(json); Database database = importer.parseDatabaseFromJSON(); - assertEquals(2, database.getAccounts().size()); - assertEquals("Default", database.getAccounts().get(0).getName()); - assertEquals("Second Account", database.getAccounts().get(1).getName()); + assertEquals(3, database.getAccounts().size()); + assertEquals("Placeholder", database.getAccounts().get(0).getName()); + assertEquals("Default", database.getAccounts().get(1).getName()); + assertEquals("Second Account", database.getAccounts().get(2).getName()); } catch(IOException | URISyntaxException e) { @@ -100,11 +101,11 @@ public class DatabaseParser_v3Test DatabaseParser_v3 importer = new DatabaseParser_v3(json); Database database = importer.parseDatabaseFromJSON(); - Account account1 = new Account("Default"); - account1.setID(1); + Account account1 = new Account("Default", AccountType.CUSTOM); + account1.setID(2); - Account account2 = new Account("Second Account"); - account2.setID(2); + Account account2 = new Account("Second Account", AccountType.CUSTOM); + account2.setID(3); Category categoryNone = new Category("Keine Kategorie", "#FFFFFF", CategoryType.NONE); categoryNone.setID(1); diff --git a/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java b/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java index 6a1a3ad39fba6dcb59c467f30f761f7d5c4a712c..ebd061fdb9955d1465fad115921f4a8e9a1710ac 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/database/LegacyParserTest.java @@ -72,7 +72,7 @@ public class LegacyParserTest try { String json = new String(Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource("LegacyParserTest.json").toURI()))); - Account account = new Account("LEGACY_IMPORT"); + Account account = new Account("LEGACY_IMPORT", AccountType.CUSTOM); List<Tag> tags = new ArrayList<>(); tags.add(new Tag("0815")); diff --git a/src/test/resources/DatabaseParser_v3Test.json b/src/test/resources/DatabaseParser_v3Test.json index d0d2c53c83ecb06d5942ed4951e9246bbb3d8406..c290b963f8edf667afb780fb7f186f80b0664f90 100644 --- a/src/test/resources/DatabaseParser_v3Test.json +++ b/src/test/resources/DatabaseParser_v3Test.json @@ -24,11 +24,18 @@ "accounts": [ { "ID": 1, - "name": "Default" + "name": "Placeholder", + "type": "ALL" }, - { + { "ID": 2, - "name": "Second Account" + "name": "Default", + "type": "CUSTOM" + }, + { + "ID": 3, + "name": "Second Account", + "type": "CUSTOM" } ], "transactions": [ @@ -37,7 +44,7 @@ "amount": 35000, "date": "2018-03-13", "account": { - "ID": 1, + "ID": 2, "name": "Default" }, "category": { @@ -55,7 +62,7 @@ "amount": -2000, "date": "2018-06-15", "account": { - "ID": 2, + "ID": 3, "name": "Second Account" }, "category": { @@ -78,7 +85,7 @@ "amount": -12300, "date": "2018-03-13", "account": { - "ID": 1, + "ID": 2, "name": "Default" }, "category": { @@ -110,7 +117,7 @@ "amount": -12300, "date": "2018-03-23", "account": { - "ID": 1, + "ID": 2, "name": "Default" }, "category": { @@ -142,7 +149,7 @@ "amount": -12300, "date": "2018-04-02", "account": { - "ID": 1, + "ID": 2, "name": "Default" }, "category": {