Project

General

Profile

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

    
12
import java.io.IOException;
13
import java.io.InputStream;
14
import java.net.URI;
15

    
16
import org.apache.log4j.Logger;
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.jface.viewers.IStructuredSelection;
22
import org.eclipse.jface.wizard.Wizard;
23
import org.eclipse.swt.widgets.Display;
24
import org.eclipse.ui.IImportWizard;
25
import org.eclipse.ui.IWorkbench;
26
import org.eclipse.ui.IWorkbenchPage;
27
import org.eclipse.ui.IWorkbenchWindow;
28
import org.eclipse.ui.PartInitException;
29
import org.eclipse.ui.PlatformUI;
30
import org.w3c.dom.NodeList;
31

    
32
import eu.etaxonomy.cdm.database.DbSchemaValidation;
33
import eu.etaxonomy.cdm.ext.common.ServiceWrapperBase;
34
import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery;
35
import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
36
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
37

    
38
import eu.etaxonomy.cdm.io.specimen.abcd206.in.AbcdParseUtility;
39
import eu.etaxonomy.cdm.io.specimen.abcd206.in.SpecimenImportReport;
40
import eu.etaxonomy.cdm.io.specimen.abcd206.in.UnitAssociationWrapper;
41
import eu.etaxonomy.taxeditor.store.CdmStore;
42

    
43
/**
44
 * Wizard for querying specimen provider.
45
 * @author pplitzner
46
 * @date 11.09.2013
47
 *
48
 */
49
public class SpecimenSearchWizard extends Wizard implements IImportWizard {
50
    private static final Logger logger = Logger.getLogger(SpecimenSearchWizard.class);
51

    
52
    private OccurenceQuery query = null;
53
    private SpecimenProviderSelectionWizardPage providerSelectionPage;
54
    private SpecimenSearchWizardPage searchPage;
55

    
56
    /**
57
     * Creates a new SpecimenSearchWizard
58
     */
59
    public SpecimenSearchWizard() {
60
        //default constructor needed for RCP extension points
61

    
62
        //check if connected to a data source. If not this will open an error dialog
63
        CdmStore.getCurrentApplicationConfiguration();
64
        this.setWindowTitle("Search Specimens");
65
    }
66

    
67

    
68
    /* (non-Javadoc)
69
     * @see org.eclipse.jface.wizard.Wizard#performFinish()
70
     */
71
    @Override
72
    public boolean performFinish() {
73
        searchPage.getController().saveLastSate();
74
        providerSelectionPage.getController().saveLastState();
75
        ServiceWrapperBase serviceWrapper;
76
        DataImportView<?> dataImportView = null;
77
        query = searchPage.getQuery();
78
        Abcd206ImportConfigurator configurator =  CdmStore.getImportManager().AbcdConfigurator();
79
        configurator.setOccurenceQuery(query);
80
        configurator.setSourceUri(providerSelectionPage.getEndPoint());
81
        configurator.setAddMediaAsMediaSpecimen(true);
82
        configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
83
        configurator.setIgnoreAuthorship(true);
84
      
85
        //Job job = CdmStore.getImportManager().createIOServiceJob(configurator, new File(source), SOURCE_TYPE.INPUTSTREAM);
86
        //CdmStore.getImportManager().run(job);
87
        try {
88
            serviceWrapper = providerSelectionPage.getQueryServiceWrapper();
89
            InputStream stream = null;
90

    
91
            final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
92
            IWorkbenchPage activePart = window.getActivePage();
93
            if (providerSelectionPage.getQueryType().equals(QueryType.BIOCASE)){
94
                stream =((BioCaseQueryServiceWrapper) serviceWrapper).query(query, configurator.getSourceUri());
95
                SpecimenImportReport report = new SpecimenImportReport();
96
                UnitAssociationWrapper unitNodesList = AbcdParseUtility.parseUnitsNodeList(stream, report);
97
                NodeList nodeList = unitNodesList.getAssociatedUnits();
98
                String prefix = unitNodesList.getPrefix();
99
                String associationType = unitNodesList.getAssociationType();
100
                URI uri =AbcdParseUtility.parseFirstUri(nodeList, report);
101
                String content = AbcdParseUtility.parseFirstTextContent(nodeList);
102
                System.out.println(content);
103

    
104

    
105
                SpecimenImportView specimenImportView = new SpecimenImportView();
106
                try {
107
                    specimenImportView = (SpecimenImportView) activePart.showView(SpecimenImportView.ID);
108
                    specimenImportView.setEndpoint(providerSelectionPage.getEndPoint());
109
                    specimenImportView.setQuery(query);
110
                    dataImportView = specimenImportView;
111
                } catch (PartInitException e) {
112
                    // TODO Auto-generated catch block
113
                    e.printStackTrace();
114

    
115
                }
116

    
117
            } else{
118
                try {
119
                	
120
                    dataImportView = (GbifResponseImportView) activePart.showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""), IWorkbenchPage.VIEW_ACTIVATE);
121
                    dataImportView.setQuery(query);		
122
                    	//	(GbifResponseImportView) activePart.showView(GbifResponseImportView.ID);getWorkbench().getActiveWorkbenchWindow().getActivePage()
123
                         // .showView(GbifResponseImportView.ID, "query_"+query.toString().replaceAll(",", ""),IWorkbenchPage.VIEW_ACTIVATE);
124

    
125
                } catch (PartInitException e) {
126
                    // TODO Auto-generated catch block
127
                    e.printStackTrace();
128
                }
129

    
130
            }
131

    
132

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

    
168
        return true;
169
    }
170

    
171
    /* (non-Javadoc)
172
     * @see org.eclipse.jface.wizard.Wizard#addPages()
173
     */
174
    @Override
175
    public void addPages() {
176
        addPage(providerSelectionPage);
177
        addPage(searchPage);
178
    }
179

    
180
    /* (non-Javadoc)
181
     * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
182
     */
183
    @Override
184
    public void init(IWorkbench workbench, IStructuredSelection selection) {
185
        providerSelectionPage = new SpecimenProviderSelectionWizardPage("Select specimen provider");
186
        searchPage = new SpecimenSearchWizardPage("Specimen Search");
187
    }
188

    
189
    private class QueryJob extends Job{
190

    
191
        private final DataImportView<?> view;
192

    
193
        /**
194
         * @param name
195
         */
196
        public QueryJob(String name, DataImportView<?> view) {
197
            super(name);
198
            this.view = view;
199
        }
200

    
201
        /* (non-Javadoc)
202
         * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
203
         */
204
        @Override
205
        protected IStatus run(IProgressMonitor monitor) {
206
            view.getConversationHolder().bind();
207
            view.query();
208
            Display.getDefault().asyncExec(new Runnable() {
209

    
210
                @Override
211
                public void run() {
212
                    CdmStore.getContextManager().notifyContextRefresh();
213
                }
214
            });
215
            return Status.OK_STATUS;
216
        }
217

    
218
    }
219
}
(15-15/16)