Project

General

Profile

Download (8.29 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2013 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.view.dataimport.e4;
10

    
11
import java.io.IOException;
12
import java.io.InputStream;
13

    
14
import javax.inject.Inject;
15

    
16
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IStatus;
18
import org.eclipse.core.runtime.Status;
19
import org.eclipse.core.runtime.jobs.Job;
20
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
21
import org.eclipse.e4.core.contexts.IEclipseContext;
22
import org.eclipse.e4.ui.model.application.MApplication;
23
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
24
import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
25
import org.eclipse.e4.ui.workbench.modeling.EModelService;
26
import org.eclipse.e4.ui.workbench.modeling.EPartService;
27
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
28
import org.eclipse.jface.wizard.Wizard;
29
import org.eclipse.swt.widgets.Display;
30

    
31
import eu.etaxonomy.cdm.database.DbSchemaValidation;
32
import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase;
33
import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
34
import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
35
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
36
import eu.etaxonomy.cdm.io.specimen.abcd206.in.AbcdParseUtility;
37
import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;
38
import eu.etaxonomy.cdm.io.specimen.abcd206.in.UnitAssociationWrapper;
39
import eu.etaxonomy.taxeditor.store.AppModelId;
40
import eu.etaxonomy.taxeditor.store.CdmStore;
41
import eu.etaxonomy.taxeditor.view.dataimport.QueryType;
42
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
43
import eu.etaxonomy.taxeditor.workbench.part.IEditorAreaPart;
44

    
45
/**
46
 * Wizard for querying specimen provider.
47
 * @author pplitzner
48
 * @date 11.09.2013
49
 *
50
 */
51
public class SpecimenSearchWizardE4 extends Wizard {
52

    
53
    private OccurenceQuery query = null;
54
    private SpecimenProviderSelectionWizardPageE4 providerSelectionPage;
55
    private SpecimenSearchWizardPageE4 searchPage;
56

    
57
    @Inject
58
    private EPartService partService;
59

    
60
    @Inject
61
    private MApplication application;
62

    
63
    @Inject
64
    private EModelService modelService;
65

    
66
    private IEclipseContext context;
67

    
68
    /**
69
     * Creates a new SpecimenSearchWizard
70
     */
71
    @Inject
72
    public SpecimenSearchWizardE4(IEclipseContext context) {
73
        this.context = context;
74
        //default constructor needed for RCP extension points
75

    
76
        //check if connected to a data source. If not this will open an error dialog
77
        CdmStore.getCurrentApplicationConfiguration();
78
        this.setWindowTitle("Search Specimens");
79
    }
80

    
81
    @Override
82
    public boolean performFinish() {
83
        searchPage.getController().saveLastSate();
84
        providerSelectionPage.getController().saveLastState();
85
        ServiceWrapperBase serviceWrapper;
86
        DataImportViewE4<?> dataImportView = null;
87
        boolean biocase = providerSelectionPage.getQueryType().equals(QueryType.BIOCASE);
88
        query = searchPage.getQuery(biocase);
89
        Abcd206ImportConfigurator configurator =  CdmStore.getImportManager().AbcdConfigurator();
90
        configurator.setOccurenceQuery(query);
91
        configurator.setSourceUri(providerSelectionPage.getEndPoint());
92
        configurator.setAddMediaAsMediaSpecimen(true);
93
        configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
94
        configurator.setIgnoreAuthorship(true);
95
        configurator.setMoveNewTaxaToDefaultClassification(false);
96

    
97
        try {
98
            serviceWrapper = providerSelectionPage.getQueryServiceWrapper();
99
            InputStream stream = null;
100
            MPart part = null;
101
            if (providerSelectionPage.getQueryType().equals(QueryType.BIOCASE)){
102
                stream =((BioCaseQueryServiceWrapper) serviceWrapper).query(query, configurator.getSourceUri());
103
                SpecimenImportReport report = new SpecimenImportReport();
104
                UnitAssociationWrapper unitNodesList = AbcdParseUtility.parseUnitsNodeList(stream, report);
105

    
106
                part = partService.createPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_VIEW_DATAIMPORT_E4_SPECIMENIMPORTVIEWE4);
107
                part = partService.showPart(part, PartState.ACTIVATE);
108
                SpecimenImportViewE4 specimenImportView = (SpecimenImportViewE4) part.getObject();
109
                specimenImportView.setEndpoint(providerSelectionPage.getEndPoint());
110
                specimenImportView.setQuery(query);
111

    
112
                dataImportView = specimenImportView;
113

    
114
            } else{
115
                part = partService.createPart(AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_VIEW_DATAIMPORT_E4_GBIFRESPONSEIMPORTVIEWE4);
116
                part = partService.showPart(part, PartState.ACTIVATE);
117
                GbifResponseImportViewE4 gbifImportView = (GbifResponseImportViewE4) part.getObject();
118
                gbifImportView.setQuery(query);
119

    
120
                dataImportView = gbifImportView;
121

    
122
            }
123
            if(part.getObject() instanceof IEditorAreaPart){
124
                MPartStack editorAreaPartStack = WorkbenchUtility.getEditorAreaPartStack(application, modelService);
125
                if(editorAreaPartStack!=null){
126
                    editorAreaPartStack.getChildren().add(part);
127
                }
128
                part = partService.showPart(part, PartState.VISIBLE);
129
            }
130
        } catch (IOException e) {
131
            e.printStackTrace();
132
        }
133
       // CdmStore.getImportManager().run(configurator);
134

    
135
//        try {
136
//            switch (providerSelectionPage.getQueryType()) {
137
//            case BIOCASE:
138
//                SpecimenImportView specimenImportView = (SpecimenImportView) TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage()
139
//                        .showView(SpecimenImportView.ID, "query_"+query.toString().replaceAll(",", ""),IWorkbenchPage.VIEW_ACTIVATE);
140
//                specimenImportView.setEndpoint(providerSelectionPage.getEndPoint());
141
//                dataImportView = specimenImportView;
142
//                break;
143
//            case GBIF:
144
//                dataImportView = (GbifResponseImportView) TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage()
145
//                .showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""),IWorkbenchPage.VIEW_ACTIVATE);
146
//                break;
147
//            }
148
//        } catch ( PartInitException e ) {
149
//            logger.error("Could not open import view for query: " + query.toString(), e);
150
//        }
151
//        if(dataImportView!=null){
152
//            dataImportView.setQuery(query);
153
////            dataImportView.query();
154
////            Display.getDefault().asyncExec(new Runnable() {
155
////
156
////                @Override
157
////                public void run() {
158
////                    CdmStore.getContextManager().notifyContextRefresh();
159
////                }
160
////            });
161
            Job queryJob = new QueryJob("Query specimen provider", dataImportView);
162
           queryJob.schedule();
163

    
164
        return true;
165
    }
166

    
167
    @Override
168
    public void addPages() {
169
        addPage(providerSelectionPage);
170
        addPage(searchPage);
171
    }
172

    
173
    public void init() {
174
        providerSelectionPage = ContextInjectionFactory.make(SpecimenProviderSelectionWizardPageE4.class, context);
175
//      new SpecimenProviderSelectionWizardPage("Select specimen provider");
176
//      searchPage = new SpecimenSearchWizardPage("Specimen Search");
177
        searchPage = ContextInjectionFactory.make(SpecimenSearchWizardPageE4.class, context);
178
    }
179

    
180
    private class QueryJob extends Job{
181

    
182
        private final DataImportViewE4<?> view;
183

    
184
        public QueryJob(String name, DataImportViewE4<?> view) {
185
            super(name);
186
            this.view = view;
187
        }
188

    
189
        @Override
190
        protected IStatus run(IProgressMonitor monitor) {
191
            view.getConversationHolder().bind();
192
            view.query();
193
            Display.getDefault().asyncExec(new Runnable() {
194

    
195
                @Override
196
                public void run() {
197
                    CdmStore.getContextManager().notifyContextRefresh();
198
                }
199
            });
200
            return Status.OK_STATUS;
201
        }
202

    
203
    }
204
}
(6-6/7)