1 /* *************************************************************************** 2 * Copyright (c) 2008 Brabenetz Harald, Austria. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 *****************************************************************************/ 17 18 package org.settings4j.util; 19 20 import java.util.regex.Matcher; 21 import java.util.regex.Pattern; 22 23 import org.apache.commons.collections4.Transformer; 24 25 /** 26 * This Transformer implements the function for a {@link org.apache.commons.collections4.map.LazyMap} 27 * with Key=String (=RegEx) and Value=Boolean (=Result). 28 * 29 * <pre> 30 * Example: 31 * 32 * <% 33 * request.setAttribute("matchPatternMap", LazyMap.decorate(new HashMap(), new MatchPatternTransformer("testString"))); 34 * %> 35 * <html> 36 * <head></head> 37 * <body> 38 * ${matchPatternMap['testString']} == true <br /> 39 * ${matchPatternMap['.*String']} == true <br /> 40 * ${matchPatternMap['test.*']} == true <br /> 41 * ${matchPatternMap['.*string']} == false <br /> 42 * </body> 43 * <html> 44 * </pre> 45 * 46 * @see java.util.regex.Pattern 47 * @author Harald.Brabenetz 48 */ 49 public class MatchPatternTransformer implements Transformer<String, Boolean> { 50 51 /** General Logger for this Class. */ 52 private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(MatchPatternTransformer.class); 53 54 private final String compareValue; 55 56 /** 57 * @param compareValue The String which should be Compared with a RegEx. see {@link Pattern}. 58 */ 59 public MatchPatternTransformer(final String compareValue) { 60 super(); 61 this.compareValue = compareValue; 62 } 63 64 65 /** {@inheritDoc} */ 66 public Boolean transform(final String input) { 67 Boolean result = Boolean.FALSE; 68 if (input != null) { 69 final String patternString = input.toString(); 70 try { 71 final Pattern pattern = Pattern.compile(patternString); 72 final Matcher matcher = pattern.matcher(this.compareValue); 73 if (matcher.matches()) { 74 result = Boolean.TRUE; 75 LOG.debug("TRUE - found '{}' in '{}'", patternString, compareValue); 76 } else { 77 result = Boolean.FALSE; 78 LOG.debug("FALSE - do not found '{}' in '{}'", patternString, compareValue); 79 } 80 } catch (final Exception e) { 81 LOG.warn("Cann't matche Pattern '" + patternString + "' with compareValue '" + this.compareValue + "'", 82 e); 83 result = Boolean.FALSE; 84 } 85 } 86 return result; 87 } 88 89 }