/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: ValidityChecks.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.site;
import com.uwyn.rife.tools.ArrayUtils;
import com.uwyn.rife.tools.StringUtils;
import java.lang.reflect.Array;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.Format;
import java.text.ParseException;
import java.util.Arrays;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public abstract class ValidityChecks
{
public static boolean checkNotNull(Object value)
{
return null != value;
}
public static boolean checkNotEmpty(CharSequence value)
{
if (null == value)
{
return true;
}
String value_string = value.toString();
return 0 != StringUtils.trim(value_string).length();
}
public static boolean checkNotEmpty(Object value)
{
if (null == value)
{
return true;
}
if (value instanceof CharSequence)
{
return checkNotEmpty((String)value);
}
else if (value instanceof Character)
{
return checkNotEmpty((Character)value);
}
else if (value instanceof Byte)
{
return checkNotEmpty((Byte)value);
}
else if (value instanceof Short)
{
return checkNotEmpty((Short)value);
}
else if (value instanceof Integer)
{
return checkNotEmpty((Integer)value);
}
else if (value instanceof Long)
{
return checkNotEmpty((Long)value);
}
else if (value instanceof Float)
{
return checkNotEmpty((Float)value);
}
else if (value instanceof Double)
{
return checkNotEmpty((Double)value);
}
else if (value.getClass().isArray())
{
for (int i = 0; i < Array.getLength(value); i++)
{
if (!checkNotEmpty(Array.get(value, i)))
{
return false;
}
}
}
return true;
}
public static boolean checkNotEmpty(Character value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.charValue());
}
public static boolean checkNotEmpty(char value)
{
return (char) 0 != value;
}
public static boolean checkNotEmpty(Byte value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.byteValue());
}
public static boolean checkNotEmpty(byte value)
{
return (byte) 0 != value;
}
public static boolean checkNotEmpty(Short value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.shortValue());
}
public static boolean checkNotEmpty(short value)
{
return (short) 0 != value;
}
public static boolean checkNotEmpty(Integer value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.intValue());
}
public static boolean checkNotEmpty(int value)
{
return 0 != value;
}
public static boolean checkNotEmpty(Long value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.longValue());
}
public static boolean checkNotEmpty(long value)
{
return 0L != value;
}
public static boolean checkNotEmpty(Float value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.floatValue());
}
public static boolean checkNotEmpty(float value)
{
return 0.0f != value;
}
public static boolean checkNotEmpty(Double value)
{
if (null == value)
{
return true;
}
return checkNotEmpty(value.doubleValue());
}
public static boolean checkNotEmpty(double value)
{
return 0.0d != value;
}
public static boolean checkNotEqual(boolean value, boolean reference)
{
return value != reference;
}
public static boolean checkNotEqual(byte value, byte reference)
{
return value != reference;
}
public static boolean checkNotEqual(char value, char reference)
{
return value != reference;
}
public static boolean checkNotEqual(short value, short reference)
{
return value != reference;
}
public static boolean checkNotEqual(int value, int reference)
{
return value != reference;
}
public static boolean checkNotEqual(long value, long reference)
{
return value != reference;
}
public static boolean checkNotEqual(float value, float reference)
{
return value != reference;
}
public static boolean checkNotEqual(double value, double reference)
{
return value != reference;
}
public static boolean checkNotEqual(Object value, Object reference)
{
if (null == value ||
null == reference)
{
return true;
}
if (value.getClass().isArray())
{
for (int i = 0; i < Array.getLength(value); i++)
{
if (!checkNotEqual(Array.get(value, i), reference))
{
return false;
}
}
return true;
}
else
{
return !value.equals(reference);
}
}
public static boolean checkEqual(boolean value, boolean reference)
{
return value == reference;
}
public static boolean checkEqual(byte value, byte reference)
{
return value == reference;
}
public static boolean checkEqual(char value, char reference)
{
return value == reference;
}
public static boolean checkEqual(short value, short reference)
{
return value == reference;
}
public static boolean checkEqual(int value, int reference)
{
return value == reference;
}
public static boolean checkEqual(long value, long reference)
{
return value == reference;
}
public static boolean checkEqual(float value, float reference)
{
return value == reference;
}
public static boolean checkEqual(double value, double reference)
{
return value == reference;
}
public static boolean checkEqual(Object value, Object reference)
{
if (null == value ||
null == reference)
{
return true;
}
if (value.getClass().isArray())
{
for (int i = 0; i < Array.getLength(value); i++)
{
if (!checkEqual(Array.get(value, i), reference))
{
return false;
}
}
return true;
}
else
{
return value.equals(reference);
}
}
public static boolean checkLength(byte value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(char value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(short value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(int value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(long value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(float value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(double value, int min, int max)
{
return checkLength(String.valueOf(value), min, max);
}
public static boolean checkLength(CharSequence value, int min, int max)
{
if (null == value)
{
return true;
}
String string = value.toString();
if (min > 0 &&
string.length() < min)
{
return false;
}
return !(max >= 0 && string.length() > max);
}
public static boolean checkRegexp(CharSequence value, String pattern)
{
if (null == value ||
null == pattern ||
0 == pattern.length())
{
return true;
}
String string = value.toString();
if (0 == string.length())
{
return true;
}
Pattern regexp;
try
{
regexp = Pattern.compile(pattern);
}
catch (PatternSyntaxException e)
{
return false;
}
Matcher match = regexp.matcher(string);
return match.matches();
}
public static boolean checkEmail(CharSequence value)
{
return checkRegexp(value, "^[a-zA-Z0-9][_\\+\\-\\.\\w]*@[\\w\\.\\-]+[\\w]\\.[a-zA-Z]{2,4}$");
}
public static boolean checkUrl(CharSequence value)
{
if (null == value)
{
return true;
}
String string = value.toString();
if (0 == string.length())
{
return true;
}
if (string.startsWith("https://"))
{
string = "http" + string.substring(5);
}
try
{
new URL(string);
return true;
}
catch (MalformedURLException e)
{
return false;
}
}
public static boolean checkLaterThanNow(Date value)
{
if (null == value)
{
return true;
}
return value.after(new Date());
}
public static boolean checkLimitedDate(Object value, Date min, Date max)
{
if (null == value ||
!(value instanceof Date))
{
return true;
}
Date date = (Date)value;
if (min != null &&
date.before(min))
{
return false;
}
return !(max != null && date.after(max));
}
public static boolean checkInList(Object value, String[] list)
{
if (null == value ||
null == list ||
0 == list.length)
{
return true;
}
String[] strings = ArrayUtils.createStringArray(value, null);
if (null == strings)
{
return false;
}
if (0 == strings.length)
{
return true;
}
String[] sorted = list.clone();
Arrays.sort(sorted);
for (String string : strings)
{
if (0 == string.length())
{
continue;
}
if (Arrays.binarySearch(sorted, string) < 0)
{
return false;
}
}
return true;
}
public static boolean checkRange(byte value, byte begin, byte end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(char value, char begin, char end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(short value, short begin, short end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(int value, int begin, int end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(long value, long begin, long end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(float value, float begin, float end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(double value, double begin, double end)
{
if (value < begin)
{
return false;
}
return value <= end;
}
public static boolean checkRange(Object value, Comparable begin, Comparable end)
{
if (null == value)
{
return true;
}
if (value.getClass().isArray())
{
for (int i = 0; i < Array.getLength(value); i++)
{
if (!checkRange(Array.get(value, i), begin, end))
{
return false;
}
}
return true;
}
else if (!(value instanceof Comparable))
{
return true;
}
Comparable comparable = (Comparable)value;
if (begin != null &&
comparable.compareTo(begin) < 0)
{
return false;
}
return !(end != null && comparable.compareTo(end) > 0);
}
public static boolean checkFormat(Object value, Format format)
{
if (null == value ||
null == format)
{
return true;
}
if (!(value instanceof String))
{
return true;
}
String string = (String)value;
try
{
Object parsed = format.parseObject(string);
if (null == parsed)
{
return false;
}
return format.format(parsed).equals(string);
}
catch (ParseException e)
{
return false;
}
}
}