Munir Map, List et Set de la caractéristique Support

Aller en bas

Munir Map, List et Set de la caractéristique Support Empty Munir Map, List et Set de la caractéristique Support

Message  Gus le Jeu 28 Avr - 12:28

Je vous présente l'entité gus.collection.support qui permet "d'ajouter" la caractéristique Support aux collections et maps. En fait, grâce à la technique de l'enveloppement, elle permet de remplacer les collections par des collections équivalentes munies de la caractéristique Support.

Voyez plutôt le code source (il y a 4 classes) :

Code:
package gus05.entity.gus.collection.support;

import java.util.List;
import java.util.Map;
import java.util.Set;

import gus05.framework.core.Entity;
import gus05.framework.features.Support;
import gus05.framework.features.Transform;

public class CollectionSupport implements Entity, Transform {

    public String getName()         {return "gus.collection.support";}
    public String getCreationDate()      {return "2006.07.07";}
   
    public Object transform(Object obj) throws Exception
    {
       if(obj==null) return null;
        if(obj instanceof Support) return obj;       
       
        if(obj instanceof Map)      return new Map1((Map)obj);
        if(obj instanceof Set)      return new Set1((Set)obj);
        if(obj instanceof List)      return new List1((List)obj);
       
        throw new Exception("Invalid type "+obj.getClass().getName());
    }
}
Code:
package gus05.entity.gus.collection.support;

import gus05.framework.features.*;
import gus05.framework.tools.DefaultSupport;
import java.util.*;

class Map1 extends DefaultSupport implements Map, Retrieve, Register, Transform, Provide, Filter, Give {
   
   private Map map;
   
   private String keyName = null;
   private String valueName = null;
   
   private Class keyClass = null;
   private Class valueClass = null;
   
   private Object lastElement;
   private Object lastResult;
   private Object lastKey;
   
   public Map1(Map map)
   {this.map = map;}
   
   public Map1()
   {this(new Hashtable());}
   
   public Map getMap()
   {return map;}
   
   public Object getLastElement()
   {return lastElement;}
   
   public Object getLastResult()
   {return lastResult;}
   
   public Object getLastKey()
   {return lastKey;}
   
   
   public int size()                   {return map.size();}
   public boolean isEmpty()             {return map.isEmpty();}
   public boolean containsKey(Object key)       {return map.containsKey(key);}
   public boolean containsValue(Object value)    {return map.containsValue(value);}
   public Set keySet()               {return map.keySet();}
   public Collection values()            {return map.values();}
   public Set entrySet()                {return map.entrySet();}
   public Object get(Object key)            {return map.get(key);}
   public String toString()               {return map.toString();}
   public boolean equals(Object o)         {return map.equals(o);}
   
   
   public Object put(Object key, Object value)
   {
       lastKey = key;
       lastElement = value;
       lastResult = map.put(key,value);
      
       send(this,"put(Object,Object)");
      return lastResult;
   }

   public Object remove(Object key)
   {
       lastKey = key;
       lastResult = map.remove(key);
      
       send(this,"remove(Object)");
      return lastResult;
   }

   public void putAll(Map m)
   {
       map.putAll(m);
      send(this,"putAll(Map)");
   }

   public void clear()
   {
      map.clear();
      send(this,"clear()");
   }
   
   
    private void initMap(Map map)
    {
        this.map = map;
        send(this,"initMap(Map)");
    }
   

    public Object retrieve(String key) throws Exception
    {
        if(key.equals("lastElement"))return lastElement;
        if(key.equals("lastResult"))return lastResult;
        if(key.equals("lastKey"))return lastKey;
        if(key.equals("map"))return map;
       
        if(key.equals("keyName"))return keyName;
        if(key.equals("valueName"))return valueName;
        if(key.equals("keyClass"))return keyClass;
        if(key.equals("valueClass"))return valueClass;
       
        if(key.equals("keys"))
            return new String[]{"lastElement","lastResult","lastKey","map","keyName","valueName","keyClass","valueClass"};
       
        throw new Exception("unknown key "+key);
    }

    public void register(String key, Object obj) throws Exception
    {
        if(key.equals("keyName"))      {keyName = (String)obj;return;}
        if(key.equals("valueName"))      {valueName = (String)obj;return;}
        if(key.equals("keyClass"))      {keyClass = (Class)obj;return;}
        if(key.equals("valueClass"))   {valueClass = (Class)obj;return;}
       
        throw new Exception("unknown key "+key);
    }

    public boolean filter(Object obj) throws Exception       {return map.containsKey(obj);}
    public Object transform(Object obj) throws Exception    {return map.get(obj);}
    public Object provide() throws Exception          {return map;}
    public void give(Object obj) throws Exception          {initMap((Map)obj);}
}
Code:
package gus05.entity.gus.collection.support;

import gus05.framework.features.*;
import gus05.framework.tools.DefaultSupport;
import java.util.*;

class List1 extends DefaultSupport implements List, Retrieve, Register, Transform, Filter, Give {

   private List list;
   
   private String valueName = null;
   private Class valueClass = null;
   
   private Object lastElement;
   private Object lastResult;
   private int lastIndex;

   public List1(List list)
   {this.list = list;}
   
   public List1()
   {this(new Vector());}

   public List getList()
   {return list;}
   
   public Object getLastElement()
   {return lastElement;}
   
   public Object getLastResult()
   {return lastResult;}
   
   public int getLastIndex()
   {return lastIndex;}
   
   public int size()                     {return list.size();}
   public boolean isEmpty()               {return list.isEmpty();}
   public int indexOf(Object value)            {return list.indexOf(value);}
   public int lastIndexOf(Object value)            {return list.lastIndexOf(value);}
   public ListIterator listIterator()            {return list.listIterator();}
   public ListIterator listIterator(int index)         {return list.listIterator(index);}
   public List subList(int index1, int index2)         {return list.subList(index1,index2);}
   public Iterator iterator()               {return list.iterator();}
   public Object[] toArray()               {return list.toArray();}
   public Object[] toArray(Object[] array)         {return list.toArray(array);}
   public boolean contains(Object value)         {return list.contains(value);}
   public boolean containsAll(Collection c)         {return list.containsAll(c);}
   public Object get(int index)               {return list.get(index);}
   public String toString()                  {return list.toString();}
   public boolean equals(Object o)            {return list.equals(o);}
   
   public void clear()
   {
      list.clear();
      send(this,"clear()");
   }

   public boolean add(Object value)
   {
       lastElement = value;
       boolean result = list.add(value);
       if(result) send(this,"add(Object)");
      return result;
   }

   public void add(int index, Object value)
   {
       lastIndex = index;
       lastElement = value;
       list.add(index,value);
       send(this,"add(int,Object)");
   }
   
   public boolean remove(Object value)
   {
       lastElement = value;
       boolean result = list.remove(value);
       if(result) send(this,"remove(Object)");
      return result;
   }
   
   public Object remove(int index)
   {
       lastIndex = index;
       lastResult = list.remove(index);
       send(this,"remove(int)");
      return lastResult;
   }
   
   public boolean addAll(Collection c)
   {
       boolean result = list.addAll(c);
       if(result) send(this,"addAll(Collection)");
      return result;
   }
   
   public boolean addAll(int index, Collection c)
   {
       lastIndex = index;
       boolean result = list.addAll(index,c);
       if(result) send(this,"addAll(int,Collection)");
      return result;
   }
   
   public boolean removeAll(Collection c)
   {
       boolean result = list.removeAll(c);
       if(result) send(this,"removeAll(Collection)");
      return result;
   }
   
   public boolean retainAll(Collection c)
   {
       boolean result = list.retainAll(c);
       if(result) send(this,"retainAll(Collection)");
      return result;
   }
   
   public Object set(int index, Object value)
   {
       lastIndex = index;
       lastElement = value;
       lastResult = list.set(index,value);
       send(this,"set(index,Object)");
      return lastResult;
   }
   
    private void initList(List list)
    {
        this.list = list;
        send(this,"initList(List)");
    }
   

    public Object retrieve(String key) throws Exception
    {
        if(key.equals("lastElement"))return lastElement;
        if(key.equals("lastResult"))return lastResult;
        if(key.equals("lastIndex"))return new Integer(lastIndex);
        if(key.equals("list"))return list;
       
        if(key.equals("valueName"))return valueName;
        if(key.equals("valueClass"))return valueClass;
       
        if(key.equals("keys"))
            return new String[]{"lastElement","lastResult","lastIndex","list","valueName","valueClass"};
       
        throw new Exception("unknown key "+key);
    }

    public void register(String key, Object obj) throws Exception
    {
        if(key.equals("valueName"))      {valueName = (String)obj;return;}
        if(key.equals("valueClass"))   {valueClass = (Class)obj;return;}
       
        throw new Exception("unknown key "+key);
    }

    public boolean filter(Object obj) throws Exception       {return list.contains(obj);}
    public Object transform(Object obj) throws Exception    {return list.get(((Integer)obj).intValue());}
    public Object provide() throws Exception          {return list;}
    public void give(Object obj) throws Exception          {initList((List)obj);}
}
Code:
package gus05.entity.gus.collection.support;

import gus05.framework.features.*;
import gus05.framework.tools.DefaultSupport;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

class Set1 extends DefaultSupport implements Set, Retrieve, Register, Provide, Filter, Give {

    private Set set;
   
    private String valueName = null;
    private Class valueClass = null;
    private Object lastElement;
   
    public Set1(Set set)
    {this.set = set;}
   
    public Set1()
    {set = new HashSet();}
   
    public Set getSet()
    {return set;}
   
    public Object getLastElement()
    {return lastElement;}
   
    public int size()                  {return set.size();}
    public boolean isEmpty()               {return set.isEmpty();}
    public boolean contains(Object value)         {return set.contains(value);}
    public boolean containsAll(Collection c)         {return set.containsAll(c);}
    public Iterator iterator()               {return set.iterator();}
    public Object[] toArray()               {return set.toArray();}
    public Object[] toArray(Object[] array)      {return set.toArray(array);}
    public String toString()               {return set.toString();}
    public boolean equals(Object o)            {return set.equals(o);}
   
   
    public boolean add(Object value)
    {
        lastElement = value;
        boolean result = set.add(value);
        if(result)send(this,"add(Object)");
        return result;
    }

    public boolean remove(Object value)
    {
        lastElement = value;
        boolean result = set.remove(value);
        if(result)send(this,"remove(Object)");
        return result;
    }

    public boolean addAll(Collection c)
    {
        boolean result = set.addAll(c);   
        if(result)send(this,"addAll(Collection)");
        return result;
    }
   
    public boolean retainAll(Collection c)
    {
        boolean result = set.retainAll(c);   
        if(result)send(this,"retainAll(Collection)");
        return result;
    }

    public boolean removeAll(Collection c)
    {
        boolean result = set.removeAll(c);
        if(result)send(this,"removeAll(Collection)");
        return result;
    }

    public void clear()
    {
        set.clear();
        send(this,"clear()");
    }

    private void initSet(Set set)
    {
        this.set = set;
        send(this,"initSet(Set)");
    }
   
    public Object retrieve(String key) throws Exception
    {
        if(key.equals("lastElement"))return lastElement;
        if(key.equals("set"))return set;

        if(key.equals("valueName"))return valueName;
        if(key.equals("valueClass"))return valueClass;
       
        if(key.equals("keys"))
            return new String[]{"lastElement","set","valueName","valueClass"};
        throw new Exception("unknown key "+key);
    }
   
    public void register(String key, Object obj) throws Exception
    {
        if(key.equals("valueName"))      {valueName = (String)obj;return;}
        if(key.equals("valueClass"))   {valueClass = (Class)obj;return;}
       
        throw new Exception("unknown key "+key);
    }

    public boolean filter(Object obj) throws Exception    {return set.contains(obj);}
    public Object provide() throws Exception       {return set;}
    public void give(Object obj) throws Exception        {initSet((Set)obj);}
}
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum