Project

General

Profile

Download (3.8 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 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.io.e4.in.ris;
10

    
11
import java.io.File;
12
import java.io.FileInputStream;
13
import java.io.FileNotFoundException;
14
import java.io.IOException;
15
import eu.etaxonomy.cdm.common.URI;
16
import java.util.ArrayList;
17
import java.util.List;
18

    
19
import javax.inject.Inject;
20

    
21
import org.apache.commons.io.IOUtils;
22
import org.apache.log4j.Logger;
23
import org.eclipse.core.runtime.jobs.Job;
24
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
25
import org.eclipse.e4.core.contexts.IEclipseContext;
26
import org.eclipse.e4.ui.workbench.modeling.EPartService;
27

    
28
import eu.etaxonomy.cdm.database.DbSchemaValidation;
29
import eu.etaxonomy.cdm.io.common.IImportConfigurator.SOURCE_TYPE;
30
import eu.etaxonomy.cdm.io.reference.ris.in.RisReferenceImportConfigurator;
31
import eu.etaxonomy.taxeditor.io.e4.in.AbstractImportWizardE4;
32
import eu.etaxonomy.taxeditor.io.e4.in.GenericConfiguratorWizardPageE4;
33
import eu.etaxonomy.taxeditor.io.e4.in.ImportFromFileDataSourceWithReferenceWizardPage;
34
import eu.etaxonomy.taxeditor.io.wizard.ExcelDistributionUpdateWizard;
35
import eu.etaxonomy.taxeditor.store.CdmStore;
36

    
37
/**
38
 * @author k.luther
39
 * @date 12.05.2017
40
 */
41
public class RISImportWizardE4 extends AbstractImportWizardE4<RisReferenceImportConfigurator>{
42

    
43
    private RisReferenceImportConfigurator configurator;
44

    
45
    private ImportFromFileDataSourceWithReferenceWizardPage dataSourcePage;
46

    
47
    private static final Logger logger = Logger.getLogger(ExcelDistributionUpdateWizard.class);
48

    
49
    @Inject
50
    public RISImportWizardE4(IEclipseContext context, EPartService partService) {
51
        super(context, partService);
52
    }
53

    
54
    @Override
55
    public RisReferenceImportConfigurator getConfigurator() {
56
        return configurator;
57
    }
58

    
59
    @Override
60
    public boolean performFinish() {
61
        URI source = dataSourcePage.getUri();
62
        configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
63
        File file = new File(source);
64
       FileInputStream fis;
65

    
66
        try {
67
            fis = new FileInputStream(file);
68
            byte[] data;
69
            data = IOUtils.toByteArray(fis);
70
            configurator.setStream(data);
71
//TODO: workaround, needs to be changed to source as byte array
72
            Job job = CdmStore.getImportManager().createIOServiceJob(configurator, data, SOURCE_TYPE.INPUTSTREAM);
73
            CdmStore.getImportManager().run(job);
74
        } catch (FileNotFoundException e) {
75
            logger.error("Error while reading file" + source.toString());
76
        } catch (IOException e){
77

    
78
        }
79

    
80
        return true;
81
    }
82

    
83
    @Override
84
    public void init() {
85
        configurator = RisReferenceImportConfigurator.NewInstance();
86

    
87
    }
88

    
89
    @Override
90
    public void addPages() {
91
        addDataSourcePage();
92
    }
93
    @Override
94
    protected void addConfiguratorPage(){
95
        List<String> ignoreMethods = new ArrayList<>();
96
        ignoreMethods.add("setIgnoreNull");
97
        ignoreMethods.add("setInteractWithUser");
98
        ignoreMethods.add("setUseClassification");
99
        pageConfiguration = ContextInjectionFactory.make(GenericConfiguratorWizardPageE4.class, context);
100
        pageConfiguration.initImport(getConfigurator(), ignoreMethods, "Ris Import");
101
        addPage(pageConfiguration);
102
    }
103

    
104
    private void addDataSourcePage(){
105
        dataSourcePage = ContextInjectionFactory.make(ImportFromFileDataSourceWithReferenceWizardPage.class, context);
106
        dataSourcePage.setTitle("Choose Ris File");
107
        dataSourcePage.setDescription("Please choose a file in RIS format.");
108
        dataSourcePage.setExtensions(new String[]{"*.txt"});
109
        addPage(dataSourcePage);
110
    }
111

    
112
}
(2-2/2)