/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package openbook.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
/**
* A set of static utilities used by the Java Server Pages.
*
* @author Pinaki Poddar
*
*/
public class JSPUtility {
/**
* Converts the given number in currency format.
*/
public static final DecimalFormat currencyFormatter = new DecimalFormat("###.##");
public static final DateFormat dateFormatter = new SimpleDateFormat("MMM dd, HH:mm");
public static String format(Number price) {
return currencyFormatter.format(price);
}
public static String format(Date date) {
return dateFormatter.format(date);
}
/**
* Converts the given String to a double.
* Return null if the String is null or non-numeric.
*/
public static Double toDouble(String v) {
try {
return Double.parseDouble(v);
} catch (NumberFormatException e) {
return null;
}
}
/**
* Encodes parameter key-values in a URL.
*
* @param page the base page
* @param params key-value pairs of parameters passed in to the page URL.
* null or empty argument is allowed.
* @return a URL encoded string
*/
public static String encodeURL(String page, Object...params) {
StringBuilder paramBuffer = new StringBuilder();
if (params != null && params.length != 0) {
if (params.length % 2 != 0) {
throw new IllegalArgumentException("Odd number of encoding parameters " +
Arrays.toString(params) + " to " + page);
}
for (int i = 0; i < params.length; i += 2) {
if (paramBuffer.length() > 0)
paramBuffer.append("&");
String key = params[i] == null ? "" : params[i].toString();
String value = params[i+1] == null ? "" : params[i+1].toString();
paramBuffer.append(key).append("=").append(encode(value));
}
}
if (paramBuffer.length() >0)
return page + "?" + paramBuffer;
else
return page;
}
private static String encode(String s) {
try {
return URLEncoder.encode(s, "UTF-8");
} catch (UnsupportedEncodingException e) {
return s;
}
}
public static final String SRC_ROOT = "generated-html";
public static String getURL(String className, String anchor) {
return SRC_ROOT + "/" + className.replace('.', '/') + (anchor != null ? "#"+anchor : "");
}
}