// ============================================================================
//
// 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;
/**
* @author jteuladedenantes
*
* A FieldInterval is a set of values defined by a interval. So all values included in this interval are possible
* values.
*/
public class FieldInterval extends AbstractField {
private static final long serialVersionUID = 4713567446010547849L;
private long minInterval;
private long maxInterval;
public FieldInterval(long minInterval, long maxInterval) {
super();
length = String.valueOf(maxInterval).length();
this.minInterval = minInterval;
this.maxInterval = maxInterval;
}
@Override
public long getWidth() {
return maxInterval - minInterval + 1;
}
@Override
public Long encode(String str) {
Long longStr;
try {
longStr = Long.valueOf(str);
if (longStr < minInterval || longStr > maxInterval)
return -1L;
} catch (NumberFormatException e) {
return -1L;
}
return longStr - minInterval;
}
@Override
public String decode(long number) {
if (number >= getWidth())
return "";
String res = String.valueOf(number + minInterval);
// we add the potential missing zeros
while (res.length() < length)
res = "0" + res;
return res;
}
}