From 1a5616e521fbe63361f93797d0217249ce555046 Mon Sep 17 00:00:00 2001 From: Lucy Ciara Herud-Thomassen <86323303+LucyCiara@users.noreply.github.com> Date: Thu, 9 Apr 2026 12:45:41 +0200 Subject: [PATCH] fix[DbWrapper&ParameterValidator]: fix checks so empty data exports skip data validation --- .../group5/app/model/wrapper/DbWrapper.java | 18 ++----- .../group5/app/utils/ParameterValidator.java | 47 +++++++++---------- 2 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/main/java/edu/group5/app/model/wrapper/DbWrapper.java b/src/main/java/edu/group5/app/model/wrapper/DbWrapper.java index c61bbc8..f357ae1 100644 --- a/src/main/java/edu/group5/app/model/wrapper/DbWrapper.java +++ b/src/main/java/edu/group5/app/model/wrapper/DbWrapper.java @@ -1,6 +1,6 @@ package edu.group5.app.model.wrapper; -import java.lang.reflect.Parameter; +import edu.group5.app.utils.ParameterValidator; import java.math.BigDecimal; import java.sql.Connection; import java.sql.DriverManager; @@ -9,15 +9,10 @@ import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; -import edu.group5.app.utils.ParameterValidator; - /** * A class for wrapping the database. */ @@ -141,11 +136,7 @@ public List importUsers() { public int exportUsers(List data) throws IllegalArgumentException { this.importUsers(); - if (data.isEmpty()) { - return 0; - } - ParameterValidator.exportChecker(data, "data", this.users); - + ParameterValidator.exportChecker(data, "data", this.users, 6); PreparedStatement ps = null; int rowsAffected = 0; @@ -243,10 +234,7 @@ private List importDonations(int user_id, boolean all) { public int exportDonations(List data) throws IllegalArgumentException { this.fetchAllDonations(); - if (data.isEmpty()) { - return 0; - } - ParameterValidator.exportChecker(data, "data", this.donations); + ParameterValidator.exportChecker(data, "data", this.donations, 6); PreparedStatement ps = null; int rowsAffected = 0; diff --git a/src/main/java/edu/group5/app/utils/ParameterValidator.java b/src/main/java/edu/group5/app/utils/ParameterValidator.java index 36a0d14..3bc3e5a 100644 --- a/src/main/java/edu/group5/app/utils/ParameterValidator.java +++ b/src/main/java/edu/group5/app/utils/ParameterValidator.java @@ -98,31 +98,30 @@ private static final void nullCheck(Object variable, String variableName) * the database, or any of the values in the rows can't be cast to the correct data-types. */ public static final void exportChecker( - List data, String dataName, List oldData + List data, String dataName, List oldData, int rowLength ) throws IllegalArgumentException { - if (data == null) { - throw new IllegalArgumentException(String.format("%s can't be null", dataName)); - } - // TODO: change to check length for every row. - if (data.get(0).length != 6) { - throw new IllegalArgumentException( - String.format("%s's arrays must have a length of 6", dataName) - ); - } - if (data.stream().anyMatch(i -> Arrays.asList(i).contains(null))) { - throw new IllegalArgumentException( - String.format("One or more rows in %s contains null values", dataName) - ); - } - // TODO: change how existing rows are checked. - if (oldData.size() > 0) { - if ((int) data.getLast()[0] <= (int) oldData.getLast()[0]) { - throw new IllegalArgumentException("data can't contain existing rows"); + objectChecker(data, dataName); + if (!data.isEmpty()) { + if (data.stream().anyMatch(i -> i.length != rowLength)) { + throw new IllegalArgumentException( + String.format("%s's arrays must have a length of 6", dataName) + ); } - } - Set ids = new HashSet<>(); - if (data.stream().anyMatch(i -> !ids.add(i[0]))) { - throw new IllegalArgumentException("data can't contain duplicate rows"); - } + if (data.stream().anyMatch(i -> Arrays.asList(i).contains(null))) { + throw new IllegalArgumentException( + String.format("One or more rows in %s contains null values", dataName) + ); + } + + Set ids = new HashSet<>(); + if (data.stream().anyMatch(i -> !ids.add(i[0]))) { + throw new IllegalArgumentException("data can't contain duplicate rows"); + } + if (oldData.size() > 0) { + if (oldData.stream().anyMatch(i -> !ids.add(i[0]))) { + throw new IllegalArgumentException("data can't contain existing rows"); + } + } + } } }