/* =============================================================================== * * Part of the InfoGlue Content Management Platform (www.infoglue.org) * * =============================================================================== * * Copyright (C) * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 2, as published by the * Free Software Foundation. See the file LICENSE.html for more information. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple * Place, Suite 330 / Boston, MA 02111-1307 / USA. * * =============================================================================== */ package org.infoglue.common.util; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.apache.log4j.Logger; public class VisualFormatter { private final static Logger logger = Logger.getLogger(VisualFormatter.class.getName()); public VisualFormatter() { } public String formatDate(Date date, String pattern) { if(date == null) return ""; SimpleDateFormat formatter = new SimpleDateFormat(pattern); String dateString = formatter.format(date); return dateString; } public String formatDate(Date date, Locale locale, String pattern) { if(date == null) return ""; // Format the current time. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale); String dateString = formatter.format(date); return dateString; } public Date parseDate(String dateString, String pattern) { if(dateString == null) return new Date(); Date date = new Date(); try { // Format the current time. SimpleDateFormat formatter = new SimpleDateFormat(pattern); date = formatter.parse(dateString); } catch(Exception e) { logger.info("Error parsing date:" + dateString); } return date; } public Date parseDate(String dateString, Locale locale, String pattern) { if(dateString == null) return new Date(); Date date = new Date(); try { // Format the current time. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale); date = formatter.parse(dateString); } catch(Exception e) { logger.info("Error parsing date:" + dateString); } return date; } /** * This method converts all non-standard characters to html-equivalents. */ public final String escapeHTML(String s) { if(s == null) return null; StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); switch (c) { case '<': sb.append("<"); break; case '>': sb.append(">"); break; case '&': sb.append("&"); break; case '"': sb.append("""); break; /* case '�': sb.append("à");break; case '�': sb.append("À");break; case '�': sb.append("â");break; case '�': sb.append("Â");break; case '�': sb.append("ä");break; case '�': sb.append("Ä");break; case '�': sb.append("å");break; case '�': sb.append("Å");break; case '�': sb.append("æ");break; case '�': sb.append("Æ");break; case '�': sb.append("ç");break; case '�': sb.append("Ç");break; case '�': sb.append("é");break; case '�': sb.append("É");break; case '�': sb.append("è");break; case '�': sb.append("È");break; case '�': sb.append("ê");break; case '�': sb.append("Ê");break; case '�': sb.append("ë");break; case '�': sb.append("Ë");break; case '�': sb.append("ï");break; case '�': sb.append("Ï");break; case '�': sb.append("ô");break; case '�': sb.append("Ô");break; case '�': sb.append("ö");break; case '�': sb.append("Ö");break; case '�': sb.append("ø");break; case '�': sb.append("Ø");break; case '�': sb.append("ß");break; case '�': sb.append("ù");break; case '�': sb.append("Ù");break; case '�': sb.append("û");break; case '�': sb.append("Û");break; case '�': sb.append("ü");break; case '�': sb.append("Ü");break; case '�': sb.append("®");break; case '�': sb.append("©");break; case '�': sb.append("€"); break; */ default: sb.append(c); break; } } return sb.toString(); } /** * * Temporary method, please do not use. (SS, 2004-12-13) * @deprecated */ public final String escapeHTMLforXMLService(String s) { if(s == null) return null; StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); switch (c) { case '<': sb.append("<"); break; case '>': sb.append(">"); break; case '&': sb.append("&"); break; case '"': sb.append("""); break; case '�': sb.append("à");break; case '�': sb.append("À");break; case '�': sb.append("â");break; case '�': sb.append("Â");break; case '�': sb.append("ä");break; case '�': sb.append("Ä");break; case '�': sb.append("å");break; case '�': sb.append("Å");break; case '�': sb.append("æ");break; case '�': sb.append("Æ");break; case '�': sb.append("ç");break; case '�': sb.append("Ç");break; case '�': sb.append("é");break; case '�': sb.append("É");break; case '�': sb.append("è");break; case '�': sb.append("ò");break; case '�': sb.append("È");break; case '�': sb.append("ê");break; case '�': sb.append("Ê");break; case '�': sb.append("ë");break; case '�': sb.append("Ë");break; case '�': sb.append("ï");break; case '�': sb.append("Ï");break; case '�': sb.append("ô");break; case '�': sb.append("Ô");break; case '�': sb.append("ö");break; case '�': sb.append("Ö");break; case '�': sb.append("ø");break; case '�': sb.append("Ø");break; case '�': sb.append("ß");break; case '�': sb.append("ù");break; case '�': sb.append("Ù");break; case '�': sb.append("û");break; case '�': sb.append("Û");break; case '�': sb.append("ü");break; case '�': sb.append("Ü");break; case '�': sb.append("®");break; case '�': sb.append("©");break; case '�': sb.append("€"); break; case '\'': sb.append("’"); break; default: sb.append(c); break; } } return sb.toString(); } public final String escapeExtendedHTML(String s) { if(s == null) return null; StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); switch (c) { case '<': sb.append("<"); break; case '>': sb.append(">"); break; case '&': sb.append("&"); break; case '"': sb.append("""); break; /* case '�': sb.append("à");break; case '�': sb.append("À");break; case '�': sb.append("â");break; case '�': sb.append("Â");break; case '�': sb.append("ä");break; case '�': sb.append("Ä");break; case '�': sb.append("å");break; case '�': sb.append("Å");break; case '�': sb.append("æ");break; case '�': sb.append("Æ");break; case '�': sb.append("ç");break; case '�': sb.append("Ç");break; case '�': sb.append("é");break; case '�': sb.append("É");break; case '�': sb.append("è");break; case '�': sb.append("È");break; case '�': sb.append("ê");break; case '�': sb.append("Ê");break; case '�': sb.append("ë");break; case '�': sb.append("Ë");break; case '�': sb.append("ï");break; case '�': sb.append("Ï");break; case '�': sb.append("ô");break; case '�': sb.append("Ô");break; case '�': sb.append("ö");break; case '�': sb.append("Ö");break; case '�': sb.append("ø");break; case '�': sb.append("Ø");break; case '�': sb.append("ß");break; case '�': sb.append("ù");break; case '�': sb.append("Ù");break; case '�': sb.append("û");break; case '�': sb.append("Û");break; case '�': sb.append("ü");break; case '�': sb.append("Ü");break; case '�': sb.append("®");break; case '�': sb.append("©");break; case '�': sb.append("€"); break; */ case '\'': sb.append("’"); break; default: sb.append(c); break; } } return sb.toString(); } /** * This method converts all non-standard characters to html-equivalents. */ public final String escapeForJavascripts(String s) { if(s == null) return null; StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); if(c == '\'') sb.append("\\'"); else sb.append(c); } return sb.toString(); } /** * This method converts all non-standard characters to html-equivalents. */ public final String cleanForJavascriptStrings(String s) { if(s == null) return null; String lineSep = System.getProperty("line.separator"); s = s.replaceAll(lineSep, "<br/>"); s = s.replaceAll("\n", "<br/>"); s = s.replaceAll("\r", "<br/>"); StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); switch (c) { case '\'': sb.append("\\'"); break; case '"': sb.append("""); break; default: sb.append(c); break; } } return sb.toString(); } /** * This method converts all non-standard characters to html-equivalents. */ public final String escapeForAdvancedJavascripts(String s) { if(s == null) return null; StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); switch (c) { case '\'': sb.append("\\'"); break; case '"': sb.append("""); break; case '\\': sb.append("\\\\"); break; default: sb.append(c); break; } } return sb.toString(); } public final String replaceNonAscii(String s, char character) { if(s == null) return null; StringBuffer sb = new StringBuffer(); int n = s.length(); for (int i = 0; i < n; i++) { char c = s.charAt(i); if(c < 128 && c > 32) { if(Character.isLetterOrDigit(c) || c == '-' || c == '_' || c == '.') sb.append(c); else sb.append(character); } else { sb.append(character); } } return sb.toString(); } /** * This method converts all non-standard characters to html-equivalents. */ public final String encode(String s) throws Exception { if(s == null) return null; return URLEncoder.encode(s, "UTF-8"); } public final String encodeURI(String s, String encoding) throws Exception { if(s == null) return null; return URLEncoder.encode(s, encoding); } }