Changeset 31942 in osm for applications/editors/josm/plugins/opendata
- Timestamp:
- 2016-01-05T02:53:20+01:00 (9 years ago)
- Location:
- applications/editors/josm/plugins/opendata
- Files:
-
- 2 deleted
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/opendata/README
r31940 r31942 18 18 19 19 - includes: several COTS, heavily truncated to fit only the plugin needs and reduce the JAR size: 20 - org/apache: two Apache COTS (Apache License 2.0, see LICENSE-2.0.txt) 21 - commons/collections: Apache Commons Collections 3.2.1 (used by jOpenDocument) 20 - org/apache: one Apache COTS (Apache License 2.0, see LICENSE-2.0.txt) 22 21 - poi: Apache POI 3.7 (Excel format support without styles, formulas and writing capabilities, used by the plugin itself) 23 22 - org/j7zip: J7zip 4.43alpha2 (7z archive read support, LGPL v2.1, see LGPL-2.1.txt) -
applications/editors/josm/plugins/opendata/includes/org/jopendocument/util/CollectionMap.java
r30340 r31942 18 18 import static java.util.Arrays.asList; 19 19 20 import java.util.ArrayList; 21 import java.util.Collection; 22 import java.util.Iterator; 23 import java.util.Map; 24 import java.util.Set; 25 26 import org.apache.commons.collections.MultiHashMap; 27 import org.apache.commons.collections.MultiMap; 28 import org.apache.commons.collections.map.MultiValueMap; 20 import org.apache.commons.collections4.multimap.HashSetValuedHashMap; 29 21 30 22 /** 31 * Une MultiMap qui permet de ne pas renvoyer <code>null</code>. De plus elle permet de choisir le 32 * type de Collection utilisé. 23 * Une MultiMap. 33 24 * 34 25 * @author ILM Informatique 8 sept. 2004 … … 37 28 */ 38 29 @SuppressWarnings({ "unchecked", "serial" }) 39 public class CollectionMap<K, V> extends MultiHashMap { 40 41 private static final int DEFAULT_CAPACITY = 16; 42 43 private final Class<? extends Collection<V>> collectionClass; 44 private final Collection<V> collectionSpecimen; 30 public class CollectionMap<K, V> extends HashSetValuedHashMap<K,V> { 45 31 46 32 /** 47 * Une nouvelle map avec ArrayList comme collection.33 * Une nouvelle map 48 34 */ 49 35 public CollectionMap() { 50 this(ArrayList.class);51 36 } 52 37 53 38 /** 54 * Une nouvelle map. <code>collectionClass</code> doit descendre de Collection, et posséder un 55 * constructeur prenant une Collection (c'est le cas de la majorité des classes de java.util). 56 * 57 * @param aCollectionClass le type de collection utilisé. 58 */ 59 public CollectionMap(Class aCollectionClass) { 60 this(aCollectionClass, DEFAULT_CAPACITY); 61 } 62 63 /** 64 * Une nouvelle map sans préciser le type de collection. Dans ce cas si vous voulez spécifier 65 * une collection surchargez {@link #createCollection(Collection)}. Ce constructeur est donc 66 * utile pour des raisons de performances (évite la réflexion nécessaire avec les autres). 39 * Une nouvelle map 67 40 * 68 41 * @param initialCapacity the initial capacity. 69 42 */ 70 43 public CollectionMap(final int initialCapacity) { 71 this((Class) null, initialCapacity);72 }73 74 public CollectionMap(Class aCollectionClass, final int initialCapacity) {75 44 super(initialCapacity); 76 this.collectionClass = aCollectionClass; 77 this.collectionSpecimen = null; 78 new MultiValueMap(); // TODO: use this class instead of deprecated MultiHashMap 79 } 80 81 public Collection<V> createCollection(Collection coll) { 82 if (this.collectionClass != null) 83 try { 84 if (coll == null) { 85 return this.collectionClass.newInstance(); 86 } else { 87 return this.collectionClass.getConstructor(new Class[] { Collection.class }).newInstance(new Object[] { coll }); 88 } 89 } catch (Exception e) { 90 throw new RuntimeException(e); 91 } 92 else if (this.collectionSpecimen != null) { 93 try { 94 final Collection<V> res = CopyUtils.copy(this.collectionSpecimen); 95 if (coll != null) 96 res.addAll(coll); 97 return res; 98 } catch (Exception e) { 99 throw ExceptionUtils.createExn(IllegalStateException.class, "clone() failed", e); 100 } 101 } else 102 return super.createCollection(coll); 103 } 104 105 /** 106 * Fusionne la MultiMap avec celle-ci. C'est à dire rajoute les valeurs de mm à la suite des 107 * valeurs de cette map (contrairement à putAll(Map) qui ajoute les valeurs de mm en tant que 108 * valeur scalaire et non en tant que collection). 109 * 110 * @param mm la MultiMap à fusionner. 111 */ 112 public void merge(MultiMap mm) { 113 // copied from super ctor 114 for (Iterator it = mm.entrySet().iterator(); it.hasNext();) { 115 final Map.Entry entry = (Map.Entry) it.next(); 116 Collection<V> coll = (Collection<V>) entry.getValue(); 117 Collection newColl = createCollection(coll); 118 this.putAll(entry.getKey(), newColl); 119 } 120 } 121 122 /** 123 * Copies all of the mappings from the specified map to this map. This method is equivalent to 124 * {@link MultiHashMap#MultiHashMap(Map)}. NOTE: cannot use Map<? extends K, ? extends V> since 125 * java complains (MultiHashMap not being generic). 126 * 127 * @param m mappings to be stored in this map 128 */ 129 @Override 130 public void putAll(Map mapToCopy) { 131 if (mapToCopy instanceof MultiMap) { 132 this.merge((MultiMap) mapToCopy); 133 } else { 134 super.putAll(mapToCopy); 135 } 136 } 45 } 137 46 138 47 public boolean putAll(K key, V... values) { 139 48 return this.putAll(key, asList(values)); 140 49 } 141 142 // generics : MultiHashMap is not generic but it extends HashMap who does143 // so just override144 145 @Override146 public Set<Map.Entry<K, Collection<V>>> entrySet() {147 return super.entrySet();148 }149 150 @Override151 public Set<K> keySet() {152 return super.keySet();153 }154 155 @Override156 public Collection<V> values() {157 return super.values();158 }159 50 } -
applications/editors/josm/plugins/opendata/includes/org/jopendocument/util/CollectionUtils.java
r28000 r31942 21 21 import java.util.RandomAccess; 22 22 23 import org.jopendocument.util.cc.ITransformer; 23 import org.apache.commons.collections4.Transformer; 24 import org.apache.commons.collections4.TransformerUtils; 24 25 25 26 /** … … 28 29 * @author ILM Informatique 30 sept. 2004 29 30 */ 30 public class CollectionUtils extends org.apache.commons.collections.CollectionUtils{31 public class CollectionUtils { 31 32 32 33 /** … … 40 41 * @return la chaine composée de chacun des éléments séparés par <code>sep</code>. 41 42 */ 42 static public final <E> String join(final Collection<E> c, final String sep, final ITransformer<? super E, ?> tf) {43 static public final <E> String join(final Collection<E> c, final String sep, final Transformer<? super E, ?> tf) { 43 44 if (c.size() == 0) 44 45 return ""; … … 49 50 final int stop = c.size() - 1; 50 51 for (int i = 0; i < stop; i++) { 51 res.append(tf.transform Checked(list.get(i)));52 res.append(tf.transform(list.get(i))); 52 53 res.append(sep); 53 54 54 55 } 55 res.append(tf.transform Checked(list.get(stop)));56 res.append(tf.transform(list.get(stop))); 56 57 } else { 57 58 final Iterator<E> iter = c.iterator(); 58 59 while (iter.hasNext()) { 59 60 final E elem = iter.next(); 60 res.append(tf.transform Checked(elem));61 res.append(tf.transform(elem)); 61 62 if (iter.hasNext()) 62 63 res.append(sep); … … 76 77 */ 77 78 static public <T> String join(Collection<T> c, String sep) { 78 return join(c, sep, org.jopendocument.util.cc.Transformer.<T>nopTransformer());79 return join(c, sep, TransformerUtils.<T>nopTransformer()); 79 80 } 80 81 }
Note:
See TracChangeset
for help on using the changeset viewer.