1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package org.openrdf.elmo.sesame;
30
31 import java.io.Closeable;
32 import java.io.IOException;
33 import java.util.Iterator;
34 import java.util.Map;
35 import java.util.WeakHashMap;
36
37 import javax.xml.namespace.QName;
38
39 import org.openrdf.elmo.ElmoManager;
40 import org.openrdf.elmo.Entity;
41 import org.openrdf.elmo.exceptions.ElmoPersistException;
42 import org.openrdf.elmo.sesame.roles.SesameEntity;
43 import org.openrdf.elmo.sesame.roles.SesameManagerAware;
44 import org.openrdf.model.Resource;
45
46
47
48
49
50
51
52
53 public class SesameEntitySupport implements Entity, SesameEntity, SesameManagerAware {
54
55 private Map<Closeable, Boolean> tracks = new WeakHashMap<Closeable, Boolean>();
56
57 private SesameManager manager;
58
59 private Resource resource;
60
61 public SesameEntitySupport(Entity instance) {
62
63 }
64
65 public ElmoManager getElmoManager() {
66 return manager;
67 }
68
69 public SesameManager getSesameManager() {
70 return manager;
71 }
72
73 public void initSesameManager(SesameManager manager) {
74 this.manager = manager;
75 }
76
77 public Resource getSesameResource() {
78 return resource;
79 }
80
81 public void initSesameResource(Resource resource) {
82 this.resource = resource;
83 }
84
85 public QName getQName() {
86 return manager.getSesameBeanQName(this);
87 }
88
89 public synchronized void opened(Closeable iterator) {
90 tracks.put(iterator, Boolean.TRUE);
91 }
92
93 public synchronized void close() {
94 try {
95 Iterator<Closeable> iter = tracks.keySet().iterator();
96 while (iter.hasNext()) {
97 iter.next().close();
98 }
99 tracks.clear();
100 } catch (IOException e) {
101 throw new ElmoPersistException(e);
102 }
103 }
104
105 @Override
106 public boolean equals(Object obj) {
107 return obj instanceof SesameEntity
108 && resource.equals(((SesameEntity) obj).getSesameResource());
109 }
110
111 @Override
112 public int hashCode() {
113 return resource.hashCode();
114 }
115
116 @Override
117 public String toString() {
118 return resource.toString();
119 }
120
121 }