/* ===============================================================================
*
* 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);
}
}