Project

General

Profile

Download (5.84 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;
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

    
32
/**
33
 * @author pplitzner
34
 * @date Sep 3, 2014
35
 *
36
 */
37
public class SpecimenImportView extends DataImportView<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 SpecimenImportView() {
44
    }
45

    
46
    /**
47
     * @param endPoint
48
     */
49
    public void setEndpoint(URI endPoint) {
50
        this.endPoint = endPoint;
51
    }
52

    
53
    /* (non-Javadoc)
54
     * @see eu.etaxonomy.taxeditor.view.dataimport.DataImportView#getTextForTableItem(java.lang.Object)
55
     */
56
    @Override
57
    protected String getTextForTableItem(BioCaseResponse item) {
58
        //TODO: could be defined in user preferences...
59
        String name = null;
60
        if(!(((Abcd206DataHolder)item.getAbcdDataHolder()).getIdentificationList() == null) && !((Abcd206DataHolder)item.getAbcdDataHolder()).getIdentificationList().isEmpty()){
61
           Identification identification =  ((Abcd206DataHolder)item.getAbcdDataHolder()).getIdentificationList().iterator().next();
62
           name = identification.getScientificName();
63
        }
64
        if (name != null){
65
            return name +" - "+((Abcd206DataHolder)item.getAbcdDataHolder()).getCollectionCode() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getUnitID() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getKindOfUnit();
66
        }else {
67
            return ((Abcd206DataHolder)item.getAbcdDataHolder()).getCollectionCode() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getUnitID() + " - "+ ((Abcd206DataHolder)item.getAbcdDataHolder()).getKindOfUnit();
68
        }
69
    }
70

    
71
    /* (non-Javadoc)
72
     * @see eu.etaxonomy.taxeditor.view.dataimport.DataImportView#query()
73
     */
74
    @Override
75
    public void query() {
76
        String errorMessage = "Could not execute query " + query;
77

    
78
        Collection<BioCaseResponse> results = new ArrayList<BioCaseResponse>();
79
        try {
80
            //FIXME move ABCD import to cdmlib -> this will also get rid of the transient services
81
            InputStream resultStream;
82
            resultStream = new BioCaseQueryServiceWrapper().query(query, endPoint);
83
            Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(null, null);
84
            configurator.setSourceUri(endPoint);
85

    
86
            //            TransientCdmRepository repo =
87
//                    new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
88
            //configurator.setCdmAppController(repo);
89

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

    
113
                    response = new BioCaseResponse(dataHolder, endPoint, tripleIdBioCase );
114
                    results.add(response);
115
                }
116
            }
117

    
118
//            Job job = CdmStore.getImportManager().createIOServiceJob(configurator, resultStream, SOURCE_TYPE.INPUTSTREAM);
119
//            CdmStore.getImportManager().run(job);
120

    
121
            setResults(results);
122
        } catch (ClientProtocolException e) {
123
            logger.error(errorMessage, e);
124
        } catch (IOException e) {
125
            logger.error(errorMessage, e);
126
        }
127

    
128
       // setResults(results);
129

    
130
    }
131

    
132

    
133

    
134
}
(13-13/17)