Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_902 / libraries / libIverUtiles / src / com / iver / utiles / extensionPoints / ExtensionPoints.java @ 10681

History | View | Annotate | Download (4.75 KB)

1
package com.iver.utiles.extensionPoints;
2

    
3
import java.util.TreeMap;
4

    
5
/**
6
 * Clase para registro de puntos de extension.
7
 * <br>
8
 * <br>
9
 * 
10
 * @author jjdelcerro
11
 */
12
public class ExtensionPoints extends TreeMap {
13

    
14

    
15
        private static final long serialVersionUID = -798417910971607414L;
16

    
17
        /**
18
         * Evita que se a?adan elementos que no son puntos de extension.
19
         * <br>
20
         * <br>
21
         * Aunque la clase se comporta como un <i>Map</i>, no esta permitido
22
         * a?adir a esta objetos que no sean de la clase <i>ExtensionPoint</i>.
23
         * Si intentamos a?adir un elemento que no sea de esta clase, se disparara 
24
         * una excepcion ClassCastException.
25
         * <br>
26
         * <br>
27
         * @see java.util.Map#put(java.lang.Object, java.lang.Object)
28
         */
29
        public Object put(Object key, Object value) throws ClassCastException  {
30
                throw  new ClassCastException();
31
        }
32
        
33
        /**
34
         * A?ade un punto de extension al registro de puntos de extension.
35
         * <br>
36
         * <br>
37
         * Mediante este metodo puede a?adir un punto de extension al registro
38
         * de puntos de extension, llevandose detras todas las extensiones que
39
         * esten registradas en el.
40
         * <br>
41
         * <br>
42
         * En caso de que ya existiese un punto de extension con el nombre dado,
43
         * a?adira a este las extensiones del punto de extension suministrado.
44
         * <br>
45
         * <br>  
46
         * @param value Punto de extension a registrar 
47
         * @return
48
         *  
49
         */        
50
        public Object put(ExtensionPoint value) {
51
                return put(value.getName(),value);
52
        }
53
        
54
        /**
55
         * A?ade un punto de extension al registro de puntos de extension.
56
         * <br>
57
         * <br>
58
         * Mediante este metodo puede a?adir un punto de extension al registro
59
         * de puntos de extension, llevandose detras todas las extensiones que
60
         * esten registradas en el.
61
         * <br>
62
         * <br>
63
         * En caso de que ya existiese un punto de extension con el nombre dado,
64
         * a?adira a este las extensiones del punto de extension suministrado.
65
         * <br>
66
         * <br>
67
         * Cuando se a?ade un punto de extension, es imprescindible que <i>key</i> y 
68
         * el nombre del punto de extension que se este a?adiendo coincidan.
69
         * <br>
70
         * <br>
71
         * @param key Nombre del punto de extension 
72
         * @param value Punto de extension a registrar 
73
         * @return
74
         *  
75
         */
76
        public Object put(String key, ExtensionPoint value) {
77
                if ( !value.getName().equals(key) ) {
78
                        throw new IllegalArgumentException ();
79
                }
80
                ExtensionPoint n = (ExtensionPoint)super.get(key);
81
                if( n == null ) {
82
                        return super.put(key,value);
83
                }
84
                // Como estamos actualizando un punto de extension, a?adimos a este las
85
                // extensiones del que nos acaban de suministrar.
86
                n.putAll(value);
87
                return value;
88
        }
89
        
90
        /**
91
         * Registra una extension en un punto de extension.
92
         * <br>
93
         * <br>
94
         * Mediante este metodo puede registrar sobre un punto de extension
95
         * una extension. La extension esta identificada mediante un nombre
96
         * unico, y una clase que se usara para manejar la extension o una
97
         * clase que contruira el objeto que maneje la extension. 
98
         * <br>
99
         * <br>
100
         * Si ya existe en el punto de extension indicado por <i>extensionPointName</i>
101
         * una extension con el nombre <i>name</i>, esta sera sustituida por la
102
         * nueva extension.
103
         * <br>
104
         * @param extensionPointName Nombre del punto de extension
105
         * @param name Nombre o identificador de la extension
106
         * @param data Clase que implementa la extension o que la construye. 
107
         * 
108
         *  
109
         */
110
        public void add(String extensionPointName, String name, Object data) {
111
                ExtensionPoint extensionPoint = (ExtensionPoint)super.get(extensionPointName);
112
                if( extensionPoint == null ) {
113
                        extensionPoint = new ExtensionPoint(extensionPointName);
114
                        super.put(extensionPoint.getName(), extensionPoint);
115
                }
116
                
117
                extensionPoint.put(name, data);
118
        }
119

    
120
        /**
121
         * Registra una extension en un punto de extension.
122
         * <br>
123
         * <br>
124
         * Mediante este metodo puede registrar sobre un punto de extension
125
         * una extension. La extension esta identificada mediante un nombre
126
         * unico, y una clase que se usara para manejar la extension o una
127
         * clase que contruira el objeto que maneje la extension. 
128
         * <br>
129
         * <br>
130
         * Si ya existe en el punto de extension indicado por <i>extensionPointName</i>
131
         * una extension con el nombre <i>name</i>, esta sera sustituida por la
132
         * nueva extension.
133
         * <br>
134
         * @param extensionPointName Nombre del punto de extension
135
         * @param name Nombre o identificador de la extension
136
         * @param description descripcion de la extension.
137
         * @param data Clase que implementa la extension o que la construye. 
138
         * 
139
         *  
140
         */
141
        public void add(String extensionPointName, String name, String description, Object data) {
142
                ExtensionPoint extensionPoint = (ExtensionPoint)super.get(extensionPointName);
143
                if( extensionPoint == null ) {
144
                        extensionPoint = new ExtensionPoint(extensionPointName);                        
145
                        super.put(extensionPoint.getName(), extensionPoint);
146
                }
147
                
148
                extensionPoint.put(name,description, data);
149
        }
150

    
151
}