Revision 703e8efc
Added by Cherian Mathew about 9 years ago
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionManager.java | ||
---|---|---|
9 | 9 |
*/ |
10 | 10 |
package eu.etaxonomy.taxeditor.session; |
11 | 11 |
|
12 |
import java.util.ArrayList; |
|
12 | 13 |
import java.util.Collection; |
13 | 14 |
import java.util.HashMap; |
15 |
import java.util.List; |
|
14 | 16 |
import java.util.Map; |
15 | 17 |
|
16 | 18 |
import org.apache.log4j.Logger; |
... | ... | |
27 | 29 |
public class CdmEntitySessionManager implements ICdmEntitySessionManager { |
28 | 30 |
private static final Logger logger = Logger.getLogger(CdmEntitySessionManager.class); |
29 | 31 |
|
30 |
private final Map<ICdmEntitySessionEnabled, CdmEntitySession> ownerSessionMap = |
|
31 |
new HashMap<ICdmEntitySessionEnabled, CdmEntitySession>(); |
|
32 |
private final Map<ICdmEntitySessionEnabled, ICdmEntitySession> ownerSessionMap = |
|
33 |
new HashMap<ICdmEntitySessionEnabled, ICdmEntitySession>(); |
|
34 |
|
|
35 |
private final List<ICdmEntitySessionManagerObserver> sessionObservers = new ArrayList<ICdmEntitySessionManagerObserver>(); |
|
32 | 36 |
|
33 | 37 |
private ICdmEntitySession activeSession; |
34 | 38 |
|
35 | 39 |
@Override |
36 | 40 |
public ICdmEntitySession newSession(ICdmEntitySessionEnabled sessionOwner, boolean setAsActive) { |
37 |
CdmEntitySession session = ownerSessionMap.get(sessionOwner); |
|
41 |
ICdmEntitySession session = ownerSessionMap.get(sessionOwner);
|
|
38 | 42 |
if(session == null) { |
39 | 43 |
session = new CdmEntitySession(sessionOwner, this); |
40 | 44 |
addToOwnerSessionMap(sessionOwner, session); |
45 |
|
|
41 | 46 |
} |
42 | 47 |
|
43 | 48 |
if(setAsActive) { |
44 | 49 |
activeSession = session; |
50 |
|
|
45 | 51 |
} |
52 |
|
|
46 | 53 |
return session; |
47 | 54 |
} |
48 | 55 |
|
49 | 56 |
@Override |
50 | 57 |
public ICdmEntitySession getActiveSession() { |
51 |
|
|
52 | 58 |
return activeSession; |
53 | 59 |
} |
54 | 60 |
|
61 |
|
|
62 |
/* (non-Javadoc) |
|
63 |
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#getSessions() |
|
64 |
*/ |
|
65 |
@Override |
|
66 |
public Collection<ICdmEntitySession> getSessions() { |
|
67 |
return ownerSessionMap.values(); |
|
68 |
} |
|
69 |
|
|
70 |
|
|
55 | 71 |
/* (non-Javadoc) |
56 | 72 |
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#bind(eu.etaxonomy.taxeditor.session.ISessionEventListener) |
57 | 73 |
*/ |
... | ... | |
65 | 81 |
if(session == null) { |
66 | 82 |
session = newSession(sessionOwner,true); |
67 | 83 |
} |
84 |
|
|
68 | 85 |
activeSession = session; |
86 |
|
|
69 | 87 |
} |
70 | 88 |
|
71 | 89 |
|
... | ... | |
109 | 127 |
/* (non-Javadoc) |
110 | 128 |
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#dispose(eu.etaxonomy.taxeditor.session.ISessionEventListener) |
111 | 129 |
*/ |
112 |
@Override |
|
113 |
public void dispose(ICdmEntitySessionEnabled owner) { |
|
130 |
void dispose(ICdmEntitySessionEnabled owner) { |
|
114 | 131 |
ICdmEntitySession session = ownerSessionMap.get(owner); |
115 | 132 |
if(session == null) { |
116 | 133 |
logger.info("No Session connected to owner, nothing to dispose"); |
117 | 134 |
return; |
118 | 135 |
} |
119 |
session.dispose(); |
|
136 |
ownerSessionMap.remove(owner); |
|
137 |
notifyObservers(); |
|
120 | 138 |
} |
121 | 139 |
|
122 |
void addToOwnerSessionMap(ICdmEntitySessionEnabled owner, CdmEntitySession session) { |
|
140 |
void addToOwnerSessionMap(ICdmEntitySessionEnabled owner, ICdmEntitySession session) {
|
|
123 | 141 |
ownerSessionMap.put(owner, session); |
124 | 142 |
} |
125 | 143 |
|
144 |
/* (non-Javadoc) |
|
145 |
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#addSessionListener() |
|
146 |
*/ |
|
147 |
@Override |
|
148 |
public void addSessionObserver(ICdmEntitySessionManagerObserver sessionObserver) { |
|
149 |
sessionObservers.add(sessionObserver); |
|
150 |
} |
|
151 |
|
|
152 |
public void notifyObservers() { |
|
153 |
for(ICdmEntitySessionManagerObserver sessionObserver : sessionObservers) { |
|
154 |
sessionObserver.changed(); |
|
155 |
} |
|
156 |
} |
|
157 |
|
|
158 |
/* (non-Javadoc) |
|
159 |
* @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionManager#isRemoting() |
|
160 |
*/ |
|
161 |
@Override |
|
162 |
public boolean isRemoting() { |
|
163 |
// FIXME:Remoting stupid method to check whether we are in remoting |
|
164 |
return true; |
|
165 |
} |
|
166 |
|
|
167 |
|
|
168 |
|
|
169 |
|
|
126 | 170 |
|
127 | 171 |
} |
Also available in: Unified diff
CdmRemoteCacheManager : added cache getter methods
CdmTransientEntityCacher, CdmEntitySession, CdmEntitySessionManager, ICdmEntitySession, ICdmEntitySessionManager, ICdmEntitySessionManagerObserver, MockCdmEntitySession, MockCdmEntitySessionManager , eu.etaxonomy.taxeditor.cdmlib/src/main/resources/cdmlib-ehcache.xml : added statistics config , getter method for live stats and observer to update when sessions are bound and disposed
eu.etaxonomy.taxeditor.store/plugin.xml, SessionsViewPart : added new sessions debug view
MatchStrategyConfigurator : moved to cdmlib
ParseHandler, AbstractMatchingPreferences, NonViralNameMatchingPreference, ReferenceMatchingPreference, TeamOrPersonMatchingPreference : refactored after removal of MatchStrategyConfigurator replaced by enum MatchStrategy