minor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / dataimport / SaveImportedSpecimenAction.java
index 99791e0798c60bca84f9fce652f4326aabd2367c..3ccef1a20abe60965c0561980aac0207dac19207 100644 (file)
@@ -1,6 +1,11 @@
 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;
@@ -11,7 +16,10 @@ 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.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;
@@ -32,33 +40,39 @@ public class SaveImportedSpecimenAction extends Action {
         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){