Merge branch 'release/5.17.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / taxeditor / session / NullSession.java
1 /**
2 * Copyright (C) 2015 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.session;
10
11 import java.util.Collection;
12 import java.util.List;
13 import java.util.Map;
14 import java.util.UUID;
15
16 import eu.etaxonomy.cdm.api.service.IService;
17 import eu.etaxonomy.cdm.api.service.UpdateResult;
18 import eu.etaxonomy.cdm.cache.EntityCacherDebugResult;
19 import eu.etaxonomy.cdm.model.common.CdmBase;
20 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
21 import net.sf.ehcache.statistics.LiveCacheStatistics;
22
23 /**
24 * @author cmathew
25 * @date 30 Jul 2015
26 */
27 public class NullSession implements ICdmEntitySession {
28
29 private ICdmEntitySessionEnabled sessionOwner;
30 private final CdmEntitySessionManager cdmEntitySessionManager;
31
32 public NullSession(ICdmEntitySessionEnabled sessionOwner, CdmEntitySessionManager cdmEntitySessionManager) {
33 this.sessionOwner = sessionOwner;
34 this.cdmEntitySessionManager = cdmEntitySessionManager;
35 }
36
37 public void setOwner(ICdmEntitySessionEnabled sessionOwner) {
38 this.sessionOwner = sessionOwner;
39 }
40
41 @Override
42 public ICdmEntitySessionEnabled getOwner() {
43 return sessionOwner;
44 }
45
46 @Override
47 public LiveCacheStatistics getCacheStatistics() {
48 return null;
49 }
50
51 @Override
52 public <O> O load(O obj, boolean update) {
53 return obj;
54 }
55
56 @Override
57 public <T extends CdmBase> T load(T cdmBase, boolean update) {
58 return cdmBase;
59 }
60
61 @Override
62 public UpdateResult load(UpdateResult updateResult, boolean update) {
63 return updateResult;
64 }
65
66 @Override
67 public <T extends CdmBase> EntityCacherDebugResult debug(T cdmBase) {
68 return null;
69 }
70
71 @Override
72 public <T extends CdmBase> EntityCacherDebugResult debug(Collection<T> cdmBase, boolean includeIgnored) {
73 return null;
74 }
75
76 @Override
77 public <T extends CdmBase> EntityCacherDebugResult debug(boolean includeIgnored) {
78 return null;
79 }
80
81 @Override
82 public <T extends CdmBase> Collection<T> load(Collection<T> cdmBaseList, boolean update) {
83 return cdmBaseList;
84 }
85
86 @Override
87 public void setEntitiesAsLatest() {
88
89 }
90
91 @Override
92 public <T extends CdmBase> Collection<T> getRootEntities() {
93 return null;
94 }
95
96 @Override
97 public void dispose() {
98 cdmEntitySessionManager.remove(sessionOwner);
99 }
100
101 @Override
102 public void bind() {
103 cdmEntitySessionManager.bindNullSession();
104 }
105
106 @Override
107 public <T extends CdmBase> T remoteLoad(IService<T> service, UUID uuid) {
108 T cdmBase = service.load(uuid);
109 return load(cdmBase, false);
110 }
111
112 @Override
113 public <T extends CdmBase> T remoteLoad(IService<T> service, UUID uuid, List<String> propertyPaths) {
114 T cdmBase = service.load(uuid, propertyPaths);
115 return load(cdmBase, false);
116 }
117
118 @Override
119 public <T extends CdmBase> UUID remoteSave(IService<T> service, T cdmBase) {
120 UUID uuid = service.save(cdmBase).getUuid();
121 load(cdmBase,false);
122 return uuid;
123 }
124
125 @Override
126 public <T extends CdmBase> T remoteUpdate(IService<T> service, T cdmBase) {
127 T mergedCdmBase = service.merge(cdmBase, true).getMergedEntity();
128 return mergedCdmBase;
129 }
130
131 @Override
132 public boolean isActive() {
133 return cdmEntitySessionManager.getActiveSession() == this;
134 }
135
136 @Override
137 public <T extends CdmBase> void update() {
138
139 }
140
141 @Override
142 public List<String> getPropertyPaths(Object obj) {
143 if(sessionOwner == null) {
144 return null;
145 }
146 Map<Object, List<String>> propertyPathsMap = sessionOwner.getPropertyPathsMap();
147 if(propertyPathsMap == null || propertyPathsMap.isEmpty()) {
148 return null;
149 }
150 return propertyPathsMap.get(obj);
151 }
152
153 @Override
154 public void addNewCdmEntity(CdmBase newEntity) {
155
156 }
157
158 @Override
159 public <T extends CdmBase> MergeResult<T> load(MergeResult<T> mergeResult, boolean update) {
160 return mergeResult;
161 }
162
163 }