Project

General

Profile

Download (3.35 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.dataimport;
2

    
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;
10

    
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;
20

    
21
public class SaveImportedSpecimenAction extends Action {
22

    
23
    private final Logger logger = Logger.getLogger(SaveImportedSpecimenAction.class);
24

    
25
    /* (non-Javadoc)
26
     * @see org.eclipse.jface.action.Action#run()
27
     */
28
    @Override
29
    public void 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()){
37
                    //Save Specimen
38
                    Object data = item.getData();
39
                    if(data instanceof GbifResponse){
40
                        data = ((GbifResponse) item.getData()).getDerivedUnitFacade().innerFieldUnit();
41
                    }
42
                    if(data instanceof SpecimenOrObservationBase){
43
                        ConversationHolder conversation = dataImportView.getConversationHolder();
44
                        SpecimenOrObservationBase<?> specimen = (SpecimenOrObservationBase<?>) data;
45
                        conversation.bind();
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);
50
                            }
51
                            else if(cdmEntity instanceof TaxonNameBase){
52
                                //user interaction
53
                            }
54
                        }
55
                        occurrenceService.saveOrUpdate(specimen);
56
                        dataImportView.getConversationHolder().commit(true);
57
                    }
58
                }
59
            }
60
        }
61
    }
62

    
63
    private void persistTerm(DefinedTermBase<?> term, ITermService termService, ConversationHolder conversation){
64
        if(term!=null){
65
            //if the term does not exist in the DB save it
66
            if(termService.find(term.getUuid())==null){
67
                termService.saveOrUpdate(term);
68
            }
69
        }
70
    }
71

    
72

    
73
    /* (non-Javadoc)
74
     * @see org.eclipse.jface.action.Action#getText()
75
     */
76
    @Override
77
    public String getText() {
78
        return "Import";
79
    }
80

    
81
}
(10-10/15)