// ============================================================================
//
// 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.dataprofiler.core.ui.utils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;
import org.apache.commons.lang.time.DateUtils;
import org.apache.log4j.Logger;
/**
* DOC zqin class global comment. Detailled comment
*/
public final class CheckValueUtils {
protected static Logger log = Logger.getLogger(CheckValueUtils.class);
private CheckValueUtils() {
}
public static boolean getCheckValue(String regex, String inputString) {
if (isEmpty(inputString)) {
return false;
}
return Pattern.matches(regex, inputString);
}
public static boolean isStringValue(String inputString) {
String regex = "^([a-z]|[A-Z])\\w*"; //$NON-NLS-1$
return getCheckValue(regex, inputString);
}
public static boolean isNumberValue(String inputString) {
String regex = "\\d+"; //$NON-NLS-1$
return getCheckValue(regex, inputString);
}
public static boolean isRealNumberValue(String inputString) {
String regex = "-?\\d+(\\.\\d+)?"; //$NON-NLS-1$
return getCheckValue(regex, inputString);
}
public static boolean isNumberValue(String... strs) {
for (String str : strs) {
if (!isNumberValue(str)) {
return false;
}
}
return true;
}
public static boolean isRealNumberValue(String... strs) {
for (String str : strs) {
if (!isRealNumberValue(str)) {
return false;
}
}
return true;
}
public static boolean isNumberOfShownValue(String inputString) {
String regex = "^[1-9]\\d*"; //$NON-NLS-1$
return getCheckValue(regex, inputString);
}
public static boolean isNumberWithNegativeValue(String inputString) {
String regex = "-?\\d+"; //$NON-NLS-1$
return getCheckValue(regex, inputString);
}
public static boolean isPatternValue(String inputString) {
String regex = "'.*'"; //$NON-NLS-1$
return getCheckValue(regex, inputString);
}
/**
* DOC Zqin Comment method "isAoverB".
*
* @param a
* @param b
* @return
*/
public static boolean isAoverB(String a, String b) {
if (!isEmpty(a, b) && (isNumberValue(a, b) || isRealNumberValue(a, b))) {
Double da = new Double(a);
Double db = new Double(b);
return da > db;
}
if (!isEmpty(a, b) && isDateValue(a) && isDateValue(b)) {
try {
String[] patterns = new String[2];
patterns[0] = "yyyy-MM-dd"; //$NON-NLS-1$
patterns[1] = "yyyy-MM-dd HH:mm:ss"; //$NON-NLS-1$
Date ad = DateUtils.parseDate(a, patterns);
Date bd = DateUtils.parseDate(b, patterns);
return ad.after(bd);
} catch (Exception e) {
log.error(e, e);
return false;
}
}
return false;
}
/**
* DOC Zqin Comment method "isEmpty".
*
* @param strs
* @return
*/
public static boolean isEmpty(String... strs) {
if (strs == null) {
return false;
}
for (String str : strs) {
if (str == null) {
return true;
} else if ("".equals(str.trim())) { //$NON-NLS-1$
return true;
}
}
return false;
}
/**
* DOC Zqin Comment method "isOutRange".
*
* @param min the min value of this range, and min <= max.
* @param max the max value of this range, and max >= min
* @param strs
* @return
*/
public static boolean isOutRange(double min, double max, String... strs) {
for (String str : strs) {
if (isNumberValue(str) || isRealNumberValue(str)) {
Double db = new Double(str);
if (db > max || db < min) {
return true;
}
}
}
return false;
}
/**
* DOC zqin Comment method "isDateValue".
*
* @param inputString
* @return
*/
public static boolean isDateValue(String inputString) {
if (!isEmpty(inputString)) {
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //$NON-NLS-1$
df.setLenient(false);
df.parse(inputString);
return true;
} catch (Exception e) {
return false;
}
}
return false;
}
}