3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.session
;
12 import java
.util
.Collection
;
13 import java
.util
.List
;
15 import java
.util
.UUID
;
17 import net
.sf
.ehcache
.statistics
.LiveCacheStatistics
;
18 import eu
.etaxonomy
.cdm
.api
.service
.IService
;
19 import eu
.etaxonomy
.cdm
.api
.service
.UpdateResult
;
20 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
21 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
;
28 public class NullSession
implements ICdmEntitySession
{
30 private ICdmEntitySessionEnabled sessionOwner
;
31 private final CdmEntitySessionManager cdmEntitySessionManager
;
33 public NullSession(ICdmEntitySessionEnabled sessionOwner
, CdmEntitySessionManager cdmEntitySessionManager
) {
34 this.sessionOwner
= sessionOwner
;
35 this.cdmEntitySessionManager
= cdmEntitySessionManager
;
38 public void setOwner(ICdmEntitySessionEnabled sessionOwner
) {
39 this.sessionOwner
= sessionOwner
;
43 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getOwner()
46 public ICdmEntitySessionEnabled
getOwner() {
51 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getCacheStatistics()
54 public LiveCacheStatistics
getCacheStatistics() {
55 // TODO Auto-generated method stub
60 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(java.lang.Object, boolean)
63 public <O
> O
load(O obj
, boolean update
) {
68 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.model.common.CdmBase, boolean)
71 public <T
extends CdmBase
> T
load(T cdmBase
, boolean update
) {
76 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.api.service.UpdateResult, boolean)
79 public UpdateResult
load(UpdateResult updateResult
, boolean update
) {
84 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#debug(eu.etaxonomy.cdm.model.common.CdmBase)
87 public <T
extends CdmBase
> EntityCacherDebugResult
debug(T cdmBase
) {
92 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#debug(java.util.Collection)
95 public <T
extends CdmBase
> EntityCacherDebugResult
debug(Collection
<T
> cdmBase
) {
100 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#debug()
103 public <T
extends CdmBase
> EntityCacherDebugResult
debug() {
108 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(java.util.Collection, boolean)
111 public <T
extends CdmBase
> Collection
<T
> load(Collection
<T
> cdmBaseList
, boolean update
) {
116 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#setEntitiesAsLatest()
119 public void setEntitiesAsLatest() {
124 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getRootEntities()
127 public <T
extends CdmBase
> Collection
<T
> getRootEntities() {
132 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#dispose()
135 public void dispose() {
136 cdmEntitySessionManager
.remove(sessionOwner
);
140 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#bind()
144 cdmEntitySessionManager
.bindNullSession(sessionOwner
);
148 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteLoad(eu.etaxonomy.cdm.api.service.IService, java.util.UUID)
151 public <T
extends CdmBase
> T
remoteLoad(IService
<T
> service
, UUID uuid
) {
152 T cdmBase
= service
.load(uuid
);
153 return load(cdmBase
, false);
157 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteLoad(eu.etaxonomy.cdm.api.service.IService, java.util.UUID, java.util.List)
160 public <T
extends CdmBase
> T
remoteLoad(IService
<T
> service
, UUID uuid
, List
<String
> propertyPaths
) {
161 T cdmBase
= service
.load(uuid
, propertyPaths
);
162 return load(cdmBase
, false);
166 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteSave(eu.etaxonomy.cdm.api.service.IService, eu.etaxonomy.cdm.model.common.CdmBase)
169 public <T
extends CdmBase
> UUID
remoteSave(IService
<T
> service
, T cdmBase
) {
170 UUID uuid
= service
.save(cdmBase
).getUuid();
176 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteUpdate(eu.etaxonomy.cdm.api.service.IService, eu.etaxonomy.cdm.model.common.CdmBase)
179 public <T
extends CdmBase
> T
remoteUpdate(IService
<T
> service
, T cdmBase
) {
180 T mergedCdmBase
= service
.merge(cdmBase
);
181 return mergedCdmBase
;
185 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#isActive()
188 public boolean isActive() {
189 return cdmEntitySessionManager
.getActiveSession() == this;
193 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#update()
196 public <T
extends CdmBase
> void update() {
201 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getPropertyPaths(java.lang.Object)
204 public List
<String
> getPropertyPaths(Object obj
) {
205 Map
<Object
, List
<String
>> propertyPathsMap
= sessionOwner
.getPropertyPathsMap();
206 if(propertyPathsMap
== null || propertyPathsMap
.isEmpty()) {
209 return propertyPathsMap
.get(obj
);