<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->

<web-app version="3.0">
    <display-name>Apache OFBiz - BIRT Component</display-name>
    <description>BIRT Component of the Apache OFBiz Project</description>
    
    <context-param>
        <description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
        <param-name>localDispatcherName</param-name><param-value>birt</param-value>
    </context-param>    
    <context-param>
        <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
        <param-name>entityDelegatorName</param-name><param-value>default</param-value>
    </context-param>
    <context-param>
        <description>The location of the main-decorator screen to use for this webapp; referred to as a context variable in screen def XML files.</description>
        <param-name>mainDecoratorLocation</param-name>
        <param-value>component://birt/widget/birt/BirtScreens.xml</param-value>
    </context-param>
    <context-param>
        <description>Enable widget boundary comments. See org.apache.ofbiz.widget.model.ModelWidget.widgetBoundaryCommentsEnabled().</description>
        <param-name>widgetVerbose</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <description>Remove unnecessary whitespace from HTML output.</description>
        <param-name>compressHTML</param-name>
        <param-value>false</param-value>
    </context-param>
    
    <!-- Default locale setting.-->
    <context-param>
        <param-name>BIRT_VIEWER_LOCALE</param-name>
        <param-value>en-US</param-value>
    </context-param>
    
    <!-- 
        Default timezone setting.
        Examples: "Europe/Paris", "GMT+1".
        Defaults to the container's timezone.       
     -->
    <context-param>
        <param-name>BIRT_VIEWER_TIMEZONE</param-name>
        <param-value></param-value>
    </context-param>
    
    <!--
        Report resources directory for preview. Defaults to ${birt home}
    -->
    <context-param>
        <param-name>BIRT_VIEWER_WORKING_FOLDER</param-name>
        <param-value>${ofbiz.home}/runtime/tempfiles</param-value>
    </context-param>
    
    <!--
        Temporary document files directory. Defaults to ${birt home}/documents
    -->
    <context-param>
        <param-name>BIRT_VIEWER_DOCUMENT_FOLDER</param-name>
        <param-value>${ofbiz.home}/runtime/tempfiles/documents</param-value>
    </context-param>
    
    <!--
        Flag whether the report resources can only be accessed under the
        working folder. Defaults to true
    -->
    <context-param>
        <param-name>WORKING_FOLDER_ACCESS_ONLY</param-name>
        <param-value>false</param-value>
    </context-param>
    
    <!--
        Temporary image/chart directory. Defaults to ${birt home}/report/images
    -->
    <context-param>
        <param-name>BIRT_VIEWER_IMAGE_DIR</param-name>
        <param-value>${ofbiz.home}/runtime/tempfiles/images</param-value>
    </context-param>
    
    <!-- Engine log directory. Defaults to ${birt home}/logs -->
    <context-param>
        <param-name>BIRT_VIEWER_LOG_DIR</param-name>
        <param-value>${ofbiz.home}/runtime/logs</param-value>
    </context-param>
    
    <!-- Report engine log level -->
    <context-param>
        <param-name>BIRT_VIEWER_LOG_LEVEL</param-name>
        <param-value>WARNING</param-value>
    </context-param>
    
    <!--
        Directory where to store all the birt report script libraries (JARs).
        Defaults to ${birt home}/scriptlib
    -->
    <context-param>
        <param-name>BIRT_VIEWER_SCRIPTLIB_DIR</param-name>
        <param-value>${ofbiz.home}/specialpurpose/birt/lib/scriptlib</param-value>
    </context-param>
    
    <!-- Resource location directory. Defaults to ${birt home} -->
    <context-param>
        <param-name>BIRT_RESOURCE_PATH</param-name>
        <param-value>${ofbiz.home}/runtime/tempfiles</param-value>
    </context-param>
    
    <!-- Preview report rows limit. An empty value means no limit. -->
    <context-param>
        <param-name>BIRT_VIEWER_MAX_ROWS</param-name>
        <param-value></param-value>
    </context-param>
    
    <!--
        Max cube fetch levels limit for report preview (Only used when
        previewing a report design file using the preview pattern)
    -->
    <context-param>
        <param-name>BIRT_VIEWER_MAX_CUBE_ROWLEVELS</param-name>
        <param-value></param-value>
    </context-param>
    <context-param>
        <param-name>BIRT_VIEWER_MAX_CUBE_COLUMNLEVELS</param-name>
        <param-value></param-value>
    </context-param>

    <!-- Memory size in MB for creating a cube. -->
    <context-param>
        <param-name>BIRT_VIEWER_CUBE_MEMORY_SIZE</param-name>
        <param-value></param-value>
    </context-param>

    <!-- Defines the BIRT viewer configuration file -->
    <context-param>
        <param-name>BIRT_VIEWER_CONFIG_FILE</param-name>
        <param-value>WEB-INF/viewer.properties</param-value>
    </context-param>

    <!--
        Flag whether to allow server-side printing. Possible values are "ON"
        and "OFF". Defaults to "ON".
    -->
    <context-param>
        <param-name>BIRT_VIEWER_PRINT_SERVERSIDE</param-name>
        <param-value>ON</param-value>
    </context-param>

    <!--
        Flag whether to force browser-optimized HTML output. Defaults to true
    -->
    <context-param>
        <param-name>HTML_ENABLE_AGENTSTYLE_ENGINE</param-name>
        <param-value>true</param-value>
    </context-param>

    <!--
        Filename generator class/factory to use for the exported reports.
    -->
    <context-param>
        <param-name>BIRT_FILENAME_GENERATOR_CLASS</param-name>
        <param-value>org.eclipse.birt.report.utility.filename.DefaultFilenameGenerator</param-value>
    </context-param>
    
    <filter>
        <display-name>ContextFilter</display-name>
        <filter-name>ContextFilter</filter-name>
        <filter-class>org.apache.ofbiz.webapp.control.ContextFilter</filter-class>
        <init-param><param-name>disableContextSecurity</param-name><param-value>N</param-value></init-param>
        <init-param>
            <param-name>allowedPaths</param-name>
            <param-value>/error:/control:/select:/index.html:/index.jsp:/default.html:/default.jsp:/images:/includes/maincss.css:/frameset:/run:/preview:/download:/parameter:/document:/output:/extract:/webcontent:/CancelTask.jsp</param-value>
        </init-param>
        <init-param><param-name>errorCode</param-name><param-value>403</param-value></init-param>
        <init-param><param-name>redirectPath</param-name><param-value>/control/main</param-value></init-param>        
    </filter>
    <!--
        Viewer Filter used to set the request character encoding to UTF-8.
    -->
    <filter>
        <filter-name>ViewerFilter</filter-name>
        <filter-class>org.eclipse.birt.report.filter.ViewerFilter</filter-class>
    </filter>
    
    <filter-mapping><filter-name>ContextFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
    <filter-mapping>
        <filter-name>ViewerFilter</filter-name>
        <servlet-name>ViewerServlet</servlet-name>
    </filter-mapping>
    <filter-mapping>
        <filter-name>ViewerFilter</filter-name>
        <servlet-name>EngineServlet</servlet-name>
    </filter-mapping> 

    <listener><listener-class>org.apache.ofbiz.webapp.control.ControlEventListener</listener-class></listener>
    <listener><listener-class>org.apache.ofbiz.webapp.control.LoginEventListener</listener-class></listener>
    <!-- NOTE: not all app servers support mounting implementations of the HttpSessionActivationListener interface -->
    <!-- <listener><listener-class>org.apache.ofbiz.webapp.control.ControlActivationEventListener</listener-class></listener> -->

    <!-- Viewer HttpSession Listener -->
    <listener>
        <listener-class>org.eclipse.birt.report.listener.ViewerHttpSessionListener</listener-class>
    </listener>
  
    <servlet>
        <description>Main Control Servlet</description>
        <display-name>ControlServlet</display-name>
        <servlet-name>ControlServlet</servlet-name>
        <servlet-class>org.apache.ofbiz.webapp.control.ControlServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- Viewer Servlet, Supports SOAP -->
    <servlet>
        <servlet-name>ViewerServlet</servlet-name>
        <servlet-class>org.apache.ofbiz.birt.report.servlet.BirtViewerServlet</servlet-class>
    </servlet>
    <!-- Engine Servlet -->
    <servlet>
        <servlet-name>EngineServlet</servlet-name>
        <servlet-class>org.apache.ofbiz.birt.report.servlet.BirtEngineServlet</servlet-class>
    </servlet>
    <servlet-mapping><servlet-name>ControlServlet</servlet-name><url-pattern>/control/*</url-pattern></servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>ViewerServlet</servlet-name>
        <url-pattern>/frameset</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>ViewerServlet</servlet-name>
        <url-pattern>/run</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>EngineServlet</servlet-name>
        <url-pattern>/preview</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>EngineServlet</servlet-name>
        <url-pattern>/download</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>EngineServlet</servlet-name>
        <url-pattern>/parameter</url-pattern>
    </servlet-mapping>  

    <servlet-mapping>
        <servlet-name>EngineServlet</servlet-name>
        <url-pattern>/document</url-pattern>
    </servlet-mapping>  

    <servlet-mapping>
        <servlet-name>EngineServlet</servlet-name>
        <url-pattern>/output</url-pattern>
    </servlet-mapping>  
    
    <servlet-mapping>
        <servlet-name>EngineServlet</servlet-name>
        <url-pattern>/extract</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>60</session-timeout><!-- in minutes -->
        <cookie-config>
          <http-only>true</http-only>
          <secure>true</secure>
        </cookie-config>
        <tracking-mode>COOKIE</tracking-mode>
    </session-config>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
    </welcome-file-list>
</web-app>
