DateRandomField.java

package de.slothsoft.random.types;

import java.util.Calendar;
import java.util.Date;

import de.slothsoft.random.RandomField;

/**
 * A {@link RandomField} representing a {@link Date} between 10 years ago and 10 years in
 * the future.
 *
 * @author Stef Schulz
 * @since 1.0.0
 */

public class DateRandomField extends AbstractChronoRandomField<Date> {

	@Override
	Date createDefaultStartValue() {
		final Calendar now = Calendar.getInstance();
		final int currentYear = now.get(Calendar.YEAR);
		now.set(Calendar.YEAR, currentYear - 10);
		return now.getTime();
	}

	@Override
	Date createDefaultEndValue() {
		final Calendar now = Calendar.getInstance();
		final int currentYear = now.get(Calendar.YEAR);
		now.set(Calendar.YEAR, currentYear + 10);
		return now.getTime();
	}

	@Override
	long toLongValue(Date value) {
		return value.getTime();
	}

	@Override
	Date fromLongValue(long date) {
		return new Date(date);
	}

	@Override
	public DateRandomField endValue(Date newEndValue) {
		return (DateRandomField) super.endValue(newEndValue);
	}

	@Override
	public DateRandomField startValue(Date newStartValue) {
		return (DateRandomField) super.startValue(newStartValue);
	}
}