ImageResourceManager.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.service.image;

  35. import fr.paris.lutece.portal.service.util.AppLogService;
  36. import fr.paris.lutece.util.url.UrlItem;

  37. import java.util.HashMap;
  38. import java.util.Map;

  39. import org.apache.commons.fileupload.FileItem;

  40. /**
  41.  * ImageResourceManager
  42.  */
  43. public final class ImageResourceManager
  44. {
  45.     /** resource type registry */
  46.     private static Map<String, ImageResourceProvider> _mapResourceTypes = new HashMap<>( );
  47.     public static final String IMAGE_SERVLET_BASE_URL = "image";

  48.     /** Private constructor */
  49.     private ImageResourceManager( )
  50.     {
  51.     }

  52.     /**
  53.      * Registers a new resource type
  54.      *
  55.      * @param resourceProvider
  56.      *            the resource type to register
  57.      */
  58.     public static void registerProvider( ImageResourceProvider resourceProvider )
  59.     {
  60.         _mapResourceTypes.put( resourceProvider.getResourceTypeId( ), resourceProvider );
  61.         AppLogService.info( "New ImageResourceType registered : {}", resourceProvider.getClass( ).getName( ) );
  62.     }

  63.     /**
  64.      * Gets an image resource
  65.      *
  66.      * @param strResourceTypeId
  67.      *            The resource's type ID
  68.      * @param nResourceId
  69.      *            The resource ID
  70.      * @return ImageResource
  71.      */
  72.     public static ImageResource getImageResource( String strResourceTypeId, int nResourceId )
  73.     {
  74.         ImageResourceProvider resourceProvider = _mapResourceTypes.get( strResourceTypeId );

  75.         if ( resourceProvider != null )
  76.         {
  77.             return resourceProvider.getImageResource( nResourceId );
  78.         }

  79.         return null;
  80.     }
  81.    
  82.     /**
  83.      * Add Image Resource
  84.      * @param strResourceTypeId
  85.      * @param fileItem
  86.      * @return Image Resource Key
  87.      */
  88.     public static String addImageResource( String strResourceTypeId, FileItem fileItem )
  89.     {
  90.         ImageResourceProvider resourceProvider = _mapResourceTypes.get( strResourceTypeId );

  91.         if ( resourceProvider != null )
  92.         {
  93.             return resourceProvider.addImageResource( fileItem);
  94.         }

  95.         return null;
  96.     }
  97.    
  98.     /**
  99.      * Get Image URL
  100.      * @param strResourceTypeId
  101.      * @param nResourceId
  102.      * @return the URL
  103.      */
  104.     public static String getImageUrl( String strResourceTypeId, int nResourceId )
  105.     {
  106.         UrlItem item = new UrlItem( IMAGE_SERVLET_BASE_URL );
  107.         item.addParameter( ImageServlet.PARAMETER_ID, nResourceId );
  108.         item.addParameter( ImageServlet.PARAMETER_RESOURCE_TYPE, strResourceTypeId );
  109.         return item.getUrl( );
  110.        
  111.     }
  112. }