import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

class DataIntegrityChecker {
	public static void main(String [] args) throws FileNotFoundException {
		Scanner fileScanner = new Scanner(new File("../data.text"));

		int dataRecord = 0;

		while (fileScanner.hasNextLine()) {
			String line = fileScanner.nextLine().trim();
			if (line.length() == 0) continue;

			dataRecord++;

			Scanner lineScanner = new Scanner(line);

			String lastName = DataValidation.validateName(lineScanner.next());
			if (lastName == null) {
				error(dataRecord, "Invalid last name");
				continue;
			}

			String firstName = DataValidation.validateName(lineScanner.next());
			if (firstName == null) {
				error(dataRecord, "Invalid first name");
				continue;
			}

			int numAssignments = lineScanner.nextInt();
			boolean isInvalid = false;
			for (int i = 1; i <= numAssignments; i++) {
				int assignment = DataValidation.validateAssignment(lineScanner.nextInt());
				if (assignment == -1) {
					error(dataRecord, "Invalid assignment grade");
					isInvalid = true;
				}
			}
			if (isInvalid) continue;

			String project = lineScanner.next();
			DataValidation.Result result = DataValidation.validateProject(project);
			if (!result.isValid) {
				error(dataRecord, "Invalid project grade");
				continue;
			}

			int midterm = lineScanner.nextInt();
			if (!DataValidation.validateExam(midterm)) {
				error(dataRecord, "Invalid midterm grade");
				continue;
			}

			int finalExam = lineScanner.nextInt();
			if (!DataValidation.validateExam(finalExam)) {
				error(dataRecord, "Invalid final grade");
				continue;
			}

			System.out.println("#" + dataRecord + ": " + lastName + " " + firstName + " validated");
		}
	}

	private static void error(int dataRecord, String message) {
		System.out.println("*** In data record #" + dataRecord + ": " + message);
	}
}



