StatisticsInclude.java

  1. /*
  2.  * Copyright (c) 2002-2022, City of Paris
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  *
  9.  *  1. Redistributions of source code must retain the above copyright notice
  10.  *     and the following disclaimer.
  11.  *
  12.  *  2. Redistributions in binary form must reproduce the above copyright notice
  13.  *     and the following disclaimer in the documentation and/or other materials
  14.  *     provided with the distribution.
  15.  *
  16.  *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
  17.  *     contributors may be used to endorse or promote products derived from
  18.  *     this software without specific prior written permission.
  19.  *
  20.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
  24.  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27.  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28.  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30.  * POSSIBILITY OF SUCH DAMAGE.
  31.  *
  32.  * License 1.0
  33.  */
  34. package fr.paris.lutece.portal.web.includes;

  35. import fr.paris.lutece.portal.service.content.PageData;
  36. import fr.paris.lutece.portal.service.includes.PageInclude;
  37. import fr.paris.lutece.portal.service.template.AppTemplateService;
  38. import fr.paris.lutece.portal.service.util.AppPropertiesService;
  39. import fr.paris.lutece.util.html.HtmlTemplate;

  40. import java.util.HashMap;
  41. import java.util.Map;

  42. import javax.servlet.http.HttpServletRequest;

  43. /**
  44.  * This Page Include
  45.  */
  46. public class StatisticsInclude implements PageInclude
  47. {
  48.     private static final String PROPERTY_STATISTICAL_SITE_ID = "lutece.statistical.site.id";
  49.     private static final String PROPERTY_STATISTICAL_INCLUDE_ENABLE = "lutece.statistical.include.enable";
  50.     private static final String PROPERTY_STATISTICAL_INCLUDE_TEMPLATE = "lutece.statistical.include.template";
  51.     private static final String PROPERTY_STATISTICAL_INCLUDE_HEAD_TEMPLATE = "lutece.statistical.include.template.head";
  52.     private static final String PROPERTY_STATISTICAL_SERVER_URL = "lutece.statistical.server.url";
  53.     private static final String MARK_STATISTICAL_INCLUDE = "statistical_include";
  54.     private static final String MARK_STATISTICAL_INCLUDE_HEAD = "statistical_include_head";
  55.     private static final String MARK_STATISTICAL_SITE_ID = "statistical_site_id";
  56.     private static final String MARK_STATISTICAL_SERVER_URL = "statistical_server_url";

  57.     /**
  58.      * Substitue specific Freemarker markers in the page template.
  59.      *
  60.      * @param rootModel
  61.      *            the HashMap containing markers to substitute
  62.      * @param data
  63.      *            A PageData object containing applications data
  64.      * @param nMode
  65.      *            The current mode
  66.      * @param request
  67.      *            The HTTP request
  68.      */
  69.     public void fillTemplate( Map<String, Object> rootModel, PageData data, int nMode, HttpServletRequest request )
  70.     {
  71.         String strStatisticalIncludeHead;
  72.         String strStatisticalInclude;

  73.         if ( request != null )
  74.         {
  75.             String strStatisticalSiteId = AppPropertiesService.getProperty( PROPERTY_STATISTICAL_SITE_ID, "1" );
  76.             String strStatisticalIncludeEnable = AppPropertiesService.getProperty( PROPERTY_STATISTICAL_INCLUDE_ENABLE );
  77.             String strStatisticalServerUrl = AppPropertiesService.getProperty( PROPERTY_STATISTICAL_SERVER_URL );

  78.             if ( ( strStatisticalIncludeEnable != null ) && ( strStatisticalIncludeEnable.equalsIgnoreCase( "true" ) ) )
  79.             {
  80.                 String strStatisticalIncludeTemplateHead = AppPropertiesService.getProperty( PROPERTY_STATISTICAL_INCLUDE_HEAD_TEMPLATE );

  81.                 Map<String, String> model = new HashMap<>( );
  82.                 model.put( MARK_STATISTICAL_SITE_ID, strStatisticalSiteId );
  83.                 model.put( MARK_STATISTICAL_SERVER_URL, strStatisticalServerUrl );

  84.                 HtmlTemplate tHead = AppTemplateService.getTemplate( strStatisticalIncludeTemplateHead, request.getLocale( ), model );
  85.                 strStatisticalIncludeHead = tHead.getHtml( );

  86.                 String strStatisticalIncludeTemplate = AppPropertiesService.getProperty( PROPERTY_STATISTICAL_INCLUDE_TEMPLATE );
  87.                 HtmlTemplate t = AppTemplateService.getTemplate( strStatisticalIncludeTemplate, request.getLocale( ), model );
  88.                 strStatisticalInclude = t.getHtml( );
  89.             }
  90.             else
  91.             {
  92.                 // markers are defaulted to empty string to avoid freemarker errors
  93.                 strStatisticalIncludeHead = "";
  94.                 strStatisticalInclude = "";
  95.             }
  96.         }
  97.         else
  98.         {
  99.             // markers are defaulted to empty string to avoid freemarker errors
  100.             strStatisticalIncludeHead = "";
  101.             strStatisticalInclude = "";
  102.         }

  103.         rootModel.put( MARK_STATISTICAL_INCLUDE_HEAD, strStatisticalIncludeHead );
  104.         rootModel.put( MARK_STATISTICAL_INCLUDE, strStatisticalInclude );
  105.     }
  106. }