Project

General

Profile

Download (5.73 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2014 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
import java.util.ArrayList;
15
import java.util.Collection;
16

    
17
import org.apache.http.client.ClientProtocolException;
18
import org.w3c.dom.Element;
19
import org.w3c.dom.NodeList;
20

    
21
import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseQueryServiceWrapper;
22
import eu.etaxonomy.cdm.ext.occurrence.bioCase.BioCaseResponse;
23
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206DataHolder;
24
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
25
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportParser;
26
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportState;
27
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206XMLFieldGetter;
28
import eu.etaxonomy.cdm.io.specimen.abcd206.in.AbcdParseUtility;
29
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Identification;
30
import eu.etaxonomy.cdm.io.specimen.abcd206.in.UnitAssociationWrapper;
31
import eu.etaxonomy.taxeditor.model.MessagingUtils;
32

    
33
/**
34
 * @author pplitzner
35
 * @date Sep 3, 2014
36
 */
37
public class SpecimenImportViewE4 extends DataImportViewE4<BioCaseResponse> {
38

    
39
    public static final String ID = "eu.etaxonomy.taxeditor.view.dataimport.SpecimenImportView"; //$NON-NLS-1$
40

    
41
    private URI endPoint;
42

    
43
    public SpecimenImportViewE4() {
44

    
45
    }
46

    
47
    public void setEndpoint(URI endPoint) {
48
        this.endPoint = endPoint;
49
    }
50

    
51
    @Override
52
    protected String getTextForTableItem(BioCaseResponse item) {
53
        //TODO: could be defined in user preferences...
54
        String name = null;
55
        if(!(((Abcd206DataHolder)item.getAbcdDataHolder()).getIdentificationList() == null) && !((Abcd206DataHolder)item.getAbcdDataHolder()).getIdentificationList().isEmpty()){
56
           Identification identification =  ((Abcd206DataHolder)item.getAbcdDataHolder()).getIdentificationList().iterator().next();
57
           name = identification.getScientificName();
58
        }
59
        if (name != null){
60
            return name +" - "+((Abcd206DataHolder)item.getAbcdDataHolder()).getCollectionCode() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getUnitID() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getKindOfUnit();
61
        }else {
62
            return ((Abcd206DataHolder)item.getAbcdDataHolder()).getCollectionCode() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getUnitID() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getKindOfUnit();
63
        }
64
    }
65

    
66
    @Override
67
    public void query() {
68
        String errorMessage = "Could not execute query " + query;
69

    
70
        Collection<BioCaseResponse> results = new ArrayList<BioCaseResponse>();
71
        try {
72
            //FIXME move ABCD import to cdmlib -> this will also get rid of the transient services
73
            InputStream resultStream;
74
            resultStream = new BioCaseQueryServiceWrapper().query(query, endPoint);
75
            Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(null, null);
76
            configurator.setSourceUri(endPoint);
77

    
78
            //            TransientCdmRepository repo =
79
//                    new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
80
            //configurator.setCdmAppController(repo);
81

    
82
            //TODO: do not query all data but with the selected triple IDs -> see GbifResponseImportView
83
            configurator.setAddMediaAsMediaSpecimen(true);
84
            configurator.setAllowReuseOtherClassifications(true);
85
            configurator.setMoveNewTaxaToDefaultClassification(false);
86
            UnitAssociationWrapper unitAssociationWrapper = AbcdParseUtility.parseUnitsNodeList(resultStream, null);
87
            NodeList unitsList = unitAssociationWrapper.getAssociatedUnits();
88
            Abcd206DataHolder dataHolder = new Abcd206DataHolder();
89
            Abcd206XMLFieldGetter abcdFieldGetter = new Abcd206XMLFieldGetter(dataHolder, unitAssociationWrapper.getPrefix());
90
            Abcd206ImportState state = new Abcd206ImportState(configurator);
91
            state.setDataHolder(dataHolder);
92
            BioCaseResponse response = null;
93
            if (unitsList != null){
94
                for (int i = 0; i <unitsList.getLength(); i++){
95
                    Element item = (Element) unitsList.item(i);
96
                    dataHolder = new Abcd206DataHolder();
97
                    abcdFieldGetter = new Abcd206XMLFieldGetter(dataHolder, unitAssociationWrapper.getPrefix());
98
                    state.setPrefix(unitAssociationWrapper.getPrefix());
99
                    Abcd206ImportParser.setUnitPropertiesXML(item, abcdFieldGetter, state);
100
                    String[] tripleIdBioCase = new String[3];
101
                    tripleIdBioCase[0] =dataHolder.getUnitID();
102
                    tripleIdBioCase[1] = dataHolder.getInstitutionCode();
103
                    tripleIdBioCase[2] = dataHolder.getCollectionCode();
104

    
105
                    response = new BioCaseResponse(dataHolder, endPoint, tripleIdBioCase );
106
                    results.add(response);
107
                }
108
            }
109

    
110
//            Job job = CdmStore.getImportManager().createIOServiceJob(configurator, resultStream, SOURCE_TYPE.INPUTSTREAM);
111
//            CdmStore.getImportManager().run(job);
112

    
113
            setResults(results);
114

    
115
        } catch (ClientProtocolException e) {
116
            MessagingUtils.error(getClass(), e);
117
           // logger.error(errorMessage, e);
118
        } catch (IOException e) {
119
            //logger.error(errorMessage, e);
120
            MessagingUtils.error(getClass(), e);
121
        }
122

    
123
       // setResults(results);
124

    
125
    }
126
}
(4-4/7)