Revision 7c0a9421
Added by Andreas Müller about 6 years ago
app-import/src/main/java/eu/etaxonomy/cdm/io/edaphobase/EdaphobaseTaxonImport.java | ||
---|---|---|
30 | 30 |
import eu.etaxonomy.cdm.model.common.Language; |
31 | 31 |
import eu.etaxonomy.cdm.model.common.Marker; |
32 | 32 |
import eu.etaxonomy.cdm.model.common.MarkerType; |
33 |
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary; |
|
33 | 34 |
import eu.etaxonomy.cdm.model.common.Representation; |
34 | 35 |
import eu.etaxonomy.cdm.model.name.IZoologicalName; |
35 | 36 |
import eu.etaxonomy.cdm.model.name.Rank; |
37 |
import eu.etaxonomy.cdm.model.name.RankClass; |
|
36 | 38 |
import eu.etaxonomy.cdm.model.name.TaxonNameFactory; |
37 | 39 |
import eu.etaxonomy.cdm.model.reference.Reference; |
38 | 40 |
import eu.etaxonomy.cdm.model.reference.ReferenceFactory; |
... | ... | |
72 | 74 |
|
73 | 75 |
@Override |
74 | 76 |
protected String getRecordQuery(EdaphobaseImportConfigurator config) { |
75 |
String result = " SELECT DISTINCT t.*, r.value_summary as rankStr, pr.value_summary as parentRankStr, ppr.value_summary as grandParentRankStr, " |
|
76 |
+ " pt.name as parentName, ppt.name as grandParentName " |
|
77 |
String result = " SELECT DISTINCT t.*, r.value_summary as rankStr, pr.value_summary as parentRankStr, ppr.value_summary as grandParentRankStr, pppr.value_summary as grandGrandParentRankStr, "
|
|
78 |
+ " pt.name as parentName, ppt.name as grandParentName, pppt.name as grandGrandParentName "
|
|
77 | 79 |
+ " FROM tax_taxon t " |
78 | 80 |
+ " LEFT JOIN tax_taxon pt ON t.parent_taxon_fk = pt.taxon_id " |
79 |
+ " LEFT JOIN tax_taxon ppt ON pt.parent_taxon_fk = ppt.taxon_id" |
|
81 |
+ " LEFT JOIN tax_taxon ppt ON pt.parent_taxon_fk = ppt.taxon_id " |
|
82 |
+ " LEFT JOIN tax_taxon pppt ON ppt.parent_taxon_fk = pppt.taxon_id " |
|
80 | 83 |
+ " LEFT OUTER JOIN selective_list.element r ON r.element_id = t.tax_rank_fk " |
81 | 84 |
+ " LEFT OUTER JOIN selective_list.element pr ON pr.element_id = pt.tax_rank_fk " |
82 | 85 |
+ " LEFT OUTER JOIN selective_list.element ppr ON ppr.element_id = ppt.tax_rank_fk " |
86 |
+ " LEFT OUTER JOIN selective_list.element pppr ON pppr.element_id = pppt.tax_rank_fk " |
|
83 | 87 |
+ " WHERE t.taxon_id IN (@IDSET)"; |
84 | 88 |
result = result.replace("@IDSET", IPartitionedIO.ID_LIST_TOKEN); |
85 | 89 |
return result; |
... | ... | |
138 | 142 |
String rankStr = rs.getString("rankStr"); |
139 | 143 |
String parentRankStr = rs.getString("parentRankStr"); |
140 | 144 |
String grandParentRankStr = rs.getString("grandParentRankStr"); |
145 |
String grandGrandParentRankStr = rs.getString("grandGrandParentRankStr"); |
|
141 | 146 |
String parentNameStr = rs.getString("parentName"); |
142 | 147 |
String grandParentNameStr = rs.getString("grandParentName"); |
148 |
String grandGrandParentNameStr = rs.getString("grandGrandParentName"); |
|
143 | 149 |
|
144 | 150 |
TaxonBase<?> taxonBase; |
145 | 151 |
|
146 | 152 |
rankStr= extractEnglish(rankStr); |
147 | 153 |
parentRankStr= extractEnglish(parentRankStr); |
148 | 154 |
grandParentRankStr= extractEnglish(grandParentRankStr); |
155 |
grandGrandParentRankStr= extractEnglish(grandGrandParentRankStr); |
|
149 | 156 |
|
150 | 157 |
//Name etc. |
151 | 158 |
Rank rank = makeRank(state, rankStr); |
... | ... | |
156 | 163 |
setNamePart(parentNameStr, parentRank, name); |
157 | 164 |
Rank parentParentRank = makeRank(state, grandParentRankStr); |
158 | 165 |
setNamePart(grandParentNameStr, parentParentRank, name); |
159 |
if (parentParentRank != null && parentParentRank.isLower(Rank.GENUS()) || isBlank(name.getGenusOrUninomial()) ){ |
|
160 |
logger.warn("Grandparent rank is lower than genus for " + name.getTitleCache() + " (edapho-id: " + id + "; cdm-id: " + name.getId()); |
|
166 |
Rank grandParentParentRank = makeRank(state, grandGrandParentRankStr); |
|
167 |
setNamePart(grandGrandParentNameStr, grandParentParentRank, name); |
|
168 |
if (grandParentParentRank != null && grandParentParentRank.isLower(Rank.GENUS()) || isBlank(name.getGenusOrUninomial()) ){ |
|
169 |
logger.warn("Grand-Grandparent rank is lower than genus for " + |
|
170 |
name.getTitleCache() + " (edapho-id: " + id + "; cdm-id: " + name.getId() + ")"); |
|
161 | 171 |
} |
162 | 172 |
|
163 | 173 |
//Authors |
... | ... | |
255 | 265 |
|
256 | 266 |
if (rank != null){ |
257 | 267 |
Set<Marker> markers = rank.getMarkers(); |
258 |
if ( markers.size() == 0){ //we assume that no markers exist. at least not for markers of unused ranks
|
|
268 |
if ( markers.size() == 0){ //we assume that no markers exist, at least not for markers of unused ranks
|
|
259 | 269 |
UUID edaphoRankMarkerTypeUuid = state.getTransformer().getMarkerTypeUuid("EdaphoRankMarker"); |
260 | 270 |
MarkerType marker = getMarkerType(state, edaphoRankMarkerTypeUuid, "Edaphobase rank", "Rank used in Edaphobase", "EdaRk" ); |
261 | 271 |
Representation rep = Representation.NewInstance("Rang, verwendet in Edaphobase", "Edaphobase Rang", "EdaRg", Language.GERMAN()); |
... | ... | |
264 | 274 |
getTermService().saveOrUpdate(rank); |
265 | 275 |
} |
266 | 276 |
}else{ |
267 |
logger.warn("Rank is null and marker can not be set");
|
|
277 |
logger.info("Rank is null and marker can not be set");
|
|
268 | 278 |
} |
269 | 279 |
} |
270 | 280 |
|
... | ... | |
356 | 366 |
private void setNamePart(String nameStr, Rank rank, IZoologicalName name) { |
357 | 367 |
if (rank != null){ |
358 | 368 |
if (rank.isSupraGeneric() || rank.isGenus()){ |
359 |
if (StringUtils.isBlank(name.getGenusOrUninomial())){
|
|
369 |
if (isBlank(name.getGenusOrUninomial())){ |
|
360 | 370 |
name.setGenusOrUninomial(nameStr); |
361 | 371 |
} |
362 | 372 |
}else if (rank.isInfraGenericButNotSpeciesGroup()){ |
363 |
if (StringUtils.isBlank(name.getInfraGenericEpithet())){
|
|
373 |
if (isBlank(name.getInfraGenericEpithet())){ |
|
364 | 374 |
name.setInfraGenericEpithet(nameStr); |
365 | 375 |
} |
366 | 376 |
}else if (rank.isSpeciesAggregate() || rank.isSpecies()){ |
367 |
if (StringUtils.isBlank(name.getSpecificEpithet())){
|
|
377 |
if (isBlank(name.getSpecificEpithet())){ |
|
368 | 378 |
name.setSpecificEpithet(nameStr); |
369 | 379 |
} |
370 | 380 |
}else if (rank.isInfraSpecific()){ |
371 |
if (StringUtils.isBlank(name.getInfraSpecificEpithet())){
|
|
381 |
if (isBlank(name.getInfraSpecificEpithet())){ |
|
372 | 382 |
name.setInfraSpecificEpithet(nameStr); |
373 | 383 |
} |
374 | 384 |
} |
... | ... | |
379 | 389 |
Rank rank = null; |
380 | 390 |
try { |
381 | 391 |
rank = state.getTransformer().getRankByKey(rankStr); |
392 |
if (rank == null && rankStr != null){ |
|
393 |
if (rankStr.equals("Cohort")){ |
|
394 |
//position not really clear #7285 |
|
395 |
Rank lowerRank = Rank.SUPERORDER(); |
|
396 |
rank = this.getRank(state, Rank.uuidCohort, "Cohort", "Cohort", null, |
|
397 |
(OrderedTermVocabulary<Rank>)Rank.GENUS().getVocabulary(), |
|
398 |
lowerRank, RankClass.Suprageneric); |
|
399 |
}else if (rankStr.equals("Hyporder")){ |
|
400 |
rank = this.getRank(state, Rank.uuidHyporder, "Hyporder", "Hyporder", null, |
|
401 |
(OrderedTermVocabulary<Rank>)Rank.GENUS().getVocabulary(), |
|
402 |
Rank.SUBORDER(), RankClass.Suprageneric); |
|
403 |
} |
|
404 |
} |
|
382 | 405 |
} catch (UndefinedTransformerMethodException e) { |
383 | 406 |
e.printStackTrace(); |
384 | 407 |
} |
Also available in: Unified diff
ref #5499 latest changes to edaphobase import