package org.talend.dataquality.datamasking.functions; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; public final class CharactersOperationUtils { protected static final Pattern patternNumber = Pattern.compile("[0-9]+"); protected static final Pattern patternCharacter = Pattern.compile("."); protected static final Pattern patternDigit = Pattern.compile("[0-9]"); private CharactersOperationUtils() { } private static final boolean factorise(String[] parameters, int length, Pattern pattern) { return parameters.length == length && pattern.matcher(parameters[length - 1]).matches(); } private static final boolean factorise2Indexes(String[] parameters) { return patternNumber.matcher(parameters[0]).matches() && patternNumber.matcher(parameters[1]).matches(); } public static final boolean validParameters2Indexes(String[] parameters) { return parameters != null && parameters.length == 2 && factorise2Indexes(parameters); } public static final boolean validParameters2Indexes1CharReplace(String[] parameters) { return parameters != null && (parameters.length == 2 || factorise(parameters, 3, patternCharacter)) && factorise2Indexes(parameters); } public static final boolean validParameters1Number1DigitReplace(String[] parameters) { return parameters != null && (parameters.length == 1 || factorise(parameters, 2, patternDigit)) && patternNumber.matcher(parameters[0]).matches(); } public static final boolean validParameters1Number1CharReplace(String[] parameters) { return parameters != null && (parameters.length == 1 || factorise(parameters, 2, patternCharacter)) && patternNumber.matcher(parameters[0]).matches(); } public static final boolean validParameters1Number(String[] parameters) { return parameters != null && factorise(parameters, 1, patternNumber); } public static final boolean validParameters1DigitReplace(String[] parameters) { return parameters == null || (parameters.length == 1 && (StringUtils.isEmpty(parameters[0]) || patternDigit.matcher(parameters[0]).matches())); } public static final boolean validParameters1CharReplace(String[] parameters) { return parameters == null || (parameters.length == 1 && (StringUtils.isEmpty(parameters[0]) || patternCharacter.matcher(parameters[0]).matches())); } }