Skip to content

Commit

Permalink
fix[DbWrapper&ParameterValidator]: fix checks so empty data exports s…
Browse files Browse the repository at this point in the history
…kip data validation
  • Loading branch information
Lucy Ciara Herud-Thomassen authored and Lucy Ciara Herud-Thomassen committed Apr 9, 2026
1 parent 281d68d commit 1a5616e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 39 deletions.
18 changes: 3 additions & 15 deletions src/main/java/edu/group5/app/model/wrapper/DbWrapper.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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.
*/
Expand Down Expand Up @@ -141,11 +136,7 @@ public List<Object[]> importUsers() {
public int exportUsers(List<Object[]> 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;
Expand Down Expand Up @@ -243,10 +234,7 @@ private List<Object[]> importDonations(int user_id, boolean all) {
public int exportDonations(List<Object[]> 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;
Expand Down
47 changes: 23 additions & 24 deletions src/main/java/edu/group5/app/utils/ParameterValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Object[]> data, String dataName, List<Object[]> oldData
List<Object[]> data, String dataName, List<Object[]> 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<Object> 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<Object> 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");
}
}
}
}
}

0 comments on commit 1a5616e

Please sign in to comment.