Clover coverage report - Maven Clover report
Coverage timestamp: Sun Mar 18 2007 17:43:17 CET
file stats: LOC: 59   Methods: 4
NCLOC: 41   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
SimpleEscapeHandler.java 100% 100% 100% 100%
coverage
 1    package com.agical.rdoc.util;
 2   
 3    import java.util.Collections;
 4    import java.util.Comparator;
 5    import java.util.HashMap;
 6    import java.util.Iterator;
 7    import java.util.LinkedList;
 8    import java.util.Map;
 9   
 10    import com.agical.rmock.core.util.StringUtils;
 11   
 12   
 13   
 14    /**
 15    * @author brolund
 16    *
 17    * (c) 2005 Agical AB
 18    */
 19    public class SimpleEscapeHandler implements EscapeHandler {
 20   
 21    private Map escapeMap = new HashMap();
 22    private final Comparator comparator = new StringLengthComparator();
 23   
 24  3 public SimpleEscapeHandler() {
 25    }
 26   
 27  3 public String escape(String originalString) {
 28  3 LinkedList keys = new LinkedList( escapeMap.keySet() );
 29  3 Collections.sort( keys, comparator );
 30  3 StringBuffer result = new StringBuffer();
 31  3 escape( keys, originalString, result );
 32  3 return result.toString();
 33    }
 34   
 35  5 public void setEscape(String key, String replacement) {
 36  5 escapeMap.put( key, replacement );
 37    }
 38   
 39  8 private void escape(LinkedList keys, String originalString, StringBuffer result) {
 40  8 if( keys.size() == 0 ) {
 41  3 result.append( originalString );
 42  3 return;
 43    }
 44  5 String key = (String)keys.removeLast();
 45  5 String value = (String)escapeMap.get( key );
 46  5 Iterator parts = StringUtils.split( originalString, key ).iterator();
 47  5 while(parts.hasNext() ) {
 48  9 String subString = (String) parts.next();
 49  9 if( subString.equals( key ) ) {
 50  4 result.append( value );
 51    } else {
 52  5 escape( (LinkedList) keys.clone(), subString, result );
 53    }
 54    }
 55    }
 56   
 57   
 58   
 59    }