1 package eu
.etaxonomy
.taxeditor
.view
.dataimport
;
3 import org
.apache
.log4j
.Logger
;
4 import org
.eclipse
.jface
.action
.Action
;
5 import org
.eclipse
.swt
.widgets
.Table
;
6 import org
.eclipse
.swt
.widgets
.TableItem
;
7 import org
.eclipse
.ui
.IWorkbenchPart
;
8 import org
.eclipse
.ui
.IWorkbenchWindow
;
9 import org
.eclipse
.ui
.PlatformUI
;
11 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
12 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
13 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
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
;
18 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationBase
;
19 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
21 public class SaveImportedSpecimenAction
extends Action
{
23 private final Logger logger
= Logger
.getLogger(SaveImportedSpecimenAction
.class);
26 * @see org.eclipse.jface.action.Action#run()
30 final IWorkbenchWindow window
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow();
31 IWorkbenchPart activePart
= window
.getActivePage().getActivePart();
32 if(activePart
instanceof DataImportView
<?
>){
33 DataImportView
<?
> dataImportView
= (DataImportView
<?
>)activePart
;
34 Table table
= dataImportView
.getTable();
35 for(TableItem item
:table
.getItems()){
36 if(item
.getChecked()){
38 Object data
= item
.getData();
39 if(data
instanceof GbifResponse
){
40 data
= ((GbifResponse
) item
.getData()).getDerivedUnitFacade().innerFieldUnit();
42 if(data
instanceof SpecimenOrObservationBase
){
43 ConversationHolder conversation
= dataImportView
.getConversationHolder();
44 SpecimenOrObservationBase
<?
> specimen
= (SpecimenOrObservationBase
<?
>) data
;
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
);
51 else if(cdmEntity
instanceof TaxonNameBase
){
55 occurrenceService
.saveOrUpdate(specimen
);
56 dataImportView
.getConversationHolder().commit(true);
63 private void persistTerm(DefinedTermBase
<?
> term
, ITermService termService
, ConversationHolder conversation
){
65 //if the term does not exist in the DB save it
66 if(termService
.find(term
.getUuid())==null){
67 termService
.saveOrUpdate(term
);
74 * @see org.eclipse.jface.action.Action#getText()
77 public String
getText() {