1 18 package org.apache.tools.ant.types.resources; 19 20 import java.util.List ; 21 import java.util.Iterator ; 22 import java.util.ArrayList ; 23 import java.util.Collection ; 24 import java.util.Collections ; 25 26 import org.apache.tools.ant.types.Resource; 27 import org.apache.tools.ant.types.ResourceCollection; 28 29 33 public class Union extends BaseResourceCollectionContainer { 34 35 40 public static Union getInstance(ResourceCollection rc) { 41 return rc instanceof Union ? (Union) rc : new Union(rc); 42 } 43 44 47 public Union() { 48 } 49 50 54 public Union(ResourceCollection rc) { 55 add(rc); 56 } 57 58 63 public String [] list() { 64 if (isReference()) { 65 return ((Union) getCheckedRef()).list(); 66 } 67 Collection result = getCollection(true); 68 return (String []) (result.toArray(new String [result.size()])); 69 } 70 71 75 public Resource[] listResources() { 76 if (isReference()) { 77 return ((Union) getCheckedRef()).listResources(); 78 } 79 Collection result = getCollection(); 80 return (Resource[]) (result.toArray(new Resource[result.size()])); 81 } 82 83 87 protected Collection getCollection() { 88 return getCollection(false); 89 } 90 91 97 protected Collection getCollection(boolean asString) { 98 List rc = getResourceCollections(); 99 if (rc.isEmpty()) { 100 return Collections.EMPTY_LIST; 101 } 102 ArrayList union = new ArrayList (rc.size() * 2); 104 for (Iterator rcIter = rc.iterator(); rcIter.hasNext();) { 105 for (Iterator r = nextRC(rcIter).iterator(); r.hasNext();) { 106 Object o = r.next(); 107 if (asString) { 108 o = o.toString(); 109 } 110 if (!(union.contains(o))) { 111 union.add(o); 112 } 113 } 114 } 115 return union; 116 } 117 118 private static ResourceCollection nextRC(Iterator i) { 119 return (ResourceCollection) i.next(); 120 } 121 } 122 123 | Popular Tags |