package com.fp.common.files.record;

import java.util.Iterator;


/**
 * Clase que se encarga de la lectura de los bytes de cada registro
 * Cada Iterable que contiene los 94 bytes del registro
 * @author scastillo
 */
public class RecordIterator implements Iterable<String> {
    /*
     * Variable que contiene la posicion inicial para armar los 94 bytes
     */

    int startPosition = 0;
    /**
     * Variable que contine los 88 registros
     */
    String inString;
    /*
     * Variable que indica el tamaņo de cada registro
     */
    private int size = 96;

    /**
     * Constructor de la clase
     * @param inString
     */
    public RecordIterator(String inString,int linesize) {
    	size = linesize;
        this.inString = inString;
    }

    /**
     * Metodo que reccore los registros
     */
    public Iterator<String> iterator() {
        return new RIterator();
    }

    /**
     * Clase privada que se encarga de realizar el Interator
     */
    private class RIterator implements Iterator<String> {
        /*
         * Variable que contiene los 94 bytes del registro nacha
         */

        String register;

        public boolean hasNext() {
            boolean ret = false;
            int endPosition = startPosition + size;
            if (startPosition == inString.length()) {
                return false;
            }
            if (endPosition > inString.length()) {
                endPosition = inString.length();
            }
            register = inString.substring(startPosition, endPosition);
            if (startPosition < inString.length()) {
                startPosition += size;
                ret = true;
            } else {
                ret = false;
            }
            return ret;
        }

        /**
         * Metodo que devuelve un registro de 94 bytes
         * @return
         */
        public String next() {
            return register;
        }

        /**
         * Metodo que se ejecuta al eliminar un registro
         */
        public void remove() {
        }
    }
}
