diff --git a/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java b/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java index fdc6268d86605e08f6e704596bf0f9248b31c8a3..7b5da65d26273c2377a32eee3b989c047e8b3d41 100644 --- a/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java +++ b/common/source/java/ch/systemsx/cisd/common/collections/ValidatorUtils.java @@ -72,7 +72,8 @@ public final class ValidatorUtils * @return <code>null</code> if given <var>pattern</var> is also <code>null</code>. * @throws PatternSyntaxException if the expression's syntax is invalid. */ - public final static IValidator<String> createPatternValidator(final String[] patterns) + public final static IValidator<String> createCaseInsensitivePatternValidator( + final String[] patterns) { assert patterns != null : "Unspecified patterns."; final int length = patterns.length; @@ -81,30 +82,31 @@ public final class ValidatorUtils case 0: return null; case 1: - return createPatternValidator(patterns[0]); + return createCaseInsensitivePatternValidator(patterns[0]); default: final CompositeValidator<String> validator = new CompositeValidator<String>(); for (final String pattern : patterns) { - validator.addValidator(createPatternValidator(pattern)); + validator.addValidator(createCaseInsensitivePatternValidator(pattern)); } return validator; } } /** - * Creates a <code>IValidator</code> based on the given pattern. + * Creates a case insensitive <code>IValidator</code> based on the given pattern. * * @return <code>null</code> if given <var>pattern</var> is also <code>null</code>. * @throws PatternSyntaxException if the expression's syntax is invalid. */ - public final static IValidator<String> createPatternValidator(final String pattern) + public final static IValidator<String> createCaseInsensitivePatternValidator( + final String pattern) { if (pattern == null) { return null; } - final Pattern regEx = Pattern.compile(convertToRegEx(pattern)); + final Pattern regEx = Pattern.compile(convertToRegEx(pattern), Pattern.CASE_INSENSITIVE); return new RegExValidator(regEx); } diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java index 7f8173ebb2d7e958cb999f6e1f3ae7b56e503ee4..0237e1537cdb245ede60c0abca8a24e63cd1e7d2 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/collections/ValidatorUtilsTest.java @@ -17,6 +17,7 @@ package ch.systemsx.cisd.common.collections; import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertFalse; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertTrue; @@ -91,18 +92,35 @@ public final class ValidatorUtilsTest } @Test - public final void testCreatePatternValidator() + public final void testCreateStarPatternValidator() { - assertNull(ValidatorUtils.createPatternValidator(ArrayUtils.EMPTY_STRING_ARRAY)); - IValidator<String> validator = ValidatorUtils.createPatternValidator("he*"); - assert validator.isValid("he"); - assert validator.isValid("hello"); - assert validator.isValid("hullo") == false; - validator = ValidatorUtils.createPatternValidator("he?lo"); - assert validator.isValid("helo") == false; - assert validator.isValid("hello"); - assert validator.isValid("he lo"); - assert validator.isValid("he.lo"); - assert validator.isValid("he\nlo") == false; + assertNull(ValidatorUtils + .createCaseInsensitivePatternValidator(ArrayUtils.EMPTY_STRING_ARRAY)); + IValidator<String> validator = ValidatorUtils.createCaseInsensitivePatternValidator("he*"); + assertTrue(validator.isValid("he")); + assertTrue(validator.isValid("hello")); + assertFalse(validator.isValid("hullo")); + } + + @Test + public final void testCreateQuestionMarkPatternValidator() + { + IValidator<String> validator = + ValidatorUtils.createCaseInsensitivePatternValidator("he?lo"); + assertFalse(validator.isValid("helo")); + assertTrue(validator.isValid("hello")); + assertTrue(validator.isValid("he lo")); + assertTrue(validator.isValid("he.lo")); + assertFalse(validator.isValid("he\nlo")); + } + + @Test + public final void testPatternValidatorIsCaseInsensitive() + { + IValidator<String> validator = ValidatorUtils.createCaseInsensitivePatternValidator("he*"); + assertTrue(validator.isValid("HELL")); + assertTrue(validator.isValid("HeLL")); + assertTrue(validator.isValid("hell")); + assertFalse(validator.isValid("HiLL")); } } \ No newline at end of file