net.sf.javagimmicks.collections.transformer.ValueBidiTransformingMap Maven / Gradle / Ivy
package net.sf.javagimmicks.collections.transformer;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
class ValueBidiTransformingMap
extends ValueTransformingMap
implements BidiTransforming
{
/**
* @deprecated Use TranformerUtils.decorateValueBased() instead
*/
@Deprecated
public ValueBidiTransformingMap(Map map, BidiTransformer valueTransformer)
{
super(map, valueTransformer);
}
public BidiTransformer getBidiTransformer()
{
return (BidiTransformer)getTransformer();
}
@SuppressWarnings("unchecked")
@Override
public boolean containsValue(Object value)
{
try
{
return _internalMap.containsValue(getBidiTransformer().transformBack((VT)value));
}
catch (ClassCastException e)
{
return super.containsValue(value);
}
}
@Override
public Set> entrySet()
{
return TransformerUtils.decorate(
_internalMap.entrySet(),
new ValueBidiTransformingEntryBidiTransformer(getBidiTransformer()));
}
@Override
public VT put(K key, VT value)
{
boolean keyContained = containsKey(key);
VF result = _internalMap.put(key, getBidiTransformer().transformBack(value));
return !keyContained ? null : getTransformer().transform(result);
}
@Override
public Collection values()
{
return TransformerUtils.decorate(_internalMap.values(), getBidiTransformer());
}
protected static class ValueBidiTransformingEntry
extends ValueTransformingEntry
implements BidiTransforming
{
public ValueBidiTransformingEntry(Entry entry, BidiTransformer transformer)
{
super(entry, transformer);
}
public BidiTransformer getBidiTransformer()
{
return (BidiTransformer)_transformer;
}
@Override
public VT setValue(VT value)
{
VF result = _internalEntry.setValue(getBidiTransformer().transformBack(value));
return getTransformer().transform(result);
}
}
protected static class ValueBidiTransformingEntryBidiTransformer
extends ValueTransformingEntryTransformer
implements BidiTransformer, Map.Entry>
{
public ValueBidiTransformingEntryBidiTransformer(BidiTransformer transformer)
{
super(transformer);
}
public Entry transformBack(Entry source)
{
return new ValueBidiTransformingEntry(source, getTransformer().invert());
}
public BidiTransformer, Entry> invert()
{
return TransformerUtils.invert(this);
}
protected BidiTransformer getTransformer()
{
return (BidiTransformer)_transformer;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy