Skip to content
Snippets Groups Projects

Resolve "ArrayIndexOutOfBoundsException with incorrect CSV input"

2 files
+ 18
18
Compare changes
  • Side-by-side
  • Inline

Files

@@ -15,8 +15,7 @@
*/
package nl.tudelft.ewi.queue.helper;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
@@ -45,24 +44,22 @@ public class CsvUserHelper {
}
public static ArrayList<CsvUserHelper> readCsv(MultipartFile csvFile) throws IOException {
InputStream content = csvFile.getInputStream();
Scanner scanner = new Scanner(content).useDelimiter("\\A");
ArrayList<CsvUserHelper> csvUserHelpersSet = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(csvFile.getInputStream()))) {
if (csvFile.isEmpty())
return null;
String csv = "";
if (scanner.hasNext()) {
csv = scanner.next();
}
String[] lines = csv.split("\n");
for (String line : lines) {
String[] currLine = line.split(",");
if (currLine[1].contains("\r")) {
currLine[1] = currLine[1].substring(0, currLine[1].length() - 1);
ArrayList<CsvUserHelper> csvUserHelpersSet = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
// not accepting comma as we have students with a comma in their last name...
// TODO switch to a proper CSV library to handle this better
String[] currLine = line.split("[;\t]");
csvUserHelpersSet.add(new CsvUserHelper(currLine[0],
DefaultRole.valueOfExt(currLine[1])));
}
csvUserHelpersSet.add(new CsvUserHelper(currLine[0],
DefaultRole.valueOfExt(currLine[1])));
return csvUserHelpersSet;
}
content.close();
return csvUserHelpersSet;
}
}
Loading