/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.frontend.web.forms.validate;
import java.util.regex.Matcher;
import java.util.regex.PatternSyntaxException;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.constraints.Pattern;
import org.orcid.pojo.ajaxForm.Text;
/**
* Get the content of a Text object and validates that it matches a given regex
* @author Angel Montenegro
* */
public class TextPatternValidator implements ConstraintValidator<TextPattern, Text> {
private java.util.regex.Pattern pattern;
@Override
public void initialize(TextPattern parameters) {
Pattern.Flag flags[] = parameters.flags();
int intFlag = 0;
for ( Pattern.Flag flag : flags ) {
intFlag = intFlag | flag.getValue();
}
try {
pattern = java.util.regex.Pattern.compile( parameters.regexp(), intFlag );
}
catch ( PatternSyntaxException e ) {
throw new IllegalArgumentException( "Invalid regular expression.", e );
}
}
@Override
public boolean isValid(Text text, ConstraintValidatorContext constraintValidatorContext) {
try {
if ( text == null ) {
return true;
}
Matcher m = pattern.matcher( text.getValue() );
return m.matches();
} catch (final Exception ignore) {
// ignore
}
return false;
}
}