// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataquality.datamasking.functions;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* created by jgonzalez on 18 juin 2015. This function will return a date between the two given as parameters.
*
*/
public class GenerateBetweenDate extends Function<Date> {
private static final long serialVersionUID = 7513182257849118816L;
@Override
protected Date doGenerateMaskedField(Date date) {
if (parameters.length == 2) {
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); //$NON-NLS-1$
Date minDate = null;
Date maxDate = null;
try {
minDate = df.parse(parameters[0]);
maxDate = df.parse(parameters[1]);
} catch (ParseException e) {
return new Date(System.currentTimeMillis());
}
if (minDate.after(maxDate)) {
Date tmp = minDate;
minDate = maxDate;
maxDate = tmp;
} else if (minDate.equals(maxDate)) {
return minDate;
}
long min = minDate.getTime();
long max = maxDate.getTime();
long number = min + ((long) (rnd.nextDouble() * (max - min)));
Date newDate = new Date(number);
return newDate;
} else {
return new Date(System.currentTimeMillis());
}
}
}