Project

General

Profile

Download (7.96 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
import java.net.URI;
14

    
15
import javax.inject.Inject;
16

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

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

    
42
/**
43
 * Wizard for querying specimen provider.
44
 * @author pplitzner
45
 * @date 11.09.2013
46
 *
47
 */
48
public class SpecimenSearchWizardE4 extends Wizard {
49

    
50
    private OccurenceQuery query = null;
51
    private SpecimenProviderSelectionWizardPageE4 providerSelectionPage;
52
    private SpecimenSearchWizardPageE4 searchPage;
53

    
54
    @Inject
55
    private EPartService partService;
56

    
57
    private IEclipseContext context;
58

    
59
    /**
60
     * Creates a new SpecimenSearchWizard
61
     */
62
    @Inject
63
    public SpecimenSearchWizardE4(IEclipseContext context) {
64
        this.context = context;
65
        //default constructor needed for RCP extension points
66

    
67
        //check if connected to a data source. If not this will open an error dialog
68
        CdmStore.getCurrentApplicationConfiguration();
69
        this.setWindowTitle("Search Specimens");
70
    }
71

    
72
    @Override
73
    public boolean performFinish() {
74
        searchPage.getController().saveLastSate();
75
        providerSelectionPage.getController().saveLastState();
76
        ServiceWrapperBase serviceWrapper;
77
        DataImportViewE4<?> dataImportView = null;
78
        boolean biocase = providerSelectionPage.getQueryType().equals(QueryType.BIOCASE);
79
        query = searchPage.getQuery(biocase);
80
        Abcd206ImportConfigurator configurator =  CdmStore.getImportManager().AbcdConfigurator();
81
        configurator.setOccurenceQuery(query);
82
        configurator.setSourceUri(providerSelectionPage.getEndPoint());
83
        configurator.setAddMediaAsMediaSpecimen(true);
84
        configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
85
        configurator.setIgnoreAuthorship(true);
86
        configurator.setMoveNewTaxaToDefaultClassification(false);
87

    
88
        try {
89
            serviceWrapper = providerSelectionPage.getQueryServiceWrapper();
90
            InputStream stream = null;
91

    
92
            if (providerSelectionPage.getQueryType().equals(QueryType.BIOCASE)){
93
                stream =((BioCaseQueryServiceWrapper) serviceWrapper).query(query, configurator.getSourceUri());
94
                SpecimenImportReport report = new SpecimenImportReport();
95
                UnitAssociationWrapper unitNodesList = AbcdParseUtility.parseUnitsNodeList(stream, report);
96
                NodeList nodeList = unitNodesList.getAssociatedUnits();
97
                String prefix = unitNodesList.getPrefix();
98
                String associationType = unitNodesList.getAssociationType();
99
                if (nodeList != null){
100
                    URI uri =AbcdParseUtility.parseFirstUri(nodeList, report);
101
                    String content = AbcdParseUtility.parseFirstTextContent(nodeList);
102
                }
103

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

    
110
                dataImportView = specimenImportView;
111

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

    
118
                dataImportView = gbifImportView;
119

    
120
            }
121
        } catch (IOException e) {
122
            e.printStackTrace();
123
        }
124
       // CdmStore.getImportManager().run(configurator);
125

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

    
155
        return true;
156
    }
157

    
158
    @Override
159
    public void addPages() {
160
        addPage(providerSelectionPage);
161
        addPage(searchPage);
162
    }
163

    
164
    public void init() {
165
        providerSelectionPage = ContextInjectionFactory.make(SpecimenProviderSelectionWizardPageE4.class, context);
166
//      new SpecimenProviderSelectionWizardPage("Select specimen provider");
167
//      searchPage = new SpecimenSearchWizardPage("Specimen Search");
168
        searchPage = ContextInjectionFactory.make(SpecimenSearchWizardPageE4.class, context);
169
    }
170

    
171
    private class QueryJob extends Job{
172

    
173
        private final DataImportViewE4<?> view;
174

    
175
        public QueryJob(String name, DataImportViewE4<?> view) {
176
            super(name);
177
            this.view = view;
178
        }
179

    
180
        @Override
181
        protected IStatus run(IProgressMonitor monitor) {
182
            view.getConversationHolder().bind();
183
            view.query();
184
            Display.getDefault().asyncExec(new Runnable() {
185

    
186
                @Override
187
                public void run() {
188
                    CdmStore.getContextManager().notifyContextRefresh();
189
                }
190
            });
191
            return Status.OK_STATUS;
192
        }
193

    
194
    }
195
}
(6-6/7)