src/de/uapcore/sudoku/DocumentHandler.java

changeset 6
5bab2e971333
parent 5
8ddf4af937d7
child 7
2c0a2766461c
     1.1 --- a/src/de/uapcore/sudoku/DocumentHandler.java	Sat Jan 26 19:34:31 2013 +0100
     1.2 +++ b/src/de/uapcore/sudoku/DocumentHandler.java	Sun Jan 27 15:03:57 2013 +0100
     1.3 @@ -26,10 +26,15 @@
     1.4  
     1.5  package de.uapcore.sudoku;
     1.6  
     1.7 +import java.io.BufferedReader;
     1.8  import java.io.BufferedWriter;
     1.9 +import java.io.FileInputStream;
    1.10  import java.io.FileOutputStream;
    1.11  import java.io.IOException;
    1.12 +import java.io.InputStreamReader;
    1.13  import java.io.OutputStreamWriter;
    1.14 +import java.util.regex.Matcher;
    1.15 +import java.util.regex.Pattern;
    1.16  
    1.17  /**
    1.18   *
    1.19 @@ -43,7 +48,34 @@
    1.20          if (!isFilenameSet()) {
    1.21              throw new IOException("no filename supplied");
    1.22          }
    1.23 -        // TODO: implement
    1.24 +        int row = 0;
    1.25 +        try (BufferedReader in = new BufferedReader(
    1.26 +                new InputStreamReader(new FileInputStream(filename)))) {
    1.27 +            Pattern pat = Pattern.compile("^\\s*(?:[1-9_] ){8}[1-9_]\\s*$");
    1.28 +            String line;
    1.29 +            while ((line = in.readLine()) != null) {
    1.30 +                if (line.matches("^\\s*$")) {
    1.31 +                    continue;
    1.32 +                }
    1.33 +                Matcher m = pat.matcher(line);
    1.34 +                if (m.matches()) {
    1.35 +                    String c[] = line.trim().split(" ");
    1.36 +                    if (c.length != 9) {
    1.37 +                        break;
    1.38 +                    }
    1.39 +                    for (int i = 0 ; i < 9 ; i++) {
    1.40 +                        field.setCellValue(i, row,
    1.41 +                                c[i].equals("_") ? 0 : Integer.valueOf(c[i]));
    1.42 +                    }
    1.43 +                    row++;
    1.44 +                } else {
    1.45 +                    break;
    1.46 +                }
    1.47 +            }
    1.48 +            if (row != 9) {
    1.49 +                throw new IOException("Kein Sudoku-Feld enthalten!");
    1.50 +            }
    1.51 +        }
    1.52      }
    1.53      
    1.54      public void save(Field field) throws IOException {

mercurial