*/
package eu.etaxonomy.taxeditor.editor.view.dataimport;
+import java.util.ArrayList;
import java.util.Collection;
import org.apache.log4j.Logger;
protected final Logger logger = Logger.getLogger(DataImportView.class);
- protected Collection<T> results;
+ protected Collection<T> results = new ArrayList<T>();
protected OccurenceQuery query;
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()
*/
import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.common.ISourceable;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.LSID;
return defaultService.findWithoutFlush(uuid);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getNonCascadedAssociatedElements(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.api.conversation.ConversationHolder)
+ */
+ @Override
+ public Collection<ICdmBase> getNonCascadedAssociatedElements(SpecimenOrObservationBase<?> specimen) {
+ return defaultService.getNonCascadedAssociatedElements(specimen);
+ }
+
}