View Javadoc

1   package paolomind.multitalk.plugin;
2   
3   import java.util.HashMap;
4   import java.util.Iterator;
5   import java.util.Map;
6   
7   import paolomind.commons.NamedObject;
8   import paolomind.commons.ObjectContainer;
9   
10  /**
11   * oggetto che gestisce un insieme eterogeneo di moduli.
12   * @author paolo
13   */
14  public class ModuleManager implements Module, ObjectContainer {
15  
16    /** */
17    private Module current;
18    /** */
19    private Map modulemap;
20    /** */
21    private String name;
22  
23    /**
24     * costruttore.
25     * @param map
26     *            la mappa di moduli
27     */
28    public ModuleManager(final Map map) {
29      modulemap = map;
30    }
31  
32    /**
33     * costruttore.
34     */
35    public ModuleManager() {
36      this(new HashMap());
37    }
38  
39    /**
40     * attiva il modulo corrente selezionato.
41     * @see paolomind.multitalk.plugin.Module#activate()
42     */
43    public final void activate() {
44      if (current != null) {
45        current.activate();
46      }
47    }
48  
49    /**
50     * distruge il modulo corrente selezionato.
51     * @see paolomind.multitalk.plugin.Module#dispose()
52     */
53    public final void dispose() {
54      if (current != null) {
55        current.dispose();
56      }
57    }
58  
59    /**
60     * inizializza il modulo corrente selezionato.
61     * @see paolomind.multitalk.plugin.Module#init()
62     */
63    public final void init() {
64      if (current != null) {
65        current.init();
66      }
67    }
68  
69    /**
70     * mette in pausa il modulo corrente selezionato.
71     * @see paolomind.multitalk.plugin.Module#standby()
72     */
73    public final void standby() {
74      if (current != null) {
75        current.standby();
76      }
77    }
78  
79    /**
80     * registra un ogetto.
81     *
82     * @param element
83     *            l'oggetto da registrare con il suo nome
84     * @see paolomind.commons.ObjectContainer#register(paolomind.commons.NamedObject)
85     */
86    public final void register(final NamedObject element) {
87      modulemap.put(element.getSelfId(), element);
88    }
89  
90    /**
91     * seleziona un ogetto registrato. il manager prende il comportamento di tale
92     * oggetto
93     *
94     * @param pname
95     *            identificativo dell'ogetto
96     * @return true se l'oggetto esiste ed è stato selezionato, false altrimenti
97     * @see paolomind.commons.ObjectContainer#select(java.lang.String)
98     */
99    public final boolean select(final String pname) {
100     current = (Module) modulemap.get(pname);
101     return (current != null);
102   }
103 
104   /**
105    * reperisce un elemento registrato.
106    *
107    * @param pname
108    *            nome dell'oggetto registrato
109    * @return restituisce un ogetto registrato oppure null
110    * @see paolomind.commons.ObjectContainer#get(java.lang.String)
111    */
112   public final Object get(final String pname) {
113     return modulemap.get(pname);
114   }
115 
116   /**
117    * restituisce tutti gli elementi.
118    *
119    * @return tutti gli elementi registrati
120    * @see paolomind.commons.ObjectContainer#getAll()
121    */
122   public final Iterator getAll() {
123     return modulemap.values().iterator();
124   }
125 
126   /**
127    * restituisce il modulo corrente selezionato.
128    * @return il modulo corrente selezionato
129    */
130   protected final Module getCurrentModule() {
131     return current;
132   }
133 
134   /**
135    * setta il modulo corrente.
136    * @param currentModule
137    *            il modulo corrente.
138    */
139   protected final void setCurrentModule(final Module currentModule) {
140     this.current = currentModule;
141   }
142 
143   /**
144    * restituisce la mappa dei moduli.
145    * @return la mappa dei moduli
146    */
147   protected final Map getModulemap() {
148     return modulemap;
149   }
150 
151   /**
152    * setta la mappa dei moduli.
153    * @param pmodulemap
154    *            la mappa dei moduli
155    */
156   protected final void setModulemap(final Map pmodulemap) {
157     this.modulemap = pmodulemap;
158   }
159 
160   /**
161    * restituisce il proprio id.
162    * @return l'identificativo dell'ogetto
163    * @see paolomind.commons.NamedObject#getSelfId()
164    */
165   public final String getSelfId() {
166     return this.name;
167   }
168 
169   /**
170    * setta l'id.
171    * @param pname l'id con cui sarà identificato l'oggetto
172    * @see paolomind.commons.NamedObject#setSelfId(java.lang.String)
173    */
174   public final void setSelfId(final String pname) {
175     this.name = pname;
176   }
177 
178 }