diff -r 8ddf4af937d7 -r 5bab2e971333 src/de/uapcore/sudoku/DocumentHandler.java --- a/src/de/uapcore/sudoku/DocumentHandler.java Sat Jan 26 19:34:31 2013 +0100 +++ b/src/de/uapcore/sudoku/DocumentHandler.java Sun Jan 27 15:03:57 2013 +0100 @@ -26,10 +26,15 @@ package de.uapcore.sudoku; +import java.io.BufferedReader; import java.io.BufferedWriter; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStreamReader; import java.io.OutputStreamWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @@ -43,7 +48,34 @@ if (!isFilenameSet()) { throw new IOException("no filename supplied"); } - // TODO: implement + int row = 0; + try (BufferedReader in = new BufferedReader( + new InputStreamReader(new FileInputStream(filename)))) { + Pattern pat = Pattern.compile("^\\s*(?:[1-9_] ){8}[1-9_]\\s*$"); + String line; + while ((line = in.readLine()) != null) { + if (line.matches("^\\s*$")) { + continue; + } + Matcher m = pat.matcher(line); + if (m.matches()) { + String c[] = line.trim().split(" "); + if (c.length != 9) { + break; + } + for (int i = 0 ; i < 9 ; i++) { + field.setCellValue(i, row, + c[i].equals("_") ? 0 : Integer.valueOf(c[i])); + } + row++; + } else { + break; + } + } + if (row != 9) { + throw new IOException("Kein Sudoku-Feld enthalten!"); + } + } } public void save(Field field) throws IOException {