From 961fd2b7bef8e6bdb134edebf1aad2cb547de8b7 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Thu, 6 May 2021 23:11:58 +0200 Subject: [PATCH] refactoring: fixed sonarlint warnings --- .../de/deadlocker8/budgetmaster/Main.java | 4 +- .../budgetmaster/advices/SettingsAdvice.java | 3 +- .../budgetmaster/backup/GitHelper.java | 8 ++-- .../budgetmaster/backup/LocalBackupTask.java | 5 +-- .../backup/LocalGitBackupTask.java | 5 +-- .../categories/CategoryController.java | 2 +- .../categories/CategoryService.java | 3 +- .../budgetmaster/charts/ChartController.java | 7 +--- .../controller/DatePickerController.java | 16 ++++---- .../database/DatabaseParser_v3.java | 8 ++-- .../database/DatabaseService.java | 2 +- .../database/legacy/LegacyParser.java | 18 ++++----- .../filter/FilterConfiguration.java | 4 +- .../budgetmaster/filter/FilterController.java | 5 ++- .../budgetmaster/images/Image.java | 8 ++-- .../reports/ReportGeneratorService.java | 25 +++++++----- .../settings/ReportSettingsService.java | 5 +-- .../settings/SettingsService.java | 6 +-- .../TransactionSpecifications.java | 4 +- .../unit/TransactionSpecificationsTest.java | 40 +++++++++---------- 20 files changed, 88 insertions(+), 90 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java index 8065eeebe..f459cd307 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/Main.java +++ b/src/main/java/de/deadlocker8/budgetmaster/Main.java @@ -114,12 +114,12 @@ public class Main extends SpringBootServletInitializer implements ApplicationRun } else { - LOGGER.error(MessageFormat.format("Ignoring option --customFolder: provided path ''{0}'' is not absolute", customFolder.toString())); + LOGGER.error(MessageFormat.format("Ignoring option --customFolder: provided path ''{0}'' is not absolute", customFolder)); } } savePath = determineFolder(savePath); - LOGGER.info(MessageFormat.format("Used save path: {0}", savePath.toString())); + LOGGER.info(MessageFormat.format("Used save path: {0}", savePath)); return savePath; } diff --git a/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java b/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java index 0efdbd813..f6e28ea29 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java +++ b/src/main/java/de/deadlocker8/budgetmaster/advices/SettingsAdvice.java @@ -14,12 +14,11 @@ public class SettingsAdvice @Autowired private SettingsRepository settingsRepository; - @SuppressWarnings("OptionalGetWithoutIsPresent") @ModelAttribute("settings") public Settings getSettings() { Optional<Settings> settingsOptional = settingsRepository.findById(0); - return settingsOptional.get(); + return settingsOptional.orElseThrow(); } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java b/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java index bf4d2dbf5..faebf2606 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/GitHelper.java @@ -19,6 +19,8 @@ import java.util.Set; public class GitHelper { + private static final String REMOTE_NAME = "origin"; + static class PullException extends Exception { public PullException(String message) @@ -57,15 +59,15 @@ public class GitHelper public static void replaceRemote(Git git, String remote) throws URISyntaxException, GitAPIException { - git.remoteRemove().setRemoteName("origin").call(); - git.remoteAdd().setName("origin").setUri(new URIish(remote)).call(); + git.remoteRemove().setRemoteName(REMOTE_NAME).call(); + git.remoteAdd().setName(REMOTE_NAME).setUri(new URIish(remote)).call(); } public static void pullLatestChanges(Git git, CredentialsProvider credentialsProvider, String branchName) throws GitAPIException, PullException { final PullResult result = git.pull() .setCredentialsProvider(credentialsProvider) - .setRemote("origin") + .setRemote(REMOTE_NAME) .setRemoteBranchName(branchName) .call(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java index d2e4e3b78..ce03de717 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalBackupTask.java @@ -32,10 +32,7 @@ public class LocalBackupTask extends BackupTask @Override public void cleanup(Settings previousSettings, Settings newSettings) { - if(!needsCleanup(previousSettings, newSettings)) - { - return; - } + // nothing to cleanup that could interfere with future backup executions } @Override diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java index 12d206fb7..991e3720c 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java +++ b/src/main/java/de/deadlocker8/budgetmaster/backup/LocalGitBackupTask.java @@ -62,10 +62,7 @@ public class LocalGitBackupTask extends GitBackupTask @Override public void cleanup(Settings previousSettings, Settings newSettings) { - if(!needsCleanup(previousSettings, newSettings)) - { - return; - } + // nothing to cleanup that could interfere with future backup executions } @Override diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java index 805ec044d..7a85cdf15 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryController.java @@ -57,7 +57,7 @@ public class CategoryController extends BaseController model.addAttribute("availableCategories", availableCategories); model.addAttribute("preselectedCategory", categoryService.findByType(CategoryType.NONE)); - model.addAttribute("currentCategory", categoryService.findById(ID).get()); + model.addAttribute("currentCategory", categoryService.findById(ID).orElseThrow()); return "categories/categories"; } diff --git a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java index 5a93b1167..7632a5bbe 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/categories/CategoryService.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.NoSuchElementException; import java.util.Optional; @Service @@ -48,7 +49,7 @@ public class CategoryService implements Resetable, AccessAllEntities<Category> Optional<Category> categoryOptional = categoryRepository.findById(ID); if(categoryOptional.isEmpty()) { - throw new RuntimeException("Can't delete non-existing category with ID: " + ID); + throw new NoSuchElementException("Can't delete non-existing category with ID: " + ID); } Category categoryToDelete = categoryOptional.get(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java index 3cd8f9431..cebdce507 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/charts/ChartController.java @@ -146,12 +146,9 @@ public class ChartController extends BaseController { // reject editing of default chart Optional<Chart> existingChartOptional = chartService.getRepository().findById(chart.getID()); - if(existingChartOptional.isPresent()) + if(existingChartOptional.isPresent() && existingChartOptional.get().getType() != ChartType.CUSTOM) { - if(existingChartOptional.get().getType() != ChartType.CUSTOM) - { - return "error/400"; - } + return "error/400"; } } diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java index 0afe5aea1..31ea8bea5 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/DatePickerController.java @@ -19,6 +19,8 @@ import javax.servlet.http.HttpServletResponse; @Controller public class DatePickerController extends BaseController { + private static final String COOKIE_NAME = "currentDate"; + private final SettingsService settingsService; private final DateService dateService; @@ -30,34 +32,34 @@ public class DatePickerController extends BaseController } @RequestMapping(value = "/previousMonth") - public String previousMonth(HttpServletResponse response, @CookieValue("currentDate") String date, @RequestParam("target") String target) + public String previousMonth(HttpServletResponse response, @CookieValue(COOKIE_NAME) String date, @RequestParam("target") String target) { Settings settings = settingsService.getSettings(); DateTime currentDate = DateTime.parse(date, DateTimeFormat.forPattern(DateFormatStyle.NORMAL.getKey()).withLocale(settings.getLanguage().getLocale())); currentDate = currentDate.minusMonths(1); - response.addCookie(new Cookie("currentDate", dateService.getDateStringNormal(currentDate))); + response.addCookie(new Cookie(COOKIE_NAME, dateService.getDateStringNormal(currentDate))); return "redirect:" + target; } @RequestMapping(value = "/nextMonth") - public String nextMonth(HttpServletResponse response, @CookieValue("currentDate") String date, @RequestParam("target") String target) + public String nextMonth(HttpServletResponse response, @CookieValue(COOKIE_NAME) String date, @RequestParam("target") String target) { Settings settings = settingsService.getSettings(); DateTime currentDate = DateTime.parse(date, DateTimeFormat.forPattern(DateFormatStyle.NORMAL.getKey()).withLocale(settings.getLanguage().getLocale())); currentDate = currentDate.plusMonths(1); - response.addCookie(new Cookie("currentDate", dateService.getDateStringNormal(currentDate))); + response.addCookie(new Cookie(COOKIE_NAME, dateService.getDateStringNormal(currentDate))); return "redirect:" + target; } @RequestMapping(value = "/setDate") - public String setDate(HttpServletResponse response, @CookieValue("currentDate") String date, @RequestParam("target") String target) + public String setDate(HttpServletResponse response, @CookieValue(COOKIE_NAME) String date, @RequestParam("target") String target) { Settings settings = settingsService.getSettings(); DateTime currentDate = DateTime.parse(date, DateTimeFormat.forPattern(DateFormatStyle.NORMAL.getKey()).withLocale(settings.getLanguage().getLocale())); - response.addCookie(new Cookie("currentDate", dateService.getDateStringNormal(currentDate))); + response.addCookie(new Cookie(COOKIE_NAME, dateService.getDateStringNormal(currentDate))); return "redirect:" + target; } @@ -65,7 +67,7 @@ public class DatePickerController extends BaseController public String today(HttpServletResponse response, @RequestParam("target") String target) { DateTime currentDate = DateTime.now(); - response.addCookie(new Cookie("currentDate", dateService.getDateStringNormal(currentDate))); + response.addCookie(new Cookie(COOKIE_NAME, dateService.getDateStringNormal(currentDate))); return "redirect:" + target; } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java index 30791b1fb..8254b2fd7 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseParser_v3.java @@ -45,8 +45,8 @@ public class DatabaseParser_v3 protected List<Category> parseCategories(JsonObject root) { List<Category> parsedCategories = new ArrayList<>(); - JsonArray categories = root.get("categories").getAsJsonArray(); - for(JsonElement currentCategory : categories) + JsonArray jsonCategories = root.get("categories").getAsJsonArray(); + for(JsonElement currentCategory : jsonCategories) { Category parsedCategory = new Gson().fromJson(currentCategory, Category.class); parsedCategories.add(parsedCategory); @@ -58,8 +58,8 @@ public class DatabaseParser_v3 protected List<Account> parseAccounts(JsonObject root) { List<Account> parsedAccounts = new ArrayList<>(); - JsonArray accounts = root.get("accounts").getAsJsonArray(); - for(JsonElement currentAccount : accounts) + JsonArray jsonAccounts = root.get("accounts").getAsJsonArray(); + for(JsonElement currentAccount : jsonAccounts) { final JsonObject accountObject = currentAccount.getAsJsonObject(); Integer ID = accountObject.get("ID").getAsInt(); diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseService.java b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseService.java index 9cf1e4263..eb87c103b 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/DatabaseService.java @@ -180,7 +180,7 @@ public class DatabaseService for(int i = 0; i < allowedNumberOfFiles; i++) { final Path oldBackup = Paths.get(existingBackups.get(i)); - LOGGER.debug(MessageFormat.format("Schedule old backup for deletion: {0}", oldBackup.toString())); + LOGGER.debug(MessageFormat.format("Schedule old backup for deletion: {0}", oldBackup)); filesToDelete.add(oldBackup); } 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 c109f5976..372c8ccd3 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/legacy/LegacyParser.java @@ -59,8 +59,8 @@ public class LegacyParser private Set<Category> parseCategories(JsonObject root) { Set<Category> parsedCategories = new HashSet<>(); - JsonArray categories = root.get("categories").getAsJsonArray(); - for(JsonElement currentCategory : categories) + JsonArray jsonCategories = root.get("categories").getAsJsonArray(); + for(JsonElement currentCategory : jsonCategories) { int ID = currentCategory.getAsJsonObject().get("ID").getAsInt(); String name = currentCategory.getAsJsonObject().get("name").getAsString(); @@ -82,8 +82,8 @@ public class LegacyParser private List<Tag> parseTags(JsonObject root) { List<Tag> parsedTags = new ArrayList<>(); - JsonArray tags = root.get("tags").getAsJsonArray(); - for(JsonElement currentTag : tags) + JsonArray jsonTags = root.get("tags").getAsJsonArray(); + for(JsonElement currentTag : jsonTags) { int ID = currentTag.getAsJsonObject().get("ID").getAsInt(); String name = currentTag.getAsJsonObject().get("name").getAsString(); @@ -97,8 +97,8 @@ public class LegacyParser private List<TagMatch> parseTagMatches(JsonObject root) { List<TagMatch> parsedTagMatches = new ArrayList<>(); - JsonArray tagMatches = root.get("tagMatches").getAsJsonArray(); - for(JsonElement currentTagMatch : tagMatches) + JsonArray jsonTagMatches = root.get("tagMatches").getAsJsonArray(); + for(JsonElement currentTagMatch : jsonTagMatches) { int tagID = currentTagMatch.getAsJsonObject().get("tagID").getAsInt(); int paymentID = currentTagMatch.getAsJsonObject().get("paymentID").getAsInt(); @@ -241,15 +241,15 @@ public class LegacyParser private List<de.deadlocker8.budgetmaster.tags.Tag> getTagsByPaymentID(int paymentID) { - List<de.deadlocker8.budgetmaster.tags.Tag> tags = new ArrayList<>(); + List<de.deadlocker8.budgetmaster.tags.Tag> paymentTags = new ArrayList<>(); for(TagMatch tagMatch : tagMatches) { if(tagMatch.getPaymentID() == paymentID) { - tags.add(new de.deadlocker8.budgetmaster.tags.Tag(tagMatch.getTagName())); + paymentTags.add(new de.deadlocker8.budgetmaster.tags.Tag(tagMatch.getTagName())); } } - return tags; + return paymentTags; } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java index 6a11a4342..970cfaf73 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java +++ b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterConfiguration.java @@ -125,7 +125,7 @@ public class FilterConfiguration { if(objects == null) { - return null; + return new ArrayList<>(); } List<Integer> includedIDs = new ArrayList<>(); @@ -139,7 +139,7 @@ public class FilterConfiguration if(includedIDs.size() == objects.size()) { - return null; + return new ArrayList<>(); } return includedIDs; diff --git a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterController.java b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterController.java index 88fcb674c..3799eaa7e 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/filter/FilterController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/filter/FilterController.java @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.WebRequest; @@ -26,7 +27,7 @@ public class FilterController extends BaseController @PostMapping(value = "/apply") public String post(WebRequest request, @ModelAttribute("NewFilterConfiguration") FilterConfiguration filterConfiguration) { - request.setAttribute("filterConfiguration", filterConfiguration, WebRequest.SCOPE_SESSION); + request.setAttribute("filterConfiguration", filterConfiguration, RequestAttributes.SCOPE_SESSION); return "redirect:" + request.getHeader("Referer"); } @@ -36,7 +37,7 @@ public class FilterController extends BaseController FilterConfiguration filterConfiguration = FilterConfiguration.DEFAULT; filterConfiguration.setFilterCategories(filterHelpers.getFilterCategories()); filterConfiguration.setFilterTags(filterHelpers.getFilterTags()); - request.setAttribute("filterConfiguration", filterConfiguration, WebRequest.SCOPE_SESSION); + request.setAttribute("filterConfiguration", filterConfiguration, RequestAttributes.SCOPE_SESSION); return "redirect:" + request.getHeader("Referer"); } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/images/Image.java b/src/main/java/de/deadlocker8/budgetmaster/images/Image.java index eff5eb5a7..fdcdc2739 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/images/Image.java +++ b/src/main/java/de/deadlocker8/budgetmaster/images/Image.java @@ -115,10 +115,10 @@ public class Image { if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; - Image image = (Image) o; - return Objects.equals(ID, image.ID) && - Objects.equals(fileName, image.fileName) && - Objects.equals(fileExtension, image.fileExtension); + Image other = (Image) o; + return Objects.equals(ID, other.ID) && + Objects.equals(fileName, other.fileName) && + Objects.equals(fileExtension, other.fileExtension); } @Override diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportGeneratorService.java b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportGeneratorService.java index 0c2fcd118..665fd68bd 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/reports/ReportGeneratorService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/reports/ReportGeneratorService.java @@ -21,6 +21,9 @@ import java.util.List; import java.util.Locale; import java.util.stream.Collectors; +import static com.itextpdf.text.BaseColor.BLACK; +import static com.itextpdf.text.BaseColor.LIGHT_GRAY; + @Service public class ReportGeneratorService { @@ -39,13 +42,13 @@ public class ReportGeneratorService private Chapter generateHeader(ReportConfiguration reportConfiguration) { - Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 16, Font.BOLDITALIC, BaseColor.BLACK); + Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 16, Font.BOLDITALIC, BLACK); Locale locale = settingsService.getSettings().getLanguage().getLocale(); Chunk chunk = new Chunk(Localization.getString(Strings.REPORT_HEADLINE, reportConfiguration.getReportSettings().getDate().toString("MMMM yyyy", locale)), font); Chapter chapter = new Chapter(new Paragraph(chunk), 1); chapter.setNumberDepth(0); - Font fontAccount = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BaseColor.BLACK); + Font fontAccount = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BLACK); Chunk chunkAccount = new Chunk(Localization.getString(Strings.REPORT_HEADLINE_ACCOUNT, reportConfiguration.getAccountName()), fontAccount); chapter.add(chunkAccount); chapter.add(Chunk.NEWLINE); @@ -69,8 +72,8 @@ public class ReportGeneratorService PdfPTable table = new PdfPTable(proportions); table.setWidthPercentage(tableWidth); - Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, GrayColor.BLACK); - Font fontBold = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.BOLD, GrayColor.BLACK); + Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, BLACK); + Font fontBold = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.BOLD, BLACK); // add table header for(ReportColumn column : columns) @@ -78,7 +81,7 @@ public class ReportGeneratorService ColumnType columnType = ColumnType.getByName(column.getKey()); PdfPCell cell = new PdfPCell(new Phrase(columnType.getName(), font)); - cell.setBackgroundColor(GrayColor.LIGHT_GRAY); + cell.setBackgroundColor(LIGHT_GRAY); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); table.addCell(cell); @@ -153,8 +156,8 @@ public class ReportGeneratorService writer.setPageEvent(new HeaderFooterPageEvent()); document.open(); document.setMargins(50, 45, 25, 70); - Font headerFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BaseColor.BLACK); - Font smallHeaderFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.BOLD, BaseColor.BLACK); + Font headerFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 14, Font.BOLD, BLACK); + Font smallHeaderFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.BOLD, BLACK); document.add(generateHeader(reportConfiguration)); document.add(Chunk.NEWLINE); @@ -163,7 +166,7 @@ public class ReportGeneratorService { Font fontGreen = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.NORMAL, new BaseColor(36, 122, 45)); Font fontRed = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.NORMAL, BaseColor.RED); - Font fontBlack = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.BOLD, BaseColor.BLACK); + Font fontBlack = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12, Font.BOLD, BLACK); Budget budget = reportConfiguration.getBudget(); @@ -237,15 +240,15 @@ public class ReportGeneratorService { PdfPTable table = new PdfPTable(2); table.setWidthPercentage(100); - Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, BaseColor.BLACK); + Font font = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 8, Font.NORMAL, BLACK); //header cells PdfPCell cellHeaderCategory = new PdfPCell(new Phrase(Localization.getString(Strings.REPORT_CATEGORY), font)); - cellHeaderCategory.setBackgroundColor(GrayColor.LIGHT_GRAY); + cellHeaderCategory.setBackgroundColor(LIGHT_GRAY); cellHeaderCategory.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cellHeaderCategory); PdfPCell cellHeaderAmount = new PdfPCell(new Phrase(Localization.getString(Strings.REPORT_AMOUNT), font)); - cellHeaderAmount.setBackgroundColor(GrayColor.LIGHT_GRAY); + cellHeaderAmount.setBackgroundColor(LIGHT_GRAY); cellHeaderAmount.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cellHeaderAmount); diff --git a/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java b/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java index 8d6356736..26d341da3 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/reports/settings/ReportSettingsService.java @@ -48,7 +48,7 @@ public class ReportSettingsService } reportSettingsOptional = reportSettingsRepository.findById(0); - if(!reportSettingsOptional.isPresent()) + if(reportSettingsOptional.isEmpty()) { throw new ResourceNotFoundException(); } @@ -56,9 +56,8 @@ public class ReportSettingsService reportColumnService.createDefaultsWithReportSettings(reportSettingsOptional.get()); } - @SuppressWarnings("OptionalGetWithoutIsPresent") public ReportSettings getReportSettings() { - return reportSettingsRepository.findById(0).get(); + return reportSettingsRepository.findById(0).orElseThrow(); } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java index eaf8fee43..6277fb882 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsService.java @@ -14,6 +14,7 @@ import org.springframework.validation.FieldError; import javax.annotation.PostConstruct; import java.lang.reflect.Field; +import java.util.NoSuchElementException; import java.util.Optional; @Service @@ -54,7 +55,7 @@ public class SettingsService Optional<Settings> settingsOptional = settingsRepository.findById(0); if(settingsOptional.isEmpty()) { - throw new RuntimeException("Missing Settings in database"); + throw new NoSuchElementException("Missing Settings in database"); } Settings settings = settingsOptional.get(); @@ -120,10 +121,9 @@ public class SettingsService } } - @SuppressWarnings("OptionalGetWithoutIsPresent") public Settings getSettings() { - return settingsRepository.findById(0).get(); + return settingsRepository.findById(0).orElseThrow(); } @Transactional diff --git a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java index 27896d426..38bfda8fb 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java +++ b/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java @@ -69,12 +69,12 @@ public class TransactionSpecifications predicates.add(builder.isNull(transaction.get(Transaction_.transferAccount))); } - if(categoryIDs != null) + if(!categoryIDs.isEmpty()) { predicates.add(transaction.get(Transaction_.category).get("ID").in(categoryIDs)); } - if(tagIDs != null) + if(!tagIDs.isEmpty()) { Join<Transaction, Tag> join = transaction.join(Transaction_.tags); Predicate tagPredicate = builder.disjunction(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java index 41e402218..1867c4d66 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSpecificationsTest.java @@ -153,7 +153,7 @@ public class TransactionSpecificationsTest @Test public void getIncomesAndExpendituresAndTransfers() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(4) @@ -166,7 +166,7 @@ public class TransactionSpecificationsTest @Test public void getIncomesAndExpenditures() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, false, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, false, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(3) @@ -178,7 +178,7 @@ public class TransactionSpecificationsTest @Test public void getIncomes() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, false, false, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, false, false, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -188,7 +188,7 @@ public class TransactionSpecificationsTest @Test public void getExpenditures() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, false, true, false, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, false, true, false, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(2) @@ -199,7 +199,7 @@ public class TransactionSpecificationsTest @Test public void getTransfers() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, false, false, true, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, false, false, true, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -209,7 +209,7 @@ public class TransactionSpecificationsTest @Test public void incomesAndExpendituresFalse() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, false, false, false, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, false, false, false, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(3) @@ -221,7 +221,7 @@ public class TransactionSpecificationsTest @Test public void getTransferBackReferences_NoReferences() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, false, true, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, false, true, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -231,7 +231,7 @@ public class TransactionSpecificationsTest @Test public void getTransferBackReferences() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account2, false, false, true, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account2, false, false, true, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(2) @@ -243,7 +243,7 @@ public class TransactionSpecificationsTest public void getTransferBackReferences_WithStartDate() { DateTime startDate2019 = new DateTime(2019, 1, 1, 12, 0, 0, 0); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate2019, DateTime.now(), account2, false, false, true, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate2019, DateTime.now(), account2, false, false, true, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).isEmpty(); @@ -252,7 +252,7 @@ public class TransactionSpecificationsTest @Test public void getRepeating() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, false, true, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, false, true, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -262,7 +262,7 @@ public class TransactionSpecificationsTest @Test public void noRepeating() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, false, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, false, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(3) @@ -276,7 +276,7 @@ public class TransactionSpecificationsTest { List<Integer> categoryIDs = new ArrayList<>(); categoryIDs.add(categoryUnused.getID()); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, categoryIDs, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, categoryIDs, List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).isEmpty(); @@ -287,7 +287,7 @@ public class TransactionSpecificationsTest { List<Integer> categoryIDs = new ArrayList<>(); categoryIDs.add(category1.getID()); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, categoryIDs, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, categoryIDs, List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(2) @@ -298,7 +298,7 @@ public class TransactionSpecificationsTest @Test public void getByFullName() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, null, null, "Repeating"); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, List.of(), List.of(), "Repeating"); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -308,7 +308,7 @@ public class TransactionSpecificationsTest @Test public void getByPartialName() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, null, null, "tin"); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, List.of(), List.of(), "tin"); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -318,7 +318,7 @@ public class TransactionSpecificationsTest @Test public void getByPartialName_ExcludeTransfersWithWrongAccount() { - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account2, true, true, true, null, null, null, "tion"); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account2, true, true, true, null, List.of(), List.of(), "tion"); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -331,7 +331,7 @@ public class TransactionSpecificationsTest List<Integer> tagIDs = new ArrayList<>(); tagIDs.add(tag1.getID()); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, null, tagIDs, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, List.of(), tagIDs, null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(1) @@ -345,7 +345,7 @@ public class TransactionSpecificationsTest tagIDs.add(tag1.getID()); tagIDs.add(tag2.getID()); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true,null, null, tagIDs, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true,null, List.of(), tagIDs, null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(2) @@ -360,7 +360,7 @@ public class TransactionSpecificationsTest List<Integer> tagIDs = new ArrayList<>(); tagIDs.add(tagUnused.getID()); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, null, tagIDs, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, DateTime.now(), account, true, true, true, null, List.of(), tagIDs, null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).isEmpty(); @@ -387,7 +387,7 @@ public class TransactionSpecificationsTest public void getFromAllAccountsExceptTransfersWithSpecificEndDateOrWithHiddenAccount() { DateTime endDate = new DateTime(2018, 11, 30, 12, 0, 0, 0); - Specification spec = TransactionSpecifications.withDynamicQuery(startDate, endDate, null, true, true, false, null, null, null, null); + Specification spec = TransactionSpecifications.withDynamicQuery(startDate, endDate, null, true, true, false, null, List.of(), List.of(), null); List<Transaction> results = transactionRepository.findAll(spec); assertThat(results).hasSize(2) -- GitLab