1 /* 2 * Copyright (c) 2002-2014, Mairie de 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.plugins.folderlisting.service; 35 36 import fr.paris.lutece.portal.service.resource.Resource; 37 import fr.paris.lutece.portal.service.resource.ResourceService; 38 import fr.paris.lutece.util.ReferenceList; 39 40 import java.util.ArrayList; 41 import java.util.List; 42 43 44 public class FolderService extends ResourceService 45 { 46 //////////////////////////////////////////////////////////////////////////////// 47 // Constants 48 private static FolderService _singleton = new FolderService( ); 49 private static final String PROPERTY_NAME = "folderlisting.service.name"; 50 private static final String PROPERTY_CACHE = "folderlisting.service.cache"; 51 private static final String PROPERTY_LOADERS = "folderlisting.service.loaders"; 52 53 /** 54 * Private constructor 55 */ 56 private FolderService( ) 57 { 58 super( ); 59 setCacheKey( PROPERTY_CACHE ); 60 setNameKey( PROPERTY_NAME ); 61 } 62 63 /** 64 * Initialize the Folder service 65 * 66 */ 67 public void init( ) 68 { 69 Folder.init( ); 70 } 71 72 /** 73 * Returns the instance of the singleton 74 * 75 * @return The instance of the singleton 76 */ 77 public static FolderService getInstance( ) 78 { 79 return _singleton; 80 } 81 82 /** 83 * Returns the Folder 84 * 85 * @param strFolderName The name of the folder 86 * 87 * @return the Folder 88 */ 89 public Folder getFolder( String strFolderName ) 90 { 91 return (Folder) getResource( strFolderName ); 92 } 93 94 /** 95 * Returns a list of all folders 96 * 97 * @return The list of all folders 98 */ 99 public ReferenceList getFoldersList( ) 100 { 101 ReferenceList list = new ReferenceList( ); 102 103 for ( Resource resource : getResources( ) ) 104 { 105 Folder folder = (Folder) resource; 106 list.addItem( folder.getId( ), folder.getName( ) ); 107 } 108 109 return list; 110 } 111 112 /** 113 * Returns a Collection of all folders 114 * 115 * @return The list of all folders 116 */ 117 public List<Folder> getFoldersCollection( ) 118 { 119 List<Folder> list = new ArrayList<Folder>( ); 120 121 for ( Resource resource : getResources( ) ) 122 { 123 Folder folder = (Folder) resource; 124 list.add( folder ); 125 } 126 127 return list; 128 } 129 130 /** 131 * Returns the property key that contains the loaders list 132 * 133 * @return A property key 134 */ 135 protected String getLoadersProperty( ) 136 { 137 return PROPERTY_LOADERS; 138 } 139 }