Revision f528c666
Added by Andreas Kohlbecker over 5 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/taxonGraph/TaxonGraphBeforeTransactionCompleteProcess.java | ||
---|---|---|
18 | 18 |
import org.hibernate.event.spi.PostInsertEvent; |
19 | 19 |
import org.hibernate.event.spi.PostUpdateEvent; |
20 | 20 |
|
21 |
import eu.etaxonomy.cdm.api.application.IRunAs; |
|
21 | 22 |
import eu.etaxonomy.cdm.model.name.TaxonName; |
22 | 23 |
import eu.etaxonomy.cdm.model.reference.Reference; |
23 | 24 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
... | ... | |
54 | 55 |
|
55 | 56 |
private boolean isInsertEvent; |
56 | 57 |
|
57 |
public TaxonGraphBeforeTransactionCompleteProcess(PostUpdateEvent event){ |
|
58 |
private IRunAs runAs = null; |
|
59 |
|
|
60 |
public TaxonGraphBeforeTransactionCompleteProcess(PostUpdateEvent event, IRunAs runAs){ |
|
58 | 61 |
entity = (TaxonName) event.getEntity(); |
59 | 62 |
propertyNames = event.getPersister().getPropertyNames(); |
60 | 63 |
oldState = event.getOldState(); |
61 | 64 |
state = event.getState(); |
65 |
this.runAs = runAs; |
|
62 | 66 |
} |
63 | 67 |
|
64 |
public TaxonGraphBeforeTransactionCompleteProcess(PostInsertEvent event){ |
|
68 |
public TaxonGraphBeforeTransactionCompleteProcess(PostInsertEvent event, IRunAs runAs){
|
|
65 | 69 |
isInsertEvent = true; |
66 | 70 |
entity = (TaxonName) event.getEntity(); |
67 | 71 |
propertyNames = event.getPersister().getPropertyNames(); |
68 | 72 |
oldState = null; |
69 | 73 |
state = event.getState(); |
74 |
this.runAs = runAs; |
|
70 | 75 |
} |
71 | 76 |
|
72 | 77 |
/** |
... | ... | |
159 | 164 |
boolean isNotDeleted = parentSession.contains(taxonName) && taxonName.isPersited(); |
160 | 165 |
// TODO use audit event to check for deletion? |
161 | 166 |
if(isNotDeleted){ |
167 |
if(runAs != null){ |
|
168 |
runAs.apply(); |
|
169 |
} |
|
162 | 170 |
updateEdges(taxon); |
163 | 171 |
getSession().saveOrUpdate(taxon); |
172 |
if(runAs != null){ |
|
173 |
runAs.restore(); |
|
174 |
} |
|
164 | 175 |
} |
165 | 176 |
} |
166 | 177 |
|
... | ... | |
173 | 184 |
boolean isNotDeleted = parentSession.contains(taxonName) && taxonName.isPersited(); |
174 | 185 |
// TODO use audit event to check for deletion? |
175 | 186 |
if(isNotDeleted){ |
187 |
if(runAs != null){ |
|
188 |
runAs.apply(); |
|
189 |
} |
|
176 | 190 |
updateConceptReferenceInEdges(taxon, oldNomReference); |
177 | 191 |
getSession().saveOrUpdate(taxon); |
192 |
if(runAs != null){ |
|
193 |
runAs.restore(); |
|
194 |
} |
|
178 | 195 |
} |
179 | 196 |
} |
180 | 197 |
|
Also available in: Unified diff
ref #7648 free configurable TaxonGraphHibernateListener ready