24 * POSSIBILITY OF SUCH DAMAGE. |
24 * POSSIBILITY OF SUCH DAMAGE. |
25 */ |
25 */ |
26 |
26 |
27 package de.uapcore.sudoku; |
27 package de.uapcore.sudoku; |
28 |
28 |
|
29 import java.io.BufferedReader; |
29 import java.io.BufferedWriter; |
30 import java.io.BufferedWriter; |
|
31 import java.io.FileInputStream; |
30 import java.io.FileOutputStream; |
32 import java.io.FileOutputStream; |
31 import java.io.IOException; |
33 import java.io.IOException; |
|
34 import java.io.InputStreamReader; |
32 import java.io.OutputStreamWriter; |
35 import java.io.OutputStreamWriter; |
|
36 import java.util.regex.Matcher; |
|
37 import java.util.regex.Pattern; |
33 |
38 |
34 /** |
39 /** |
35 * |
40 * |
36 * @author mike |
41 * @author mike |
37 */ |
42 */ |
41 |
46 |
42 public void load(Field field) throws IOException { |
47 public void load(Field field) throws IOException { |
43 if (!isFilenameSet()) { |
48 if (!isFilenameSet()) { |
44 throw new IOException("no filename supplied"); |
49 throw new IOException("no filename supplied"); |
45 } |
50 } |
46 // TODO: implement |
51 int row = 0; |
|
52 try (BufferedReader in = new BufferedReader( |
|
53 new InputStreamReader(new FileInputStream(filename)))) { |
|
54 Pattern pat = Pattern.compile("^\\s*(?:[1-9_] ){8}[1-9_]\\s*$"); |
|
55 String line; |
|
56 while ((line = in.readLine()) != null) { |
|
57 if (line.matches("^\\s*$")) { |
|
58 continue; |
|
59 } |
|
60 Matcher m = pat.matcher(line); |
|
61 if (m.matches()) { |
|
62 String c[] = line.trim().split(" "); |
|
63 if (c.length != 9) { |
|
64 break; |
|
65 } |
|
66 for (int i = 0 ; i < 9 ; i++) { |
|
67 field.setCellValue(i, row, |
|
68 c[i].equals("_") ? 0 : Integer.valueOf(c[i])); |
|
69 } |
|
70 row++; |
|
71 } else { |
|
72 break; |
|
73 } |
|
74 } |
|
75 if (row != 9) { |
|
76 throw new IOException("Kein Sudoku-Feld enthalten!"); |
|
77 } |
|
78 } |
47 } |
79 } |
48 |
80 |
49 public void save(Field field) throws IOException { |
81 public void save(Field field) throws IOException { |
50 if (!isFilenameSet()) { |
82 if (!isFilenameSet()) { |
51 throw new IOException("no filename supplied"); |
83 throw new IOException("no filename supplied"); |