Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_data / src / org / gvsig / fmap / data / ResourceManager.java @ 23178

History | View | Annotate | Download (2.27 KB)

1 21911 jmvivo
package org.gvsig.fmap.data;
2 19399 vcaballero
3 20580 jmvivo
import java.security.KeyException;
4
import java.util.HashMap;
5 20624 jmvivo
import java.util.Iterator;
6 20580 jmvivo
import java.util.Map;
7 19399 vcaballero
8 23066 jmvivo
import org.gvsig.tools.observer.DefaultObservable;
9
import org.gvsig.tools.observer.Observable;
10
import org.gvsig.tools.observer.Observer;
11 19399 vcaballero
12 20580 jmvivo
13 21045 jmvivo
public class ResourceManager implements Observable{
14 20580 jmvivo
15 19399 vcaballero
        private static ResourceManager resourceManager = null;
16
17 20580 jmvivo
        private Map resources = new HashMap();
18 19608 jmvivo
19 21045 jmvivo
        private DefaultObservable observers = new DefaultObservable();
20 20580 jmvivo
21 19399 vcaballero
        public static ResourceManager getResourceManager() {
22
                if( resourceManager == null ) {
23
                        resourceManager = new ResourceManager();
24
                }
25
                return resourceManager;
26
        }
27 19608 jmvivo
28 20624 jmvivo
        public synchronized Resource addResource(Resource resource) throws DataException {
29 19399 vcaballero
                // Busca si el recurso no esta y de
30
                // ser asi lo aƱade.
31
                // En todo caso incrementa las referencias.
32 19608 jmvivo
33 20580 jmvivo
                Resource res = (Resource)this.resources.get(resource.getKey());
34
                if (res == null){
35
                        res = resource;
36
                        this.resources.put(res.getKey(), res);
37
                        res.addObservers(this.observers);
38 23178 vcaballero
                        res.prepare();
39 20580 jmvivo
                }
40
                res.incref();
41
42
                return res;
43 19399 vcaballero
        }
44 19608 jmvivo
45 20624 jmvivo
        public synchronized void remove(Resource resource) throws KeyException, DataException {
46 20580 jmvivo
                remove(resource.getKey());
47
        }
48
49 20624 jmvivo
        public synchronized void remove(String key) throws KeyException, DataException {
50
                Resource res = (Resource)this.resources.get(key);
51
                if (res == null){
52
                        throw new KeyException(key);
53
                }
54
                res.unref();
55
                if (res.getRefencesCount() < 1){
56
                        this.resources.remove(key);
57
                        res.dispose();
58
                }
59
                res = null;
60 19608 jmvivo
61 19399 vcaballero
        }
62
63 20580 jmvivo
        public Resource getResource(String key){
64
                return (Resource)this.resources.get(key);
65
        }
66 19608 jmvivo
67 20624 jmvivo
        public Iterator iterator(){
68
                return this.resources.values().iterator();
69
        }
70
71 20580 jmvivo
        /* (non-Javadoc)
72 21911 jmvivo
         * @see org.gvsig.fmap.data.IObservable#addObserver(org.gvsig.fmap.data.IObserver)
73 20580 jmvivo
         */
74 21045 jmvivo
        public void addObserver(Observer o) {
75 20580 jmvivo
                this.observers.addObserver(o);
76 19608 jmvivo
        }
77
78 20580 jmvivo
        /* (non-Javadoc)
79 21911 jmvivo
         * @see org.gvsig.fmap.data.IObservable#deleteObserver(org.gvsig.fmap.data.IObserver)
80 20580 jmvivo
         */
81 21045 jmvivo
        public void deleteObserver(Observer o) {
82 20580 jmvivo
                this.observers.deleteObserver(o);
83
        }
84
85
        /* (non-Javadoc)
86 21911 jmvivo
         * @see org.gvsig.fmap.data.IObservable#deleteObservers()
87 20580 jmvivo
         */
88
        public void deleteObservers() {
89
                this.observers.deleteObservers();
90
        }
91
92 19399 vcaballero
}