All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.javagimmicks.collections.transformer.KeyTransformingMap Maven / Gradle / Ivy

package net.sf.javagimmicks.collections.transformer;

import java.util.AbstractMap;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

import net.sf.javagimmicks.transform.Transformer;
import net.sf.javagimmicks.transform.Transforming;

class KeyTransformingMap
   extends AbstractMap
   implements Transforming
{
   protected final Map _internalMap;
   protected final Transformer _transformer;
   
   /**
    * @deprecated Use TranformerUtils.decorateKeyBased() instead
    */
   @Deprecated
   public KeyTransformingMap(Map map, Transformer transformer)
   {
      _internalMap = map;
      _transformer = transformer;
   }
   
   public Transformer getTransformer()
   {
      return _transformer;
   }

   @Override
   public void clear()
   {
      _internalMap.clear();
   }

   @Override
   public boolean containsValue(Object value)
   {
      return _internalMap.containsValue(value);
   }

   @Override
   public Set> entrySet()
   {
      return TransformerUtils.decorate(
         _internalMap.entrySet(),
         new KeyTransformingEntryTransformer(getTransformer()));
   }
   
   @Override
   public boolean isEmpty()
   {
      return _internalMap.isEmpty();
   }

   @Override
   public Set keySet()
   {
      return TransformerUtils.decorate(
         _internalMap.keySet(),
         getTransformer());
   }

   @Override
   public int size()
   {
      return _internalMap.size();
   }
   
   @Override
   public Collection values()
   {
      return _internalMap.values();
   }
   
   protected KT transform(KF element)
   {
      return getTransformer().transform(element);
   }
   
   protected static class KeyTransformingEntry
      implements Entry, Transforming
   {
      protected final Entry _internalEntry;
      protected final Transformer _transformer;
      
      public KeyTransformingEntry(Entry entry, Transformer transformer)
      {
         _internalEntry = entry;
         _transformer = transformer;
      }

      public Transformer getTransformer()
      {
         return _transformer;
      }

      public KT getKey()
      {
         return _transformer.transform(_internalEntry.getKey());
      }

      public V getValue()
      {
         return _internalEntry.getValue();
      }

      public V setValue(V value)
      {
         return _internalEntry.setValue(value);
      }
   }
   
   protected static class KeyTransformingEntryTransformer
      implements Transformer, Entry>
   {
      protected final Transformer _transformer;
      
      public KeyTransformingEntryTransformer(Transformer transformer)
      {
         _transformer = transformer;
      }

      public Entry transform(Entry source)
      {
         return new KeyTransformingEntry(source, _transformer);
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy