CrushedPixel

Untitled

Feb 26th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.05 KB | None | 0 0
  1. import org.spongepowered.api.util.Identifiable;
  2.  
  3. import javax.annotation.Nonnull;
  4. import java.util.Collection;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import java.util.Set;
  8. import java.util.UUID;
  9.  
  10. public class IdentifiableMap<T> implements Map<Identifiable, T> {
  11.     private final Map<UUID, T> delegate;
  12.  
  13.     public IdentifiableMap() {
  14.         this(new HashMap<>());
  15.     }
  16.  
  17.     public IdentifiableMap(Map<UUID, T> delegate) {
  18.         this.delegate = delegate;
  19.     }
  20.  
  21.     @Override
  22.     public int size() {
  23.         return delegate.size();
  24.     }
  25.  
  26.     @Override
  27.     public boolean isEmpty() {
  28.         return delegate.isEmpty();
  29.     }
  30.  
  31.     @Override
  32.     public boolean containsKey(Object o) {
  33.         return o instanceof Identifiable && delegate.containsKey(((Identifiable) o).getUniqueId());
  34.     }
  35.  
  36.     @Override
  37.     public boolean containsValue(Object o) {
  38.         return delegate.containsValue(o);
  39.     }
  40.  
  41.     @Override
  42.     public T get(Object o) {
  43.         return o instanceof Identifiable ? delegate.get(((Identifiable) o).getUniqueId()) : null;
  44.     }
  45.  
  46.     @Override
  47.     public T put(Identifiable identifiable, T t) {
  48.         return delegate.put(identifiable.getUniqueId(), t);
  49.     }
  50.  
  51.     @Override
  52.     public T remove(Object o) {
  53.         return o instanceof Identifiable ? delegate.remove(((Identifiable) o).getUniqueId()) : null;
  54.     }
  55.  
  56.     @Override
  57.     public void putAll(@Nonnull Map<? extends Identifiable, ? extends T> map) {
  58.         for (Entry<? extends Identifiable, ? extends T> entry : map.entrySet()) {
  59.             put(entry.getKey(), entry.getValue());
  60.         }
  61.     }
  62.  
  63.     @Override
  64.     public void clear() {
  65.         delegate.clear();
  66.     }
  67.  
  68.     @Override
  69.     public @Nonnull Set<Identifiable> keySet() {
  70.         throw new UnsupportedOperationException();
  71.     }
  72.  
  73.     @Override
  74.     public @Nonnull Collection<T> values() {
  75.         return delegate.values();
  76.     }
  77.  
  78.     @Override
  79.     public @Nonnull Set<Entry<Identifiable, T>> entrySet() {
  80.         throw new UnsupportedOperationException();
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment