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 |
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.prepare(); |
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 |
} |