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
.cdm
.persistence
.dto
.MergeResult
;
22 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.EntityCacherDebugResult
;
29 public class NullSession
implements ICdmEntitySession
{
31 private ICdmEntitySessionEnabled sessionOwner
;
32 private final CdmEntitySessionManager cdmEntitySessionManager
;
34 public NullSession(ICdmEntitySessionEnabled sessionOwner
, CdmEntitySessionManager cdmEntitySessionManager
) {
35 this.sessionOwner
= sessionOwner
;
36 this.cdmEntitySessionManager
= cdmEntitySessionManager
;
39 public void setOwner(ICdmEntitySessionEnabled sessionOwner
) {
40 this.sessionOwner
= sessionOwner
;
44 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getOwner()
47 public ICdmEntitySessionEnabled
getOwner() {
52 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getCacheStatistics()
55 public LiveCacheStatistics
getCacheStatistics() {
56 // TODO Auto-generated method stub
61 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(java.lang.Object, boolean)
64 public <O
> O
load(O obj
, boolean update
) {
69 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.model.common.CdmBase, boolean)
72 public <T
extends CdmBase
> T
load(T cdmBase
, boolean update
) {
77 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.api.service.UpdateResult, boolean)
80 public UpdateResult
load(UpdateResult updateResult
, boolean update
) {
85 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#debug(eu.etaxonomy.cdm.model.common.CdmBase)
88 public <T
extends CdmBase
> EntityCacherDebugResult
debug(T cdmBase
) {
93 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#debug(java.util.Collection)
96 public <T
extends CdmBase
> EntityCacherDebugResult
debug(Collection
<T
> cdmBase
) {
101 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#debug()
104 public <T
extends CdmBase
> EntityCacherDebugResult
debug() {
109 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(java.util.Collection, boolean)
112 public <T
extends CdmBase
> Collection
<T
> load(Collection
<T
> cdmBaseList
, boolean update
) {
117 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#setEntitiesAsLatest()
120 public void setEntitiesAsLatest() {
125 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getRootEntities()
128 public <T
extends CdmBase
> Collection
<T
> getRootEntities() {
133 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#dispose()
136 public void dispose() {
137 cdmEntitySessionManager
.remove(sessionOwner
);
141 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#bind()
145 cdmEntitySessionManager
.bindNullSession();
149 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteLoad(eu.etaxonomy.cdm.api.service.IService, java.util.UUID)
152 public <T
extends CdmBase
> T
remoteLoad(IService
<T
> service
, UUID uuid
) {
153 T cdmBase
= service
.load(uuid
);
154 return load(cdmBase
, false);
158 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteLoad(eu.etaxonomy.cdm.api.service.IService, java.util.UUID, java.util.List)
161 public <T
extends CdmBase
> T
remoteLoad(IService
<T
> service
, UUID uuid
, List
<String
> propertyPaths
) {
162 T cdmBase
= service
.load(uuid
, propertyPaths
);
163 return load(cdmBase
, false);
167 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteSave(eu.etaxonomy.cdm.api.service.IService, eu.etaxonomy.cdm.model.common.CdmBase)
170 public <T
extends CdmBase
> UUID
remoteSave(IService
<T
> service
, T cdmBase
) {
171 UUID uuid
= service
.save(cdmBase
).getUuid();
177 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#remoteUpdate(eu.etaxonomy.cdm.api.service.IService, eu.etaxonomy.cdm.model.common.CdmBase)
180 public <T
extends CdmBase
> T
remoteUpdate(IService
<T
> service
, T cdmBase
) {
181 T mergedCdmBase
= service
.merge(cdmBase
, true).getMergedEntity();
182 return mergedCdmBase
;
186 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#isActive()
189 public boolean isActive() {
190 return cdmEntitySessionManager
.getActiveSession() == this;
194 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#update()
197 public <T
extends CdmBase
> void update() {
202 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#getPropertyPaths(java.lang.Object)
205 public List
<String
> getPropertyPaths(Object obj
) {
206 if(sessionOwner
== null) {
209 Map
<Object
, List
<String
>> propertyPathsMap
= sessionOwner
.getPropertyPathsMap();
210 if(propertyPathsMap
== null || propertyPathsMap
.isEmpty()) {
213 return propertyPathsMap
.get(obj
);
217 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#addNewCdmEntity(eu.etaxonomy.cdm.model.common.CdmBase)
220 public void addNewCdmEntity(CdmBase newEntity
) {
221 // TODO Auto-generated method stub
226 * @see eu.etaxonomy.taxeditor.session.ICdmEntitySession#load(eu.etaxonomy.cdm.persistence.dto.MergeResult, boolean)
229 public <T
extends CdmBase
> MergeResult
<T
> load(MergeResult
<T
> mergeResult
, boolean update
) {