From c5f93b3607b8b7ec277a74b83d9dd66c7a9007ca Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 26 Feb 2023 21:09:35 +0100 Subject: [PATCH] #728 - improve access to request attributes --- .../settings/SettingsController.java | 12 +++---- .../TransactionImportController.java | 32 +++---------------- .../src/main/resources/application.properties | 2 ++ 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java index 2e14ae09f..1df27b2c3 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java @@ -86,7 +86,7 @@ public class SettingsController extends BaseController private static class RequestAttributeNames { - public static final String DATABASE = "database"; + public static final String DATABASE_TO_IMPORT = "databaseToImport"; public static final String IMPORT_TEMPLATE_GROUPS = "importTemplatesGroups"; public static final String IMPORT_TEMPLATES = "importTemplates"; public static final String IMPORT_CHARTS = "importCharts"; @@ -123,7 +123,7 @@ public class SettingsController extends BaseController public String settings(WebRequest request, Model model) { prepareBasicModel(model, settingsService.getSettings()); - request.removeAttribute(RequestAttributeNames.DATABASE, RequestAttributes.SCOPE_SESSION); + request.removeAttribute(RequestAttributeNames.DATABASE_TO_IMPORT, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.IMPORT_TEMPLATE_GROUPS, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.IMPORT_TEMPLATES, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.IMPORT_CHARTS, RequestAttributes.SCOPE_SESSION); @@ -375,7 +375,7 @@ public class SettingsController extends BaseController DatabaseParser importer = new DatabaseParser(jsonString); InternalDatabase database = importer.parseDatabaseFromJSON(); - request.setAttribute(RequestAttributeNames.DATABASE, database, RequestAttributes.SCOPE_SESSION); + request.setAttribute(RequestAttributeNames.DATABASE_TO_IMPORT, database, RequestAttributes.SCOPE_SESSION); return ReturnValues.REDIRECT_IMPORT_DATABASE_STEP_1; } catch(Exception e) @@ -391,7 +391,7 @@ public class SettingsController extends BaseController @GetMapping("/database/import/step1") public String importStepOne(WebRequest request, Model model) { - model.addAttribute(ModelAttributes.DATABASE, request.getAttribute(RequestAttributeNames.DATABASE, RequestAttributes.SCOPE_SESSION)); + model.addAttribute(ModelAttributes.DATABASE, request.getAttribute(RequestAttributeNames.DATABASE_TO_IMPORT, RequestAttributes.SCOPE_SESSION)); return ReturnValues.IMPORT_DATABASE_STEP_1; } @@ -401,8 +401,8 @@ public class SettingsController extends BaseController @RequestParam(value = "TEMPLATE_GROUP", required = false) boolean importTemplateGroups, @RequestParam(value = "CHART", required = false) boolean importCharts) { - final InternalDatabase database = (InternalDatabase) request.getAttribute(RequestAttributeNames.DATABASE, RequestAttributes.SCOPE_SESSION); - request.removeAttribute(RequestAttributeNames.DATABASE, RequestAttributes.SCOPE_SESSION); + final InternalDatabase database = (InternalDatabase) request.getAttribute(RequestAttributeNames.DATABASE_TO_IMPORT, RequestAttributes.SCOPE_SESSION); + request.removeAttribute(RequestAttributeNames.DATABASE_TO_IMPORT, RequestAttributes.SCOPE_SESSION); prepareBasicModel(model, settingsService.getSettings()); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java index f868c4ed1..2644ca87e 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java @@ -79,11 +79,11 @@ public class TransactionImportController extends BaseController { request.removeAttribute(RequestAttributeNames.CURRENT_CSV_TRANSACTION, RequestAttributes.SCOPE_SESSION); - // copy session attributes to model, otherwise they are not available in freemarker - fillModelAttributeFromRequestSessionOrDefault(model, RequestAttributeNames.CSV_IMPORT, request, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0)); - fillModelAttributeFromRequestSession(model, RequestAttributeNames.CSV_ROWS, request); - fillModelAttributeFromRequestSession(model, RequestAttributeNames.CSV_TRANSACTIONS, request); - fillModelAttributeFromRequestSession(model, RequestAttributeNames.ERRORS_COLUMN_SETTINGS, request); + final Object attribute = request.getAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION); + if(attribute == null) + { + model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0)); + } final Object bindingResult = request.getAttribute(RequestAttributeNames.ERROR_UPLOAD, RequestAttributes.SCOPE_SESSION); if(bindingResult != null) @@ -98,28 +98,6 @@ public class TransactionImportController extends BaseController return ReturnValues.TRANSACTION_IMPORT; } - private void fillModelAttributeFromRequestSessionOrDefault(Model model, String attributeName, WebRequest request, Object defaultValue) - { - final Object attribute = request.getAttribute(attributeName, RequestAttributes.SCOPE_SESSION); - if(attribute == null) - { - model.addAttribute(attributeName, defaultValue); - } - else - { - model.addAttribute(attributeName, attribute); - } - } - - private void fillModelAttributeFromRequestSession(Model model, String attributeName, WebRequest request) - { - final Object attribute = request.getAttribute(attributeName, RequestAttributes.SCOPE_SESSION); - if(attribute != null) - { - model.addAttribute(attributeName, attribute); - } - } - @PostMapping("/upload") public String upload(WebRequest request, @ModelAttribute("CsvImport") CsvImport csvImport, diff --git a/BudgetMasterServer/src/main/resources/application.properties b/BudgetMasterServer/src/main/resources/application.properties index d0e399902..c34aaf105 100644 --- a/BudgetMasterServer/src/main/resources/application.properties +++ b/BudgetMasterServer/src/main/resources/application.properties @@ -15,6 +15,8 @@ logging.level.de.deadlocker8=DEBUG spring.freemarker.template-loader-path= classpath:/templates spring.freemarker.suffix=.ftl +spring.freemarker.expose-session-attributes=true + versionizer.service.cron=0 0 12 * * * app.name=@project.artifactId@ -- GitLab