import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.taxeditor.store.CdmStore;
data = ((GbifResponse) item.getData()).getDerivedUnitFacade().innerFieldUnit();
}
if(data instanceof SpecimenOrObservationBase){
- dataImportView.getConversationHolder().bind();
- CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) data);
+ ConversationHolder conversation = dataImportView.getConversationHolder();
+ SpecimenOrObservationBase<?> specimen = (SpecimenOrObservationBase<?>) data;
+ conversation.bind();
+ IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class);
+ for(ICdmBase cdmEntity:occurrenceService.getNonCascadedAssociatedElements(specimen)){
+ if(cdmEntity instanceof DefinedTermBase){
+ persistTerm((DefinedTermBase<?>) cdmEntity, CdmStore.getService(ITermService.class), conversation);
+ }
+ else if(cdmEntity instanceof TaxonNameBase){
+ //user interaction
+ }
+ }
+ occurrenceService.saveOrUpdate(specimen);
dataImportView.getConversationHolder().commit(true);
}
}
}
}
+ private void persistTerm(DefinedTermBase<?> term, ITermService termService, ConversationHolder conversation){
+ if(term!=null){
+ //if the term does not exist in the DB save it
+ if(termService.find(term.getUuid())==null){
+ termService.saveOrUpdate(term);
+ }
+ }
+ }
+
+
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#getText()
*/