View Javadoc
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.dila.utils;
35  
36  import fr.paris.lutece.portal.service.util.AppPropertiesService;
37  import fr.paris.lutece.util.ReferenceList;
38  
39  import org.apache.commons.beanutils.BeanUtils;
40  
41  import org.apache.log4j.Logger;
42  
43  import java.lang.reflect.InvocationTargetException;
44  
45  import java.util.Arrays;
46  import java.util.List;
47  
48  
49  /**
50   * Utilitaire servant à la manipulation des listes
51   *
52   */
53  public final class ListUtils
54  {
55      private static final Logger LOGGER = Logger.getLogger( ListUtils.class );
56      private static final String PROPERTY_LIST_SEPARATOR = ";";
57  
58      /**
59       * Instantiates a new list utils.
60       */
61      private ListUtils(  )
62      {
63          // does nothing
64      }
65  
66      /**
67       * Return.
68       *
69       * @param propertyKey the property key
70       * @return the property list
71       */
72      public static List<String> getPropertyList( String propertyKey )
73      {
74          String property = AppPropertiesService.getProperty( propertyKey );
75  
76          if ( property != null )
77          {
78              String[] items = property.split( PROPERTY_LIST_SEPARATOR );
79  
80              if ( items != null )
81              {
82                  return Arrays.asList( items );
83              }
84          }
85  
86          return null;
87      }
88  
89      /**
90       * Convert a {@link List} to a {@link ReferenceList}
91       *
92       * @param list
93       *            list to convert
94       * @param key
95       *            the property to use as a key for {@link ReferenceList}
96       * @param value
97       *            the property to use as a value for {@link ReferenceList}
98       * @param firstItem
99       *            the first item in the {@link ReferenceList}
100      * @return the {@link ReferenceList} with data from given list
101      */
102     public static ReferenceList toReferenceList( List<?> list, String key, String value, String firstItem )
103     {
104         ReferenceList referenceList = new ReferenceList(  );
105         String valueKey;
106         String valueValue;
107 
108         try
109         {
110             if ( firstItem != null )
111             {
112                 referenceList.addItem( "-1", firstItem );
113             }
114 
115             for ( Object element : list )
116             {
117                 valueKey = BeanUtils.getSimpleProperty( element, key );
118                 valueValue = BeanUtils.getSimpleProperty( element, value );
119                 referenceList.addItem( valueKey, valueValue );
120             }
121         }
122         catch ( IllegalAccessException e )
123         {
124             LOGGER.warn( "Error creating a combo list : " + e.getMessage(  ), e );
125         }
126         catch ( InvocationTargetException e )
127         {
128             LOGGER.warn( "Error creating a combo list : " + e.getMessage(  ), e );
129         }
130         catch ( NoSuchMethodException e )
131         {
132             LOGGER.warn( "Error creating a combo list : " + e.getMessage(  ), e );
133         }
134         catch ( Exception e )
135         {
136             LOGGER.warn( "Error creating a combo list : " + e.getMessage(  ), e );
137         }
138 
139         return referenceList;
140     }
141 }