ReferenceList.java
- /*
- * Copyright (c) 2002-2022, City of Paris
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice
- * and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice
- * and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * License 1.0
- */
- package fr.paris.lutece.util;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Map.Entry;
- /**
- * This class provides the structure for a list of references values Each element includes a code and a name
- */
- public class ReferenceList extends ArrayList<ReferenceItem>
- {
- /**
- * Generated serialVersionUID
- */
- private static final long serialVersionUID = 5456351278712947650L;
- /**
- * Default constructor.
- */
- public ReferenceList( )
- {
- super( );
- }
- /**
- * Creates a new reference list with a specified initial capacity.
- *
- * @param nInitialCapacity
- * The initial capacity of the collection
- */
- public ReferenceList( int nInitialCapacity )
- {
- super( nInitialCapacity );
- }
- /**
- * This method adds a new element (code, name) to the list
- *
- * @param strCode
- * The code as a String
- * @param strName
- * The name corresponding to the code as a String
- */
- public void addItem( String strCode, String strName )
- {
- ReferenceItem item = new ReferenceItem( );
- item.setCode( strCode );
- item.setName( strName );
- add( item );
- }
- /**
- * This method converts the int code specified in parameter as a String and adds a new element (code, name) to the list
- *
- * @param nCode
- * The code to convert an add
- * @param strName
- * The name corresponding to the code as a String
- */
- public void addItem( int nCode, String strName )
- {
- ReferenceItem item = new ReferenceItem( );
- String strCode = String.valueOf( nCode );
- item.setCode( strCode );
- item.setName( strName );
- add( item );
- }
- /**
- * Converts a collection to a ReferenceList
- *
- * @param collection
- * The collection to convert
- * @param strCodeAttribute
- * The name of the code attribute. Ex : "id" to call getId()
- * @param strNameAttribute
- * The name of the code attribute. Ex : "name" to call getName()
- * @param bNumericCode
- * true if the code getter returns an Integer, false otherwise
- * @return The ReferenceList filled
- * @since v1.1
- */
- public static ReferenceList convert( Collection collection, String strCodeAttribute, String strNameAttribute, boolean bNumericCode )
- {
- ReferenceList list = new ReferenceList( );
- String strCodeGetter = "get" + Character.toUpperCase( strCodeAttribute.charAt( 0 ) ) + strCodeAttribute.substring( 1 );
- String strNameGetter = "get" + Character.toUpperCase( strNameAttribute.charAt( 0 ) ) + strNameAttribute.substring( 1 );
- String strCode;
- String strName;
- try
- {
- for ( Object o : collection )
- {
- // build getter method name
- if ( bNumericCode )
- {
- Integer nCode = (Integer) o.getClass( ).getMethod( strCodeGetter, (Class [ ]) null ).invoke( o, (Object [ ]) null );
- strCode = nCode.toString( );
- }
- else
- {
- strCode = (String) o.getClass( ).getMethod( strCodeGetter, (Class [ ]) null ).invoke( o, (Object [ ]) null );
- }
- strName = (String) o.getClass( ).getMethod( strNameGetter, (Class [ ]) null ).invoke( o, (Object [ ]) null );
- list.addItem( strCode, strName );
- }
- }
- catch( Exception ex )
- {
- return null;
- }
- return list;
- }
- /**
- * Convert a Map<String, String> into a ReferenceList
- *
- * @param map
- * the map to convert
- * @return the converted ReferenceList
- */
- public static ReferenceList convert( Map<String, String> map )
- {
- if ( map != null )
- {
- ReferenceList list = new ReferenceList( );
- for ( Entry<String, String> param : map.entrySet( ) )
- {
- list.addItem( param.getKey( ), param.getValue( ) );
- }
- return list;
- }
- return null;
- }
- /**
- * Convert the ReferenceList into a map
- *
- * @return the converted map
- */
- public Map<String, String> toMap( )
- {
- Map<String, String> map = new HashMap<>( );
- if ( !this.isEmpty( ) )
- {
- for ( ReferenceItem item : this )
- {
- map.put( item.getCode( ), item.getName( ) );
- }
- }
- return map;
- }
- /**
- * CheckItems when are selected
- *
- * @param valuesToCheck
- * The list of string
- */
- public void checkItems( String [ ] valuesToCheck )
- {
- for ( int i = 0; i < valuesToCheck.length; i++ )
- {
- for ( ReferenceItem item : this )
- {
- if ( item.getCode( ).equals( valuesToCheck [i] ) )
- {
- item.setChecked( true );
- }
- }
- }
- }
- }