Statistics
| Revision:

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

History | View | Annotate | Download (2.27 KB)

1
package org.gvsig.fmap.data;
2

    
3
import java.security.KeyException;
4
import java.util.HashMap;
5
import java.util.Iterator;
6
import java.util.Map;
7

    
8
import org.gvsig.tools.observer.DefaultObservable;
9
import org.gvsig.tools.observer.Observable;
10
import org.gvsig.tools.observer.Observer;
11

    
12

    
13
public class ResourceManager implements Observable{
14

    
15
        private static ResourceManager resourceManager = null;
16

    
17
        private Map resources = new HashMap();
18

    
19
        private DefaultObservable observers = new DefaultObservable();
20

    
21
        public static ResourceManager getResourceManager() {
22
                if( resourceManager == null ) {
23
                        resourceManager = new ResourceManager();
24
                }
25
                return resourceManager;
26
        }
27

    
28
        public synchronized Resource addResource(Resource resource) throws DataException {
29
                // Busca si el recurso no esta y de
30
                // ser asi lo aƱade.
31
                // En todo caso incrementa las referencias.
32

    
33
                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
                        res.preapare();
39
                }
40
                res.incref();
41

    
42
                return res;
43
        }
44

    
45
        public synchronized void remove(Resource resource) throws KeyException, DataException {
46
                remove(resource.getKey());
47
        }
48

    
49
        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

    
61
        }
62

    
63
        public Resource getResource(String key){
64
                return (Resource)this.resources.get(key);
65
        }
66

    
67
        public Iterator iterator(){
68
                return this.resources.values().iterator();
69
        }
70

    
71
        /* (non-Javadoc)
72
         * @see org.gvsig.fmap.data.IObservable#addObserver(org.gvsig.fmap.data.IObserver)
73
         */
74
        public void addObserver(Observer o) {
75
                this.observers.addObserver(o);
76
        }
77

    
78
        /* (non-Javadoc)
79
         * @see org.gvsig.fmap.data.IObservable#deleteObserver(org.gvsig.fmap.data.IObserver)
80
         */
81
        public void deleteObserver(Observer o) {
82
                this.observers.deleteObserver(o);
83
        }
84

    
85
        /* (non-Javadoc)
86
         * @see org.gvsig.fmap.data.IObservable#deleteObservers()
87
         */
88
        public void deleteObservers() {
89
                this.observers.deleteObservers();
90
        }
91

    
92
}