All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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