Project

General

Profile

« Previous | Next » 

Revision f528c666

Added by Andreas Kohlbecker over 5 years ago

ref #7648 free configurable TaxonGraphHibernateListener ready

View differences:

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