Skip to content
Snippets Groups Projects
Commit c50f5d32 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

Fixed #690 - create default items after deletion to prevent deletion of newly created defaults

parent 7e20ae07
No related branches found
No related tags found
No related merge requests found
Showing with 41 additions and 70 deletions
......@@ -112,12 +112,14 @@ public class AccountService implements Resettable, AccessAllEntities<Account>, A
@Override
public void deleteAll()
{
LOGGER.info("Resetting accounts...");
deselectAllAccounts();
User user = userRepository.findByName("Default");
user.setSelectedAccount(null);
userRepository.save(user);
accountRepository.deleteAll();
LOGGER.info("All accounts reset.");
}
@Override
......
......@@ -82,7 +82,9 @@ public class CategoryService implements Resettable, AccessAllEntities<Category>,
@Override
public void deleteAll()
{
LOGGER.info("Resetting categories...");
categoryRepository.deleteAll();
LOGGER.info("All categories reset.");
}
@Override
......
......@@ -39,7 +39,9 @@ public class ChartService implements Resettable, AccessAllEntities<Chart>
@Override
public void deleteAll()
{
LOGGER.info("Resetting charts...");
chartRepository.deleteAll();
LOGGER.info("All charts reset.");
}
@SuppressWarnings("OptionalIsPresent")
......
......@@ -16,6 +16,7 @@ import de.deadlocker8.budgetmaster.icon.IconService;
import de.deadlocker8.budgetmaster.images.Image;
import de.deadlocker8.budgetmaster.images.ImageService;
import de.deadlocker8.budgetmaster.repeating.RepeatingOption;
import de.deadlocker8.budgetmaster.services.Resettable;
import de.deadlocker8.budgetmaster.settings.SettingsService;
import de.deadlocker8.budgetmaster.tags.TagService;
import de.deadlocker8.budgetmaster.templategroup.TemplateGroup;
......@@ -80,78 +81,18 @@ public class DatabaseService
public void reset()
{
resetTransactions();
resetTemplates();
resetCategories();
resetAccounts();
resetTags();
resetCharts();
resetIcons();
resetImages();
}
private void resetAccounts()
{
LOGGER.info("Resetting accounts...");
accountService.deleteAll();
accountService.createDefaults();
LOGGER.info("All accounts reset.");
}
private void resetCategories()
{
LOGGER.info("Resetting categories...");
categoryService.deleteAll();
categoryService.createDefaults();
LOGGER.info("All categories reset.");
}
private void resetTransactions()
{
LOGGER.info("Resetting transactions...");
transactionService.deleteAll();
transactionService.createDefaults();
LOGGER.info("All transactions reset.");
}
final List<Resettable> services = List.of(this.transactionService, templateService, categoryService, accountService, tagService, chartService, iconService, imageService);
private void resetTags()
for(Resettable service : services)
{
LOGGER.info("Resetting tags...");
tagService.deleteAll();
tagService.createDefaults();
LOGGER.info("All tags reset.");
service.deleteAll();
}
private void resetTemplates()
// create defaults after deletion to avoid deletion of newly created defaults
for(Resettable service : services)
{
LOGGER.info("Resetting templates...");
templateService.deleteAll();
templateService.createDefaults();
LOGGER.info("All templates reset.");
service.createDefaults();
}
private void resetCharts()
{
LOGGER.info("Resetting charts...");
chartService.deleteAll();
chartService.createDefaults();
LOGGER.info("All charts reset.");
}
private void resetImages()
{
LOGGER.info("Resetting images...");
imageService.deleteAll();
imageService.createDefaults();
LOGGER.info("All images reset.");
}
private void resetIcons()
{
LOGGER.info("Resetting icons...");
iconService.deleteAll();
iconService.createDefaults();
LOGGER.info("All icons reset.");
}
public void rotatingBackup(Path backupFolderPath)
......
......@@ -7,6 +7,8 @@ import de.deadlocker8.budgetmaster.images.ImageRepository;
import de.deadlocker8.budgetmaster.services.Resettable;
import de.deadlocker8.budgetmaster.templates.Template;
import de.deadlocker8.budgetmaster.utils.ResourceNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -17,6 +19,8 @@ import java.util.Optional;
@Service
public class IconService implements Resettable
{
private static final Logger LOGGER = LoggerFactory.getLogger(IconService.class);
private final IconRepository iconRepository;
private final ImageRepository imageRepository;
......@@ -36,6 +40,8 @@ public class IconService implements Resettable
@Transactional
public void deleteAll()
{
LOGGER.info("Resetting icons...");
final List<Icon> icons = iconRepository.findAll();
for(Icon icon : icons)
{
......@@ -43,6 +49,7 @@ public class IconService implements Resettable
}
iconRepository.deleteAll();
LOGGER.info("All icons reset.");
}
@Transactional
......
......@@ -5,6 +5,8 @@ import de.deadlocker8.budgetmaster.icon.IconService;
import de.deadlocker8.budgetmaster.services.Resettable;
import de.thecodelabs.utils.util.Localization;
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -17,6 +19,9 @@ import java.util.Optional;
@Service
public class ImageService implements Resettable
{
private static final Logger LOGGER = LoggerFactory.getLogger(ImageService.class);
private final ImageRepository imageRepository;
private final IconService iconService;
......@@ -36,6 +41,7 @@ public class ImageService implements Resettable
@Transactional
public void deleteAll()
{
LOGGER.info("Resetting images...");
final List<Image> images = imageRepository.findAll();
for(Image image : images)
{
......@@ -43,6 +49,7 @@ public class ImageService implements Resettable
}
imageRepository.deleteAll();
LOGGER.info("All images reset.");
}
@Transactional
......
......@@ -3,6 +3,8 @@ package de.deadlocker8.budgetmaster.tags;
import de.deadlocker8.budgetmaster.services.AccessAllEntities;
import de.deadlocker8.budgetmaster.services.Resettable;
import org.padler.natorder.NaturalOrderComparator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -13,6 +15,8 @@ import java.util.Map;
@Service
public class TagService implements Resettable, AccessAllEntities<Tag>
{
private static final Logger LOGGER = LoggerFactory.getLogger(TagService.class);
private final TagRepository tagRepository;
@Autowired
......@@ -29,7 +33,9 @@ public class TagService implements Resettable, AccessAllEntities<Tag>
@Override
public void deleteAll()
{
LOGGER.info("Resetting tags...");
tagRepository.deleteAll();
LOGGER.info("All tags reset.");
}
@Override
......
......@@ -60,7 +60,9 @@ public class TemplateService implements Resettable, AccessAllEntities<Template>,
@Override
public void deleteAll()
{
LOGGER.info("Resetting templates...");
templateRepository.deleteAll();
LOGGER.info("All templates reset.");
}
@Override
......
......@@ -203,10 +203,12 @@ public class TransactionService implements Resettable
@Override
public void deleteAll()
{
LOGGER.info("Resetting transactions...");
for(Transaction transaction : transactionRepository.findAll())
{
deleteTransactionInRepo(transaction.getID());
}
LOGGER.info("All transactions reset.");
}
public void deleteTransactionsWithAccount(Account account)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment