import java.io.IOException;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.ArrayList;
import java.util.List;
public class RecordErrorSurface {
public static void surfaceErrors(String record, String delimiter) {
// Use StreamTokenizer for parsing (compatible with older Java versions)
StreamTokenizer tokenizer = new StreamTokenizer(new java.io.StringReader(record));
tokenizer.quoteChar = '"'; // Handle quoted fields
tokenizer.whitespace = true; // Treat whitespace as delimiters
List<String> fields = new ArrayList<>();
try {
while (tokenizer.nextToken() != tokenizer.TT_EOF) {
fields.add(tokenizer.sval); // Get field value
}
} catch (IOException e) {
System.err.println("Error parsing record: " + e.getMessage());
return; // Exit if parsing fails
}
// Check for errors (example: record too short)
if (fields.size() < 2) {
System.err.println("Error: Record contains less than 2 fields.");
System.err.println("Record: " + record);
return;
}
// Example: checking for null or empty fields
for (int i = 0; i < fields.size(); i++) {
if (fields.get(i) == null || fields.get(i).trim().isEmpty()) {
System.err.println("Error: Field '" + (i + 1) + "' is null or empty.");
System.err.println("Record: " + record);
return;
}
}
//More complex validation can be added here,
//e.g., checking data types, ranges, etc.
System.out.println("Record is valid.");
}
public static void main(String[] args) {
//Example Usage
String record1 = "John,Doe,30,New York";
String record2 = "Jane , , 25, London"; //Missing data
String record3 = "Peter,Smith"; //Too few fields
String record4 = "Alice,\"Brown, Mary\",40,Paris"; //Quoted field
System.out.println("Testing record: " + record1);
surfaceErrors(record1, ",");
System.out.println("\nTesting record: " + record2);
surfaceErrors(record2, ",");
System.out.println("\nTesting record: " + record3);
surfaceErrors(record3, ",");
System.out.println("\nTesting record: " + record4);
surfaceErrors(record4, ",");
}
}
Add your comment