Project

General

Profile

Download (8.75 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;
10

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

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

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

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

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

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

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

    
66

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

    
90
            final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
91
            IWorkbenchPage activePart = window.getActivePage();
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
                URI uri =AbcdParseUtility.parseFirstUri(nodeList, report);
100
                String content = AbcdParseUtility.parseFirstTextContent(nodeList);
101
                System.out.println(content);
102

    
103

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

    
114
                }
115

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

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

    
129
            }
130

    
131

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

    
167
        return true;
168
    }
169

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

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

    
188
    private class QueryJob extends Job{
189

    
190
        private final DataImportView<?> view;
191

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

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

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

    
217
    }
218
}
(15-15/16)