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
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportView.java | ||
---|---|---|
9 | 9 |
*/ |
10 | 10 |
package eu.etaxonomy.taxeditor.editor.view.dataimport; |
11 | 11 |
|
12 |
import java.util.ArrayList; |
|
12 | 13 |
import java.util.Collection; |
13 | 14 |
|
14 | 15 |
import org.apache.log4j.Logger; |
... | ... | |
48 | 49 |
|
49 | 50 |
protected final Logger logger = Logger.getLogger(DataImportView.class); |
50 | 51 |
|
51 |
protected Collection<T> results; |
|
52 |
protected Collection<T> results = new ArrayList<T>();
|
|
52 | 53 |
|
53 | 54 |
protected OccurenceQuery query; |
54 | 55 |
|
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 |
*/ |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/transientServices/TransientOccurenceService.java | ||
---|---|---|
36 | 36 |
import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge; |
37 | 37 |
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor; |
38 | 38 |
import eu.etaxonomy.cdm.model.common.Annotation; |
39 |
import eu.etaxonomy.cdm.model.common.ICdmBase; |
|
39 | 40 |
import eu.etaxonomy.cdm.model.common.ISourceable; |
40 | 41 |
import eu.etaxonomy.cdm.model.common.IdentifiableSource; |
41 | 42 |
import eu.etaxonomy.cdm.model.common.LSID; |
... | ... | |
914 | 915 |
return defaultService.findWithoutFlush(uuid); |
915 | 916 |
} |
916 | 917 |
|
918 |
/* (non-Javadoc) |
|
919 |
* @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getNonCascadedAssociatedElements(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.api.conversation.ConversationHolder) |
|
920 |
*/ |
|
921 |
@Override |
|
922 |
public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) { |
|
923 |
return defaultService.getNonCascadedAssociatedElements(specimen); |
|
924 |
} |
|
925 |
|
|
917 | 926 |
} |
Also available in: Unified diff