Project

General

Profile

« Previous | Next » 

Revision 00a62062

Added by Patrick Plitzner over 9 years ago

  • removed @Cascade for country in GatheringEvent because DefinedTerms should not be cascaded
    • added new service method to occurence service to find all CDM entities that are not saved via cascading
    • added tests for new method
    • added test for concurrent session saving of terms
    • made use of method for specimen import via DataImportView

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveImportedSpecimenAction.java
8 8
import org.eclipse.ui.IWorkbenchWindow;
9 9
import org.eclipse.ui.PlatformUI;
10 10

  
11
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
11 12
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
13
import eu.etaxonomy.cdm.api.service.ITermService;
12 14
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
15
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
16
import eu.etaxonomy.cdm.model.common.ICdmBase;
17
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
13 18
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
14 19
import eu.etaxonomy.taxeditor.store.CdmStore;
15 20

  
......
35 40
                        data = ((GbifResponse) item.getData()).getDerivedUnitFacade().innerFieldUnit();
36 41
                    }
37 42
                    if(data instanceof SpecimenOrObservationBase){
38
                        dataImportView.getConversationHolder().bind();
39
                        CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) data);
43
                        ConversationHolder conversation = dataImportView.getConversationHolder();
44
                        SpecimenOrObservationBase<?> specimen = (SpecimenOrObservationBase<?>) data;
45
                        conversation.bind();
46
                        IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class);
47
                        for(ICdmBase cdmEntity:occurrenceService.getNonCascadedAssociatedElements(specimen)){
48
                            if(cdmEntity instanceof DefinedTermBase){
49
                                persistTerm((DefinedTermBase<?>) cdmEntity, CdmStore.getService(ITermService.class), conversation);
50
                            }
51
                            else if(cdmEntity instanceof TaxonNameBase){
52
                                //user interaction
53
                            }
54
                        }
55
                        occurrenceService.saveOrUpdate(specimen);
40 56
                        dataImportView.getConversationHolder().commit(true);
41 57
                    }
42 58
                }
......
44 60
        }
45 61
    }
46 62

  
63
    private void persistTerm(DefinedTermBase<?> term, ITermService termService, ConversationHolder conversation){
64
        if(term!=null){
65
            //if the term does not exist in the DB save it
66
            if(termService.find(term.getUuid())==null){
67
                termService.saveOrUpdate(term);
68
            }
69
        }
70
    }
71

  
72

  
47 73
    /* (non-Javadoc)
48 74
     * @see org.eclipse.jface.action.Action#getText()
49 75
     */

Also available in: Unified diff