package uk.ac.aber.cs31920.assignment.implementation.factories;

import uk.ac.aber.cs31920.assignment.implementation.datastructures.ProblemGrid;

import java.text.CharacterIterator;
import java.text.StringCharacterIterator;

/**
 * Factory to produce problem grids from input strings.
 */
public class GridFactory {
    public static ProblemGrid createGridFromString(String grid)
    {
        int endOfSizeString = grid.indexOf("\n");
        int size = Integer.parseInt(grid.substring(0,endOfSizeString));
        ProblemGrid result = new ProblemGrid(size);

        grid = grid.substring(endOfSizeString+1);

        StringCharacterIterator gridIterator = new StringCharacterIterator(grid);
        int x = 0, y = 0; // by default = 0
        while(gridIterator.current() != CharacterIterator.DONE)
        {
            if (gridIterator.current()=='\n'){
                gridIterator.next();
                continue;
            }
            result.setGridValue(x, y, gridIterator.current()=='1');
            x++;
            if (x >= size)
            {
                x = 0; y++;
            }
            gridIterator.next();
        }

        return result;
    }
}
