1 44 45 package org.jfree.xml.factory.objects; 46 47 import java.util.ArrayList ; 48 import java.util.Iterator ; 49 50 import org.jfree.util.Configuration; 51 52 57 public class ClassFactoryCollector extends ClassFactoryImpl { 58 59 60 private ArrayList factories; 61 62 65 public ClassFactoryCollector() { 66 this.factories = new ArrayList (); 67 } 68 69 74 public void addFactory(final ClassFactory factory) { 75 this.factories.add(factory); 76 if (getConfig() != null) { 77 factory.configure(getConfig()); 78 } 79 } 80 81 86 public Iterator getFactories() { 87 return this.factories.iterator(); 88 } 89 90 97 public ObjectDescription getDescriptionForClass(final Class c) { 98 for (int i = 0; i < this.factories.size(); i++) { 99 final ClassFactory f = (ClassFactory) this.factories.get(i); 100 final ObjectDescription od = f.getDescriptionForClass(c); 101 if (od != null) { 102 return od; 103 } 104 } 105 return super.getDescriptionForClass(c); 106 } 107 108 115 public ObjectDescription getSuperClassObjectDescription 116 (final Class d, ObjectDescription knownSuperClass) { 117 for (int i = 0; i < this.factories.size(); i++) { 118 final ClassFactory f = (ClassFactory) this.factories.get(i); 119 final ObjectDescription od = f.getSuperClassObjectDescription(d, knownSuperClass); 120 if (od != null) { 121 if (knownSuperClass == null) { 122 knownSuperClass = od; 123 } 124 else { 125 if (getComparator().isComparable(knownSuperClass.getObjectClass(), 126 od.getObjectClass())) { 127 if (getComparator().compare(knownSuperClass.getObjectClass(), 128 od.getObjectClass()) < 0) { 129 knownSuperClass = od; 130 } 131 } 132 } 133 } 134 } 135 return super.getSuperClassObjectDescription(d, knownSuperClass); 136 } 137 138 143 public Iterator getRegisteredClasses() { 144 final ArrayList list = new ArrayList (); 145 for (int i = 0; i < this.factories.size(); i++) { 146 final ClassFactory f = (ClassFactory) this.factories.get(i); 147 final Iterator iterator = f.getRegisteredClasses(); 148 while (iterator.hasNext()) { 149 list.add(iterator.next()); 150 } 151 } 152 return list.iterator(); 153 } 154 155 164 public void configure(final Configuration config) { 165 if (getConfig() != null) { 166 return; 168 } 169 super.configure(config); 170 171 final Iterator it = this.factories.iterator(); 172 while (it.hasNext()) { 173 final ClassFactory od = (ClassFactory) it.next(); 174 od.configure(config); 175 } 176 } 177 178 185 public boolean equals(final Object o) { 186 if (this == o) { 187 return true; 188 } 189 if (!(o instanceof ClassFactoryCollector)) { 190 return false; 191 } 192 if (!super.equals(o)) { 193 return false; 194 } 195 196 final ClassFactoryCollector classFactoryCollector = (ClassFactoryCollector) o; 197 198 if (!this.factories.equals(classFactoryCollector.factories)) { 199 return false; 200 } 201 202 return true; 203 } 204 205 210 public int hashCode() { 211 int result = super.hashCode(); 212 result = 29 * result + this.factories.hashCode(); 213 return result; 214 } 215 } 216 | Popular Tags |