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.insert; 35 36 import fr.paris.lutece.portal.service.util.AppLogService; 37 38 import java.util.ArrayList; 39 import java.util.Collection; 40 import java.util.HashMap; 41 import java.util.List; 42 import java.util.Map; 43 44 /** 45 * Manager of the InsertServices (Insert + HTML). Responsible for (un)registering them. 46 */ 47 public final class InsertServiceManager 48 { 49 // ////////////////////////////////////////////////////////////////////////// 50 // Class attributes 51 52 /** Insert Service registry */ 53 private static Map<String, InsertService> _mapInsertServicesRegistry = new HashMap<>( ); 54 55 // ////////////////////////////////////////////////////////////////////////// 56 // Methods 57 58 /** 59 * Creates a new InsertServiceManager object 60 */ 61 private InsertServiceManager( ) 62 { 63 } 64 65 /** 66 * Registers a new Index Service 67 * 68 * @param is 69 * the service 70 */ 71 public static void registerInsertService( InsertService is ) 72 { 73 _mapInsertServicesRegistry.put( is.getId( ), is ); 74 AppLogService.info( "New Insert Service registered : {}", is.getId( ) ); 75 } 76 77 /** 78 * Unregisters a new Index Service 79 * 80 * @param is 81 * the service 82 */ 83 public static void unregisterInsertService( InsertService is ) 84 { 85 _mapInsertServicesRegistry.remove( is.getId( ) ); 86 AppLogService.info( "Service unregistered : {}", is.getId( ) ); 87 } 88 89 /** 90 * Returns all registered Insert services 91 * 92 * @return A collection containing all registered Insert services 93 */ 94 public static Collection<InsertService> getInsertServicesList( ) 95 { 96 ArrayList<InsertService> listServices = new ArrayList<>( ); 97 98 for ( InsertService service : _mapInsertServicesRegistry.values( ) ) 99 { 100 if ( service.isEnabled( ) ) 101 { 102 listServices.add( service ); 103 } 104 } 105 106 return listServices; 107 } 108 109 /** 110 * Get a particular Insert service 111 * 112 * @param strId 113 * Identifier of the seeked service 114 * @return the selected Insert service 115 */ 116 public static InsertService getInsertService( String strId ) 117 { 118 return _mapInsertServicesRegistry.get( strId ); 119 } 120 121 /** 122 * Returns the names of all registered Insert Service 123 * 124 * @return An enumeration containing the names of all registered Insert Service 125 */ 126 public static List<String> getInsertsLabels( ) 127 { 128 List<String> listInserts = new ArrayList<>( ); 129 130 for ( InsertService ls : getInsertServicesList( ) ) 131 { 132 listInserts.add( ls.getLabelKey( ) ); 133 } 134 135 return listInserts; 136 } 137 }