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

echopointng.util.QuoterKit Maven / Gradle / Ivy

Go to download

Echo2 bundled with Echo2_Extras, Echo2_FileTransfer and echopointing and various improvements/bugfixes

There is a newer version: 2.0.4
Show newest version
package echopointng.util;

/* 
 * This file is part of the Echo Point Project.  This project is a collection
 * of Components that have extended the Echo Web Application Framework.
 *
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 */
 
/**
 * This class will quote string data
 */
public class QuoterKit {

	/** not instantiable */	
	private QuoterKit() {
	}
	
	/**
	 * This method will apply a "Java quote" (ie double slashes) 
	 * to a string with the given quote char
	 */
	public static String quoteJ(String s, char quoteChar) {
		StringBuffer sb = new StringBuffer(s.length());
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			if (c == quoteChar) {
				sb.append("\\");
				sb.append(quoteChar);
			} else {
				sb.append(c);
			}
		}
		return sb.toString();
	}
	
	/**
	 * Quortes a string into HTML characters.  
	 * @param s - the string to quote into safe HTML
	 * @return - safe HTML or null if s is null
	 */
	public static String quoteHTML(String s) {
		if (s == null)
			return s;
		int slen = s.length();
		StringBuffer sb = new StringBuffer((int) (slen*1.5));
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			switch (c) {
		        case '<':
		            sb.append("<");
		            break;
		        case '>':
		            sb.append(">");
		            break;
		        case '"':
		            sb.append(""");
		            break;
		        case '&': {
		        	// if the next N chars are &xxx; then dont replace it
		        	if (checkForEntities(i,slen,s)) {
		        		sb.append(c);
		        		continue;
		        	}
	        		sb.append("&");
		            break;
		        }
				default :
					sb.append(c);
					break;
			}
		}
		return sb.toString();
	}
	
	/**
	 * All the valid HTML entities according to W3CSchools :
	 * http://www.w3schools.com/html/html_entitiesref.asp
	 */
	private static String[] htmlEntities = {
			""",  	""",
			"'", 	"'",
			"&&", 	"&",
			"<", 	"<",
			">", 	">",
			" ", 	" ",
			"¡", 	"¡",
			"¤", "¤",
			"¢", 	"¢",
			"£", 	"£",
			"¥", 	"¥",
			"¦", "¦",
			"§", 	"§",
			"¨", 	"¨",
			"©", 	"©",
			"ª", 	"ª",
			"«", 	"«",
			"¬", 	"¬",
			"­", 	"­",
			"®", 	"®",
			"¯", 	"¯",
			"°", 	"°",
			"±", "±",
			"²", 	"²",
			"³", 	"³",
			"´", 	"´",
			"µ", 	"µ",
			"¶", 	"¶",
			"·", "·",
			"¸", 	"¸",
			"¹", 	"¹",
			"º", 	"º",
			"»", 	"»",
			"¼", "¼",
			"½", "½",
			"¾", "¾",
			"¿", "¿",
			"×", 	"×",
			"÷", "÷",
			"À", "À",
			"Á", "Á",
			"Â", 	"Â",
			"Ã", "Ã",
			"Ä", 	"Ä",
			"Å", 	"Å",
			"Æ", 	"Æ",
			"Ç", "Ç",
			"È", "È",
			"É", "É",
			"Ê", 	"Ê",
			"Ë", 	"Ë",
			"Ì", "Ì",
			"Í", "Í",
			"Î", 	"Î",
			"Ï", 	"Ï",
			"Ð", 	"Ð",
			"Ñ", "Ñ",
			"Ò", "Ò",
			"Ó", "Ó",
			"Ô", 	"Ô",
			"Õ", "Õ",
			"Ö", 	"Ö",
			"Ø", "Ø",
			"Ù", "Ù",
			"Ú", "Ú",
			"Û", 	"Û",
			"Ü", 	"Ü",
			"Ý", "Ý",
			"Þ", 	"Þ",
			"ß", 	"ß",
			"à", "à",
			"á", "á",
			"â", 	"â",
			"ã", "ã",
			"ä", 	"ä",
			"å", 	"å",
			"æ", 	"æ",
			"ç", "ç",
			"è", "è",
			"é", "é",
			"ê", 	"ê",
			"ë", 	"ë",
			"ì", "ì",
			"í", "í",
			"î", 	"î",
			"ï", 	"ï",
			"ð", 	"ð",
			"ñ", "ñ",
			"ò", "ò",
			"ó", "ó",
			"ô", 	"ô",
			"õ", "õ",
			"ö", 	"ö",
			"ø", "ø",
			"ù", "ù",
			"ú", "ú",
			"û", 	"û",
			"ü", 	"ü",
			"ý", "ý",
			"þ", 	"þ",
			"ÿ", 	"ÿ",
			"Œ", 	"Œ",
			"œ", 	"œ",
			"Š", "Š",
			"š", "š",
			"Ÿ", 	"Ÿ",
			"ˆ", 	"ˆ",
			"˜", 	"˜",
			" ", 	" ",
			" ", 	" ",
			" ", " ",
			"‌", 	"‌",
			"‍", 	"‍",
			"‎", 	"‎",
			"‏", 	"‏",
			"–", 	"–",
			"—", 	"—",
			"‘", 	"‘",
			"’", 	"’",
			"‚", 	"‚",
			"“", 	"“",
			"”", 	"”",
			"„", 	"„",
			"†", "†",
			"‡", "‡",
			"…", "…",
			"‰", "‰",
			"‹", "‹",
			"›", "›",
			"€", 	"€",
			"™",	"™",
		};
	
	/*
	 * Check that the string does have any HTML entities
	 */
	private static boolean checkForEntities(int i, int slen, String s) {
		for (int j = 0; j < htmlEntities.length; j++) {
			if (checkFor(i,slen,s,htmlEntities[j]))
				return true;
		}
		return false;
	}
	
	/*
	 * Check that the string does have the HTML entity
	 */
	private static boolean checkFor(int i, int slen, String s, String checkFor) {
		int cflen = checkFor.length();
    	if (i <= (slen - cflen)) {
    		if (s.substring(i,i+cflen).equalsIgnoreCase(checkFor)) {
    			return true;
    		}
    	}
		return false;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy