View Javadoc
1 /* 2 * Copyright (c) 2003, Henri Yandell 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or 6 * without modification, are permitted provided that the 7 * following conditions are met: 8 * 9 * + Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * + Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * + Neither the name of Genjava-Core nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * 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 OWNER 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 package com.generationjava.collections; 33 34 import java.util.HashMap; 35 import java.util.Iterator; 36 import java.util.List; 37 import java.util.ArrayList; 38 39 import org.apache.commons.collections.IteratorUtils; 40 41 /*** 42 * Take an enumeration of different types of objects. 43 * Pass them into this object and then get them out by classname. 44 */ 45 public class IteratorGrouper implements Grouper { 46 47 static private Iterator nullIterator = IteratorUtils.EMPTY_ITERATOR; 48 49 private HashMap map = new HashMap(); 50 51 public IteratorGrouper(Iterator iterator) { 52 addIterator(iterator); 53 } 54 55 /*** 56 * Add this enumeration to the grouper. 57 */ 58 public void addIterator(Iterator iterator) { 59 while(iterator.hasNext()) { 60 Object obj = iterator.next(); 61 String classname = obj.getClass().getName(); 62 Object list = map.get(classname); 63 if(list == null) { 64 list = new ArrayList(); 65 map.put(classname, list); 66 } 67 ((List)list).add(obj); 68 } 69 } 70 71 /*** 72 * Get an enumeration of all the Classes of type classname. 73 */ 74 public Iterator iterateGroup(String classname) { 75 Object list = map.get(classname); 76 if(list instanceof List) { 77 return ((List)list).iterator(); 78 } else { 79 return nullIterator; 80 } 81 } 82 83 /*** 84 * Enumerate over the types this group contains. 85 */ 86 public Iterator iterateTypes() { 87 return map.keySet().iterator(); 88 } 89 90 }

This page was automatically generated by Maven