![JAR search and dependency download from the Maven repository](/logo.png)
net.sf.javagimmicks.collections.transformer.TransformerUtils Maven / Gradle / Ivy
package net.sf.javagimmicks.collections.transformer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
import net.sf.javagimmicks.collections.Ring;
import net.sf.javagimmicks.collections.RingCursor;
import net.sf.javagimmicks.transform.BidiTransformer;
import net.sf.javagimmicks.transform.Transformer;
/**
* This class is the central entry point to the JavaGimmicks transforming
* collections API by providing decorator- and generator methods for many
* transforming types.
*
* A more detailed description of the API can be found at in the package
* description {@link net.sf.javagimmicks.collections.transformer}.
*
* @see net.sf.javagimmicks.collections.transformer
* @author Michael Scholz
*/
@SuppressWarnings("deprecation")
public class TransformerUtils
{
private TransformerUtils()
{}
/**
* Wraps a new transforming {@link Comparator} using the given
* {@link Transformer} around a given {@link Comparator}.
*
* @param comparator
* the {@link Comparator} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link Comparator}
*/
public static Comparator super T> decorate(final Comparator super F> comparator,
final Transformer transformer)
{
return new TransformingComparator(comparator, transformer);
}
/**
* Wraps a new transforming {@link Iterator} using the given
* {@link Transformer} around a given {@link Iterator}.
*
* For a list of available operations see package description.
*
* @param iterator
* the {@link Iterator} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link Iterator}
*/
public static Iterator decorate(final Iterator iterator, final Transformer transformer)
{
return new TransformingIterator(iterator, transformer);
}
/**
* Wraps a new transforming {@link ListIterator} using the given
* {@link Transformer} around a given {@link ListIterator}.
*
* For a list of available operations see package description.
*
* @param iterator
* the {@link ListIterator} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link ListIterator}
*/
public static ListIterator decorate(final ListIterator iterator, final Transformer transformer)
{
return new TransformingListIterator(iterator, transformer);
}
/**
* Wraps a new transforming {@link ListIterator} using the given
* {@link BidiTransformer} around a given {@link ListIterator}.
*
* For a list of available operations see package description.
*
* @param iterator
* the {@link ListIterator} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link ListIterator}
*/
public static ListIterator decorate(final ListIterator iterator, final BidiTransformer transformer)
{
return new BidiTransformingListIterator(iterator, transformer);
}
/**
* Wraps a new transforming {@link Collection} using the given
* {@link Transformer} around a given {@link Collection}.
*
* For a list of available operations see package description.
*
* @param collection
* the {@link Collection} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link Collection}
*/
public static Collection decorate(final Collection collection, final Transformer transformer)
{
return new TransformingCollection(collection, transformer);
}
/**
* Wraps a new transforming {@link Collection} using the given
* {@link BidiTransformer} around a given {@link Collection}.
*
* For a list of available operations see package description.
*
* @param collection
* the {@link Collection} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link Collection}
*/
public static Collection decorate(final Collection collection, final BidiTransformer transformer)
{
return new BidiTransformingCollection(collection, transformer);
}
/**
* Wraps a new transforming {@link Set} using the given {@link Transformer}
* around a given {@link Set}.
*
* For a list of available operations see package description.
*
* @param set
* the {@link Set} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link Set}
*/
public static Set decorate(final Set set, final Transformer transformer)
{
return new TransformingSet(set, transformer);
}
/**
* Wraps a new transforming {@link Set} using the given
* {@link BidiTransformer} around a given {@link Set}.
*
* For a list of available operations see package description.
*
* @param set
* the {@link Set} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link Set}
*/
public static Set decorate(final Set set, final BidiTransformer transformer)
{
return new BidiTransformingSet(set, transformer);
}
/**
* Wraps a new transforming {@link SortedSet} using the given
* {@link Transformer} around a given {@link SortedSet}.
*
* For a list of available operations see package description.
*
* @param set
* the {@link SortedSet} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link SortedSet}
*/
public static SortedSet decorate(final SortedSet set, final Transformer transformer)
{
return new TransformingSortedSet(set, transformer);
}
/**
* Wraps a new transforming {@link SortedSet} using the given
* {@link BidiTransformer} around a given {@link SortedSet}.
*
* For a list of available operations see package description.
*
* @param set
* the {@link SortedSet} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link SortedSet}
*/
public static SortedSet decorate(final SortedSet set, final BidiTransformer transformer)
{
return new BidiTransformingSortedSet(set, transformer);
}
/**
* Wraps a new transforming {@link NavigableSet} using the given
* {@link Transformer} around a given {@link NavigableSet}.
*
* For a list of available operations see package description.
*
* @param set
* the {@link NavigableSet} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link NavigableSet}
*/
public static NavigableSet decorate(final NavigableSet set, final Transformer transformer)
{
return new TransformingNavigableSet(set, transformer);
}
/**
* Wraps a new transforming {@link NavigableSet} using the given
* {@link BidiTransformer} around a given {@link NavigableSet}.
*
* For a list of available operations see package description.
*
* @param set
* the {@link NavigableSet} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link NavigableSet}
*/
public static NavigableSet decorate(final NavigableSet set, final BidiTransformer transformer)
{
return new BidiTransformingNavigableSet(set, transformer);
}
/**
* Wraps a new transforming {@link List} using the given {@link Transformer}
* around a given {@link List}.
*
* For a list of available operations see package description.
*
* @param list
* the {@link List} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link List}
*/
public static List decorate(final List list, final Transformer transformer)
{
return new TransformingList(list, transformer);
}
/**
* Wraps a new transforming {@link List} using the given
* {@link BidiTransformer} around a given {@link List}.
*
* For a list of available operations see package description.
*
* @param list
* the {@link List} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link List}
*/
public static List decorate(final List list, final BidiTransformer transformer)
{
return new BidiTransformingList(list, transformer);
}
/**
* Wraps a new key-transforming {@link Map} using the given
* {@link Transformer} around a given {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the key-transforming wrapped {@link Map}
*/
public static Map decorateKeyBased(final Map map, final Transformer transformer)
{
return new KeyTransformingMap(map, transformer);
}
/**
* Wraps a new key-transforming {@link Map} using the given
* {@link BidiTransformer} around a given {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the key-transforming wrapped {@link Map}
*/
public static Map decorateKeyBased(final Map map,
final BidiTransformer transformer)
{
return new KeyBidiTransformingMap(map, transformer);
}
/**
* Wraps a new key-transforming {@link SortedMap} using the given
* {@link Transformer} around a given {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the key-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorateKeyBased(final SortedMap map,
final Transformer transformer)
{
return new KeyTransformingSortedMap(map, transformer);
}
/**
* Wraps a new key-transforming {@link SortedMap} using the given
* {@link BidiTransformer} around a given {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the key-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorateKeyBased(final SortedMap map,
final BidiTransformer transformer)
{
return new KeyBidiTransformingSortedMap(map, transformer);
}
/**
* Wraps a new key-transforming {@link NavigableMap} using the given
* {@link Transformer} around a given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the key-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorateKeyBased(final NavigableMap map,
final Transformer transformer)
{
return new KeyTransformingNavigableMap(map, transformer);
}
/**
* Wraps a new key-transforming {@link NavigableMap} using the given
* {@link BidiTransformer} around a given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the key-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorateKeyBased(final NavigableMap map,
final BidiTransformer transformer)
{
return new KeyBidiTransformingNavigableMap(map, transformer);
}
/**
* Wraps a new value-transforming {@link Map} using the given
* {@link Transformer} around a given {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the value-transforming wrapped {@link Map}
*/
public static Map decorateValueBased(final Map map,
final Transformer transformer)
{
return new ValueTransformingMap(map, transformer);
}
/**
* Wraps a new value-transforming {@link Map} using the given
* {@link BidiTransformer} around a given {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the value-transforming wrapped {@link Map}
*/
public static Map decorateValueBased(final Map map,
final BidiTransformer transformer)
{
return new ValueBidiTransformingMap(map, transformer);
}
/**
* Wraps a new value-transforming {@link SortedMap} using the given
* {@link Transformer} around a given {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the value-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorateValueBased(final SortedMap map,
final Transformer transformer)
{
return new ValueTransformingSortedMap(map, transformer);
}
/**
* Wraps a new value-transforming {@link SortedMap} using the given
* {@link BidiTransformer} around a given {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the value-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorateValueBased(final SortedMap map,
final BidiTransformer transformer)
{
return new ValueBidiTransformingSortedMap(map, transformer);
}
/**
* Wraps a new value-transforming {@link NavigableMap} using the given
* {@link Transformer} around a given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the value-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorateValueBased(final NavigableMap map,
final Transformer transformer)
{
return new ValueTransformingNavigableMap(map, transformer);
}
/**
* Wraps a new value-transforming {@link NavigableMap} using the given
* {@link BidiTransformer} around a given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the value-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorateValueBased(final NavigableMap map,
final BidiTransformer transformer)
{
return new ValueBidiTransformingNavigableMap(map, transformer);
}
/**
* Wraps a new key- and value-transforming {@link Map} using the given key-
* {@link Transformer} and value-{@link Transformer} around a given
* {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param keyTransformer
* the key-{@link Transformer} to used for wrapping
* @param valueTransformer
* the key-{@link Transformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link Map}
*/
public static Map decorate(final Map map, final Transformer keyTransformer,
final Transformer valueTransformer)
{
final Map valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link Map} using the given key-
* {@link BidiTransformer} and value-{@link Transformer} around a given
* {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param keyTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @param valueTransformer
* the key-{@link Transformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link Map}
*/
public static Map decorate(final Map map,
final BidiTransformer keyTransformer, final Transformer valueTransformer)
{
final Map valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link Map} using the given key-
* {@link Transformer} and value-{@link BidiTransformer} around a given
* {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param keyTransformer
* the key-{@link Transformer} to used for wrapping
* @param valueTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link Map}
*/
public static Map decorate(final Map map, final Transformer keyTransformer,
final BidiTransformer valueTransformer)
{
final Map valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link Map} using the given key-
* {@link BidiTransformer} and value-{@link BidiTransformer} around a given
* {@link Map}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link Map} to wrap around
* @param keyTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @param valueTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link Map}
*/
public static Map decorate(final Map map,
final BidiTransformer keyTransformer, final BidiTransformer valueTransformer)
{
final Map valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link SortedMap} using the given
* key-{@link Transformer} and value-{@link Transformer} around a given
* {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param keyTransformer
* the key-{@link Transformer} to used for wrapping
* @param valueTransformer
* the key-{@link Transformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorate(final SortedMap map,
final Transformer keyTransformer, final Transformer valueTransformer)
{
final SortedMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link SortedMap} using the given
* key-{@link BidiTransformer} and value-{@link Transformer} around a given
* {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param keyTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @param valueTransformer
* the key-{@link Transformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorate(final SortedMap map,
final BidiTransformer keyTransformer, final Transformer valueTransformer)
{
final SortedMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link SortedMap} using the given
* key-{@link Transformer} and value-{@link BidiTransformer} around a given
* {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param keyTransformer
* the key-{@link Transformer} to used for wrapping
* @param valueTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorate(final SortedMap map,
final Transformer keyTransformer, final BidiTransformer valueTransformer)
{
final SortedMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link SortedMap} using the given
* key-{@link BidiTransformer} and value-{@link BidiTransformer} around a
* given {@link SortedMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link SortedMap} to wrap around
* @param keyTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @param valueTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link SortedMap}
*/
public static SortedMap decorate(final SortedMap map,
final BidiTransformer keyTransformer, final BidiTransformer valueTransformer)
{
final SortedMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link NavigableMap} using the
* given key-{@link Transformer} and value-{@link Transformer} around a given
* {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param keyTransformer
* the key-{@link Transformer} to used for wrapping
* @param valueTransformer
* the key-{@link Transformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorate(final NavigableMap map,
final Transformer keyTransformer, final Transformer valueTransformer)
{
final NavigableMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link NavigableMap} using the
* given key-{@link BidiTransformer} and value-{@link Transformer} around a
* given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param keyTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @param valueTransformer
* the key-{@link Transformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorate(final NavigableMap map,
final BidiTransformer keyTransformer, final Transformer valueTransformer)
{
final NavigableMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link NavigableMap} using the
* given key-{@link Transformer} and value-{@link BidiTransformer} around a
* given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param keyTransformer
* the key-{@link Transformer} to used for wrapping
* @param valueTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorate(final NavigableMap map,
final Transformer keyTransformer, final BidiTransformer valueTransformer)
{
final NavigableMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new key- and value-transforming {@link NavigableMap} using the
* given key-{@link BidiTransformer} and value-{@link BidiTransformer} around
* a given {@link NavigableMap}.
*
* For a list of available operations see package description.
*
* @param map
* the {@link NavigableMap} to wrap around
* @param keyTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @param valueTransformer
* the key-{@link BidiTransformer} to used for wrapping
* @return the key-and value-transforming wrapped {@link NavigableMap}
*/
public static NavigableMap decorate(final NavigableMap map,
final BidiTransformer keyTransformer, final BidiTransformer valueTransformer)
{
final NavigableMap valueTransformingMap = decorateValueBased(map, valueTransformer);
return decorateKeyBased(valueTransformingMap, keyTransformer);
}
/**
* Wraps a new transforming {@link RingCursor} using the given
* {@link Transformer} around a given {@link RingCursor}.
*
* For a list of available operations see package description.
*
* @param ringCursor
* the {@link RingCursor} to wrap around
* @param transformer
* the {@link Transformer} to use for wrapping
* @return the transforming wrapped {@link RingCursor}
*/
public static RingCursor decorate(final RingCursor ringCursor, final Transformer transformer)
{
return new TransformingRingCursor(ringCursor, transformer);
}
/**
* Wraps a new transforming {@link RingCursor} using the given
* {@link BidiTransformer} around a given {@link RingCursor}.
*
* For a list of available operations see package description.
*
* @param ringCursor
* the {@link RingCursor} to wrap around
* @param transformer
* the {@link BidiTransformer} to use for wrapping
* @return the transforming wrapped {@link RingCursor}
*/
public static RingCursor decorate(final RingCursor ringCursor, final BidiTransformer transformer)
{
return new BidiTransformingRingCursor(ringCursor, transformer);
}
/**
* Wraps a new transforming {@link Ring} using the given {@link Transformer}
* around a given {@link Ring}.
*