Clover coverage report - Ledge Web - SNAPSHOT
Coverage timestamp: Fri Nov 17 2006 05:20:55 CET
file stats: LOC: 74   Methods: 2
NCLOC: 23   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
EmailTool.java 0% 0% 0% 0%
coverage
 1    //
 2    //Copyright (c) 2003-2005, Caltha - Gajda, Krzewski, Mach, Potempski Sp.J.
 3    //All rights reserved.
 4    //
 5    //Redistribution and use in source and binary forms, with or without modification,
 6    //are permitted provided that the following conditions are met:
 7    //
 8    //* Redistributions of source code must retain the above copyright notice,
 9    //this list of conditions and the following disclaimer.
 10    //* Redistributions in binary form must reproduce the above copyright notice,
 11    //this list of conditions and the following disclaimer in the documentation
 12    //and/or other materials provided with the distribution.
 13    //* Neither the name of the Caltha - Gajda, Krzewski, Mach, Potempski Sp.J.
 14    //nor the names of its contributors may be used to endorse or promote products
 15    //derived from this software without specific prior written permission.
 16    //
 17    //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 18    //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 19    //WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 20    //IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 21    //INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 22    //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 23    //OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 24    //WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 25    //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 26    //POSSIBILITY OF SUCH DAMAGE.
 27    //
 28   
 29    package org.objectledge.web.mvc.tools;
 30   
 31    /**
 32    * Converts a given e-mail to a JavaScript code which displays the e-mail in the browser and
 33    * prevents e-mail harvesting by spammers.
 34    *
 35    * @author <a href="mailto:dgajda@caltha.pl">Damian Gajda</a>
 36    * @version $Id: EmailTool.java,v 1.3 2005/02/08 19:11:31 rafal Exp $
 37    */
 38    public class EmailTool
 39    {
 40    /**
 41    * Encode the given email address as html/javascript.
 42    *
 43    * @param eMail the address to encode.
 44    * @return encoded representation.
 45    */
 46  0 public String encode(String eMail)
 47    {
 48  0 StringBuilder jSEncode = new StringBuilder();
 49  0 jSEncode.append("document.write('<a href=\"mailto:").append(eMail).append("\">")
 50    .append(eMail).append("</a>');");
 51  0 String value = jSEncode.toString();
 52   
 53  0 jSEncode.setLength(0);
 54  0 jSEncode.append("<script language=\"javascript\">eval(unescape('");
 55  0 for(int i=0; i < value.length(); i++)
 56    {
 57  0 jSEncode.append('%').append(bin2Hex(value.charAt(i)));
 58    }
 59  0 jSEncode.append("'))</script>");
 60   
 61  0 return jSEncode.toString();
 62    }
 63   
 64    /**
 65    * Provide hexadecimal ordinal of an UTF character.
 66    *
 67    * @param c a character
 68    * @return hexadecimal representation of character's ordinal nubmer.
 69    */
 70  0 private String bin2Hex(char c)
 71    {
 72  0 return Integer.toHexString((int)c);
 73    }
 74    }