package edu.cmu.cs.vbc.prog.prevayler.demos.scalability;

import java.io.Serializable;
import java.util.Random;

/** Generates Record objects with ids from 0 to numberOfRecords - 1.
*/
public class RecordIterator implements Serializable {

	private static final long serialVersionUID = 4278565982042966467L;
	private int nextRecordId = 0;
	private final int numberOfRecords;
	private final Random _random = new Random(0);


	public RecordIterator(int numberOfRecords) {
		this.numberOfRecords = numberOfRecords;
	}

	public boolean hasNext() {
		return nextRecordId < numberOfRecords;
	}

	public Record next() {
		indicateProgress();
		return new Record(nextRecordId++, _random);
	}

	private void indicateProgress() {
		if (nextRecordId == 0) {
			out("Creating " + numberOfRecords + " objects...");
			return;
		}
		if (nextRecordId % 100000 == 0) out("" + nextRecordId + "...");
	}

	static private void out(Object message) {
		System.out.println(message);
	}
}
