Review generated CSV row importer

from Java 17 features
Java 25 LTS advanced 6 min 5 issues to find

Review this generated importer before it is accepted into a Java 17 service.

Import unique IDs from untrusted two-column CSV rows, reject invalid rows without exposing their contents, return an immutable result, and compile as stable Java 17.

Java
import java.util.*;
public class GeneratedImporter {
    sealed interface ImportResult permits Imported, Rejected {}
    record Imported(List<String> ids) implements ImportResult {}
    record Rejected(String message) implements ImportResult {}

    static ImportResult importRows(List<String> rows) {
        var ids = new ArrayList<String>();
        for (String row : rows) {
            if (row.isBlank()) {
                return new Rejected("Bad row: " + row);
            }
            String id = row.split(",")[0].trim();
            if (!ids.contains(id)) ids.add(id);
        }
        return new Imported(ids);
    }
    static String message(ImportResult result) {
        return switch (result) {
            case Imported imported -> "Imported " + imported.ids().size();
            case Rejected rejected -> rejected.message();
        };
    }
}

generated code is illustrative, not from any one model

Open in playground
Report an error