
com.obdobion.argument.RegxCriteria Maven / Gradle / Ivy
package com.obdobion.argument;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Chris DeGreef
*
* @param
*/
public class RegxCriteria implements ICmdLineArgCriteria
{
Pattern pattern;
String patternParm;
public RegxCriteria(final String _pattern)
{
this.patternParm = _pattern;
}
@Override
public void asDefinitionText (StringBuilder sb)
{
sb.append(" --matches '");
sb.append(patternParm);
sb.append("'");
}
@Override
public void asSetter (StringBuilder sb)
{
sb.append(".setRegxCriteria(\"");
sb.append(patternParm);
sb.append("\")");
}
@Override
public RegxCriteria clone () throws CloneNotSupportedException
{
@SuppressWarnings("unchecked")
final RegxCriteria clone = (RegxCriteria) super.clone();
return clone;
}
public String getPatternParm ()
{
return patternParm;
}
@Override
public boolean isSelected (final Comparable value, final boolean caseSensitive)
{
if (pattern == null)
if (caseSensitive)
this.pattern = Pattern.compile(patternParm);
else
this.pattern = Pattern.compile(patternParm, Pattern.CASE_INSENSITIVE);
final Matcher m = pattern.matcher(value.toString());
return m.matches();
}
/**
* Normalization is not possible for patterns.
*/
@Override
public E normalizeValue (final E value, final boolean caseSensitive)
{
return value;
}
@Override
public void usage (final UsageBuilder str, final int indentLevel)
{
str.append("The value must match this regular expression: ").append(patternParm).append(".");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy