2 * Copyright (C) 2014 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.view
.dataimport
.e4
;
11 import java
.io
.IOException
;
12 import java
.io
.InputStream
;
13 import java
.util
.ArrayList
;
14 import java
.util
.Collection
;
16 import org
.apache
.http
.client
.ClientProtocolException
;
17 import org
.w3c
.dom
.Element
;
18 import org
.w3c
.dom
.NodeList
;
20 import eu
.etaxonomy
.cdm
.common
.URI
;
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
;
37 public class SpecimenImportViewE4
extends DataImportViewE4
<BioCaseResponse
> {
39 public static final String ID
= "eu.etaxonomy.taxeditor.view.dataimport.SpecimenImportView"; //$NON-NLS-1$
43 public SpecimenImportViewE4() {
47 public void setEndpoint(URI endPoint
) {
48 this.endPoint
= endPoint
;
52 protected String
getTextForTableItem(BioCaseResponse item
) {
53 //TODO: could be defined in user preferences...
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();
60 return name
+" - "+((Abcd206DataHolder
)item
.getAbcdDataHolder()).getCollectionCode() + " - "+ ((Abcd206DataHolder
)item
.getAbcdDataHolder()).getUnitID() + " - "+ ((Abcd206DataHolder
)item
.getAbcdDataHolder()).getKindOfUnit();
62 return ((Abcd206DataHolder
)item
.getAbcdDataHolder()).getCollectionCode() + " - "+ ((Abcd206DataHolder
)item
.getAbcdDataHolder()).getUnitID() + " - "+ ((Abcd206DataHolder
)item
.getAbcdDataHolder()).getKindOfUnit();
68 String errorMessage
= "Could not execute query " + query
;
70 Collection
<BioCaseResponse
> results
= new ArrayList
<BioCaseResponse
>();
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
);
78 // TransientCdmRepository repo =
79 // new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
80 //configurator.setCdmAppController(repo);
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();
105 response
= new BioCaseResponse(dataHolder
, endPoint
, tripleIdBioCase
);
106 results
.add(response
);
110 // Job job = CdmStore.getImportManager().createIOServiceJob(configurator, resultStream, SOURCE_TYPE.INPUTSTREAM);
111 // CdmStore.getImportManager().run(job);
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
);
123 // setResults(results);