package chess; import java.util.StringTokenizer; import java.util.Vector; /* * EntryLine.java * * Created on February 10, 2007, 5:07 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ /** * * @author Stanislav Hromek */ public class EntryLine { /** Creates a new instance of EntryLine */ public EntryLine() { } protected static Move processLine(String line) { // divide line by space (can be changed in future) // Vector piecesOfLine = new Vector(); // StringTokenizer st = new StringTokenizer(line, " .", true); // while (st.hasMoreTokens()) { // String token = st.nextToken(); // piecesOfLine.add(token); // } String[] piecesOfLine = line.split(" "); // make from pieses parts of move (can be also two or st. different in future) for (int i = 0; i < piecesOfLine.length; i++) { System.out.println("piecesOfLine = "+piecesOfLine[i]); } if(piecesOfLine.length == 3) { String[] first = piecesOfLine[0].split("\\."); // for (int i = 0; i < first.length; i++) { // System.out.println("first["+i+"]="+first[i]); // } if(first.length > 1){ // can this ever happen ?, todo Game.errorMessage = "Problem by parsing move number: " + piecesOfLine[0]; return null; } else{ // parse first string to number // todo, validate number of the move int moveNumber = (int)Float.parseFloat(piecesOfLine[0]); // todo, validate white move (in the sence of correctness of wtiring, not possibility of the move) String whiteMove = piecesOfLine[1]; // todo, tha same for black String blackMove = piecesOfLine[2]; // return move return new Move(moveNumber, whiteMove, blackMove); } } else if(piecesOfLine.length == 2) { // parse first string to number // todo, validate number of the move int moveNumber; String[] first = piecesOfLine[0].split("\\."); // \\. as we want dot and not regexp for (int i = 0; i < first.length; i++) { System.out.println("first = " + first[i]); } if(first.length > 1){ try { moveNumber = (int)Float.parseFloat(first[0]); } catch (NumberFormatException e) { Game.errorMessage = "Problem by parsing move number: " + first[0]; return null; } String whiteMove = first[1]; String blackMove = piecesOfLine[1]; return new Move(moveNumber, whiteMove, blackMove); } else{ try { moveNumber = (int)Float.parseFloat(piecesOfLine[0]); } catch (NumberFormatException e) { Game.errorMessage = "Problem by parsing move number: " + piecesOfLine[0]; return null; } // todo, validate white move (in the sence of correctness of wtiring, not possibility of the move) String whiteMove = piecesOfLine[1]; // todo, tha same for black // String blackMove = piecesOfLine[2]; // return move return new Move(moveNumber, whiteMove, null); } } else { Game.errorMessage = "Now only three strings divided by space are allowed. "+line; // do we have an error ? return null; } } }