package eu.etaxonomy.taxeditor.view.dataimport;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
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.OccurenceQuery;
+import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
+import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator;
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
if(activePart instanceof DataImportView<?>){
DataImportView<?> dataImportView = (DataImportView<?>)activePart;
Table table = dataImportView.getTable();
+ Collection<GbifResponse> checkedResults = new HashSet<GbifResponse>();
+ Object data;
+ Set<String[]> unitIds = new HashSet<String[]>();
for(TableItem item:table.getItems()){
if(item.getChecked()){
//Save Specimen
- Object data = item.getData();
- if(data instanceof GbifResponse){
- data = ((GbifResponse) item.getData()).getDerivedUnitFacade().innerFieldUnit();
- }
- if(data instanceof SpecimenOrObservationBase){
- 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);
- }
+ data = item.getData();
+ if(data instanceof GbifResponse){
+ checkedResults.add((GbifResponse)item.getData());
+ }
+ }
+ }
+ for (GbifResponse response:checkedResults){
+ if (response != null){
+ System.err.println("response: " + response.getDataSetUri() + " " + response.getDataSetProtocol());
+
+ String[] tripleId = response.getTripleID();
+ unitIds.add(tripleId);
+
+ }
}
+
+ DwcaImportConfigurator configurator = DwcaImportConfigurator.NewInstance(null, null);
+ OccurenceQuery query = new OccurenceQuery(unitIds);
+ configurator.setQuery(query);
+
+ Job job = CdmStore.getImportManager().createIOServiceJob(configurator);
+ CdmStore.getImportManager().run(job);
+
+
}
}
- }
+
private void persistTerm(DefinedTermBase<?> term, ITermService termService, ConversationHolder conversation){
if(term!=null){