All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
net.sf.jasperreports.web.util.WebUtil Maven / Gradle / Ivy
/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2023 Cloud Software Group, Inc. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see .
*/
package net.sf.jasperreports.web.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import net.sf.jasperreports.annotations.properties.Property;
import net.sf.jasperreports.annotations.properties.PropertyScope;
import net.sf.jasperreports.engine.JRPropertiesUtil;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JasperReportsContext;
import net.sf.jasperreports.engine.util.JRDataUtils;
import net.sf.jasperreports.properties.PropertyConstants;
/**
* @author Teodor Danciu ([email protected] )
*/
public final class WebUtil
{
public static final String REQUEST_PARAMETER_REPORT_URI = "jr_report_uri";
public static final String REQUEST_PARAMETER_ASYNC_REPORT = "jr_async";
public static final String REQUEST_PARAMETER_PAGE = "jr_page";
public static final String REQUEST_PARAMETER_PAGE_TIMESTAMP = "jr_page_timestamp";
public static final String REQUEST_PARAMETER_PAGE_UPDATE = "jr_page_update";
public static final String REQUEST_PARAMETER_RUN_REPORT = "jr_run";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REQUEST_PARAMETER_RESOURCE_URI = JRPropertiesUtil.PROPERTY_PREFIX + "web.request.parameter.resource.uri";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REQUEST_PARAMETER_RESOURCE_LOCALE = JRPropertiesUtil.PROPERTY_PREFIX + "web.request.parameter.resource.locale";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REQUEST_PARAMETER_RESOURCE_BUNDLE = JRPropertiesUtil.PROPERTY_PREFIX + "web.request.parameter.resource.bundle";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REQUEST_PARAMETER_DYNAMIC_RESOURCE = JRPropertiesUtil.PROPERTY_PREFIX + "web.request.parameter.dynamic.resource";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REPORT_EXECUTION_PATH = JRPropertiesUtil.PROPERTY_PREFIX + "web.report.execution.path";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REPORT_INTERACTION_PATH = JRPropertiesUtil.PROPERTY_PREFIX + "web.report.interaction.path";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_4_6_0
)
public static final String PROPERTY_REPORT_RESOURCES_PATH = JRPropertiesUtil.PROPERTY_PREFIX + "web.report.resources.path";
@Property(
category = PropertyConstants.CATEGORY_WEB_UTIL,
scopes = {PropertyScope.CONTEXT},
sinceVersion = PropertyConstants.VERSION_5_5_0,
valueType = Boolean.class
)
public static final String PROPERTY_EMBED_COMPONENT_METADATA = JRPropertiesUtil.PROPERTY_PREFIX + "web.embed.component.metadata.in.html.output";
public static final String EXCEPTION_MESSAGE_KEY_CONFIG_PROPERTY_NOT_SET = "web.util.config.property.not.set";
private JasperReportsContext jasperReportsContext;
private JRPropertiesUtil propertiesUtil;
private WebUtil(JasperReportsContext jasperReportsContext)
{
this.jasperReportsContext = jasperReportsContext;
this.propertiesUtil = JRPropertiesUtil.getInstance(jasperReportsContext);
}
public static WebUtil getInstance(JasperReportsContext jasperReportsContext)
{
return new WebUtil(jasperReportsContext);
}
/**
*
*/
public String getReportExecutionPath()
{
String path = propertiesUtil.getProperty(PROPERTY_REPORT_EXECUTION_PATH);
if (path == null)
{
throw
new JRRuntimeException(
EXCEPTION_MESSAGE_KEY_CONFIG_PROPERTY_NOT_SET,
new Object[]{PROPERTY_REPORT_EXECUTION_PATH});
}
return path;
}
/**
*
*/
public String getReportInteractionPath()
{
String path = propertiesUtil.getProperty(PROPERTY_REPORT_INTERACTION_PATH);
if (path == null)
{
throw
new JRRuntimeException(
EXCEPTION_MESSAGE_KEY_CONFIG_PROPERTY_NOT_SET,
new Object[]{PROPERTY_REPORT_INTERACTION_PATH});
}
return path;
}
/**
*
*/
public String getResourcesPath()
{
String path = propertiesUtil.getProperty(PROPERTY_REPORT_RESOURCES_PATH);
if (path == null)
{
throw
new JRRuntimeException(
EXCEPTION_MESSAGE_KEY_CONFIG_PROPERTY_NOT_SET,
new Object[]{PROPERTY_REPORT_RESOURCES_PATH});
}
return path;
}
public String getResourceUri(HttpServletRequest request)
{
String resourceUriParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_RESOURCE_URI);
return request.getParameter(resourceUriParamName);
}
public Locale getResourceLocale(HttpServletRequest request)
{
String resourceLocaleParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_RESOURCE_LOCALE);
String localeCode = request.getParameter(resourceLocaleParamName);
return localeCode == null ? null : JRDataUtils.getLocale(localeCode);
}
public String getResourceBundleForResource(HttpServletRequest request)
{
String resourceBundleParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_RESOURCE_BUNDLE);
return request.getParameter(resourceBundleParamName);
}
public boolean isDynamicResource(HttpServletRequest request)
{
String dynamicResourceParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_DYNAMIC_RESOURCE);
return Boolean.parseBoolean(request.getParameter(dynamicResourceParamName));
}
public String getResourcesBasePath()
{
String resourcesBasePath = getResourcesPath();
String resourceUriParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_RESOURCE_URI);
return resourcesBasePath + "?" + resourceUriParamName + "=";
}
public String getResourcePath(String resourcePath)
{
return getResourcePath(getResourcesBasePath(), resourcePath, false);
}
public String getResourcePath(String resourcePath, boolean isDynamic)
{
return getResourcePath(getResourcesBasePath(), resourcePath, isDynamic);
}
public String getResourcePath(String resourcesBasePath, String resourcePath)
{
return getResourcePath(resourcesBasePath, resourcePath, false);
}
public String getResourcePath(String resourcesBasePath, String resourcePath, boolean isDynamic)
{
String resourceDynamicParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_DYNAMIC_RESOURCE);
return
resourcesBasePath + resourcePath
+ (isDynamic ? ("&" + resourceDynamicParamName + "=" + isDynamic) : "");
// + "&" + ResourceServlet.SERVLET_PATH + "=" + UrlUtil.urlEncode(webResourceBasePath);
}
public String getResourcePath(String resourcesBasePath, String resourcePath, String resourceBundleName, Locale locale)
{
String resourceBundleParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_RESOURCE_BUNDLE);
String resourceLocaleParamName = propertiesUtil.getProperty(PROPERTY_REQUEST_PARAMETER_RESOURCE_LOCALE);
return
getResourcePath(resourcesBasePath, resourcePath, false)
+ "&" + resourceBundleParamName + "=" + resourceBundleName
+ "&" + resourceLocaleParamName + "=" + JRDataUtils.getLocaleCode(locale);
}
public boolean isComponentMetadataEmbedded()
{
return Boolean.parseBoolean(propertiesUtil.getProperty(PROPERTY_EMBED_COMPONENT_METADATA));
}
public static String encodeUrl(String url) {
if (url != null) {
try {
return URLEncoder.encode(url, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new JRRuntimeException(e);
}
}
return null;
}
public static String decodeUrl(String url) {
if (url != null) {
try {
return URLDecoder.decode(url, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new JRRuntimeException(e);
}
}
return null;
}
}