Project

General

Profile

Download (3.88 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 java.net.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.ImportFromFileDataSourceWizardPageE4;
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
 */
42
public class RISImportWizardE4 extends AbstractImportWizardE4<RisReferenceImportConfigurator>{
43

    
44
    private RisReferenceImportConfigurator configurator;
45

    
46
    private ImportFromFileDataSourceWizardPageE4 dataSourcePage;
47

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

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

    
55
    /** {@inheritDoc} */
56
    @Override
57
    public RisReferenceImportConfigurator getConfigurator() {
58
        return configurator;
59
    }
60

    
61
    /** {@inheritDoc} */
62
    @Override
63
    public boolean performFinish() {
64
        URI source = dataSourcePage.getUri();
65
        configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
66
        File file = new File(source);
67
       FileInputStream fis;
68

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

    
81
        }
82

    
83
        return true;
84
    }
85

    
86
    /** {@inheritDoc} */
87
    @Override
88
    public void init() {
89
        configurator = RisReferenceImportConfigurator.NewInstance();
90

    
91
    }
92

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

    
109
    private void addDataSourcePage(){
110
        dataSourcePage = ContextInjectionFactory.make(ImportFromFileDataSourceWizardPageE4.class, context);
111
        dataSourcePage.setTitle("Choose Ris File");
112
        dataSourcePage.setDescription("Please choose an xls file in the Distribution Update format.");
113
        dataSourcePage.setExtensions(new String[]{"*.txt"});
114
        addPage(dataSourcePage);
115
    }
116

    
117
}
(2-2/2)