CollectionUtil.java |
1 /** 2 * Distribution License: 3 * JSword is free software; you can redistribute it and/or modify it under 4 * the terms of the GNU Lesser General Public License, version 2.1 or later 5 * as published by the Free Software Foundation. This program is distributed 6 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even 7 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 * See the GNU Lesser General Public License for more details. 9 * 10 * The License is available on the internet at: 11 * http://www.gnu.org/copyleft/lgpl.html 12 * or by writing to: 13 * Free Software Foundation, Inc. 14 * 59 Temple Place - Suite 330 15 * Boston, MA 02111-1307, USA 16 * 17 * © CrossWire Bible Society, 2005 - 2016 18 * 19 */ 20 package org.crosswire.common.util; 21 22 import java.io.IOException; 23 import java.net.URI; 24 import java.util.ArrayList; 25 import java.util.Enumeration; 26 import java.util.HashSet; 27 import java.util.List; 28 import java.util.Properties; 29 import java.util.Set; 30 31 /** 32 * Some utils to help work with Collections. 33 * 34 * @see gnu.lgpl.License The GNU Lesser General Public License for details. 35 * @author Joe Walker 36 */ 37 public final class CollectionUtil { 38 /** 39 * Dont do this 40 */ 41 private CollectionUtil() { 42 } 43 44 /** 45 * Create a List from an Iterable. 46 * 47 * @param <T> The type of data for the list 48 * @param it The source of data for the list 49 * @return List 50 */ 51 public static <T> List<T> createList(Iterable<T> it) { 52 List<T> reply = new ArrayList<T>(); 53 for (T obj : it) { 54 reply.add(obj); 55 } 56 57 return reply; 58 } 59 60 /** 61 * Create a Set from an Iterable. 62 * 63 * @param <T> The type of data for the list 64 * @param it The source of data for the list 65 * @return the created set 66 */ 67 public static <T> Set<T> createSet(Iterable<T> it) { 68 Set<T> reply = new HashSet<T>(); 69 for (T obj : it) { 70 reply.add(obj); 71 } 72 73 return reply; 74 } 75 76 /** 77 * Convert a <code>Properties</code> into a <code>Map</code>. 78 * 79 * @param prop The Properties to convert 80 * @return The map 81 */ 82 public static PropertyMap properties2Map(Properties prop) { 83 PropertyMap propMap = new PropertyMap(); 84 for (Enumeration<Object> e = prop.keys(); e.hasMoreElements(); ) { 85 Object k = e.nextElement(); 86 Object v = prop.get(k); 87 if (k instanceof String && v instanceof String) { 88 propMap.put((String) k, (String) v); 89 } 90 } 91 return propMap; 92 } 93 94 /** 95 * Convert a <code>Properties</code> located at <code>propURI</code> into a 96 * <code>Map</code>. 97 * 98 * @param propUri 99 * The URI of the Properties to convert 100 * @return The map 101 * @throws IOException If there is a problem with getting the properties from the URI 102 */ 103 public static PropertyMap properties2Map(URI propUri) throws IOException { 104 return NetUtil.loadProperties(propUri); 105 } 106 107 } 108