Revision 83efeb94
Added by Andreas Müller almost 3 years ago
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/QuantitativeData.java | ||
---|---|---|
643 | 643 |
//states |
644 | 644 |
result.statisticalValues = new HashSet<>(); |
645 | 645 |
for (StatisticalMeasurementValue data : getStatisticalValues()){ |
646 |
StatisticalMeasurementValue newData = (StatisticalMeasurementValue)data.clone();
|
|
646 |
StatisticalMeasurementValue newData = data.clone(); |
|
647 | 647 |
result.addStatisticalValue(newData); |
648 | 648 |
} |
649 | 649 |
|
... | ... | |
656 | 656 |
} |
657 | 657 |
} |
658 | 658 |
|
659 |
//********************** TO STRING **************************************/ |
|
660 |
|
|
659 | 661 |
@Override |
660 | 662 |
public String toString() { |
661 |
return getFeature()!=null?getFeature().getLabel():""+
|
|
663 |
return (getFeature()!=null ? getFeature().getLabel(): "") +
|
|
662 | 664 |
"[" + statisticalValues + |
663 |
(unit!=null? ", unit=" +unit:"") +
|
|
665 |
(unit!=null ? ", unit=" + unit : "") +
|
|
664 | 666 |
(unknownData? ", unknownData=" + unknownData:"") |
665 | 667 |
+ "]"; |
666 | 668 |
} |
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/description/DescriptionAggregationBase.java | ||
---|---|---|
253 | 253 |
Set<TaxonDescription> excludedDescriptions = new HashSet<>(); |
254 | 254 |
// excludedDescriptions.add(targetDescription); //not possible because aggregating from children |
255 | 255 |
aggregateToParentTaxon(taxonNode, resultHolder, excludedDescriptions); |
256 |
} |
|
257 |
if (mode == AggregationMode.WithinTaxon){ |
|
256 |
} else if (mode == AggregationMode.WithinTaxon){ |
|
258 | 257 |
Set<TaxonDescription> excludedDescriptions = new HashSet<>(); |
259 | 258 |
excludedDescriptions.add(targetDescription); |
260 | 259 |
aggregateWithinSingleTaxon(taxon, resultHolder, excludedDescriptions); |
260 |
}else{ |
|
261 |
throw new IllegalArgumentException("Mode " + mode + " not yet supported"); |
|
261 | 262 |
} |
262 | 263 |
} |
263 | 264 |
addAggregationResultToDescription(targetDescription, resultHolder); |
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/description/StructuredDescriptionAggregation.java | ||
---|---|---|
211 | 211 |
ResultHolder resultHolder, |
212 | 212 |
Set<TaxonDescription> excludedDescriptions) { |
213 | 213 |
StructuredDescriptionResultHolder descriptiveResultHolder = (StructuredDescriptionResultHolder)resultHolder; |
214 |
addDescriptionElement(descriptiveResultHolder, getChildTaxonDescriptions(taxonNode, dataSet)); |
|
214 |
Set<TaxonDescription> childDescriptions = getChildTaxonDescriptions(taxonNode, dataSet); |
|
215 |
addDescriptionElement(descriptiveResultHolder, childDescriptions); |
|
215 | 216 |
} |
216 | 217 |
|
217 | 218 |
@Override |
... | ... | |
225 | 226 |
private void addDescriptionElement(StructuredDescriptionResultHolder descriptiveResultHolder, |
226 | 227 |
Set<? extends DescriptionBase<?>> descriptions) { |
227 | 228 |
boolean descriptionWasUsed = false; |
228 |
for (DescriptionBase<?> desc:descriptions){ |
|
229 |
for (DescriptionBase<?> desc: descriptions){
|
|
229 | 230 |
for (DescriptionElementBase deb: desc.getElements()){ |
230 | 231 |
if (hasCharacterData(deb)){ |
231 | 232 |
if (deb.isInstanceOf(CategoricalData.class)){ |
... | ... | |
306 | 307 |
Map<Feature, CategoricalData> categoricalMap = new HashMap<>(); |
307 | 308 |
Map<Feature, QuantitativeData> quantitativeMap = new HashMap<>(); |
308 | 309 |
Set<DescriptionBase<?>> sourceDescriptions = new HashSet<>(); |
310 |
@Override |
|
311 |
public String toString() { |
|
312 |
return "SDResultHolder [categoricals=" + categoricalMap.size() + ", quantitatives=" |
|
313 |
+ quantitativeMap.size() + ", sourceDescriptions=" + sourceDescriptions.size() + "]"; |
|
314 |
} |
|
309 | 315 |
} |
310 | 316 |
|
311 |
/* |
|
312 |
* Static utility methods |
|
313 |
*/ |
|
314 |
private static Set<TaxonDescription> getChildTaxonDescriptions(TaxonNode taxonNode, DescriptiveDataSet dataSet) { |
|
317 |
private Set<TaxonDescription> getChildTaxonDescriptions(TaxonNode taxonNode, DescriptiveDataSet dataSet) { |
|
315 | 318 |
Set<TaxonDescription> result = new HashSet<>(); |
316 | 319 |
List<TaxonNode> childNodes = taxonNode.getChildNodes(); |
317 | 320 |
for (TaxonNode childNode : childNodes) { |
318 |
result.addAll(childNode.getTaxon().getDescriptions().stream() |
|
319 |
.filter(desc->desc.getTypes().contains(DescriptionType.AGGREGATED_STRUC_DESC)) |
|
320 |
.filter(desc->dataSet.getDescriptions().contains(desc)) |
|
321 |
.collect(Collectors.toSet())); |
|
321 |
Set<TaxonDescription> childDescriptions = childNode.getTaxon().getDescriptions(); |
|
322 |
result.addAll(childDescriptions.stream() |
|
323 |
.filter(desc->desc.getTypes().contains(DescriptionType.AGGREGATED_STRUC_DESC)) |
|
324 |
.filter(desc->dataSet.getDescriptions().contains(desc)) |
|
325 |
.collect(Collectors.toSet())); |
|
322 | 326 |
} |
323 | 327 |
return result; |
324 | 328 |
} |
325 | 329 |
|
326 |
private static Set<SpecimenDescription> getSpecimenDescriptions(Taxon taxon, DescriptiveDataSet dataSet) {
|
|
330 |
private Set<SpecimenDescription> getSpecimenDescriptions(Taxon taxon, DescriptiveDataSet dataSet) { |
|
327 | 331 |
Set<SpecimenDescription> result = new HashSet<>(); |
332 |
//TODO performance: use DTO service to retrieve specimen descriptions without initializing all taxon descriptions |
|
328 | 333 |
for (TaxonDescription taxonDesc: taxon.getDescriptions()){ |
329 | 334 |
for (DescriptionElementBase taxonDeb : taxonDesc.getElements()){ |
330 | 335 |
if (taxonDeb.isInstanceOf(IndividualsAssociation.class)){ |
331 | 336 |
IndividualsAssociation indAss = CdmBase.deproxy(taxonDeb, IndividualsAssociation.class); |
332 | 337 |
SpecimenOrObservationBase<?> specimen = indAss.getAssociatedSpecimenOrObservation(); |
333 |
Set<SpecimenDescription> descriptions = (Set)specimen.getDescriptions(); |
|
334 |
for(SpecimenDescription specimenDescription : descriptions){ |
|
335 |
if(dataSet.getDescriptions().contains(specimenDescription) && specimenDescription.getTypes().stream().noneMatch(type->type.equals(DescriptionType.CLONE_FOR_SOURCE))){ |
|
336 |
result.add(specimenDescription); |
|
337 |
} |
|
338 |
} |
|
338 |
@SuppressWarnings({ "unchecked", "rawtypes" }) |
|
339 |
Set<SpecimenDescription> descriptions = (Set)specimen.getDescriptions(); |
|
340 |
for(SpecimenDescription specimenDescription : descriptions){ |
|
341 |
if(dataSet.getDescriptions().contains(specimenDescription) && |
|
342 |
specimenDescription.getTypes().stream().noneMatch(type->type.equals(DescriptionType.CLONE_FOR_SOURCE))){ |
|
343 |
result.add(specimenDescription); |
|
344 |
} |
|
345 |
} |
|
339 | 346 |
} |
340 | 347 |
} |
341 | 348 |
} |
... | ... | |
369 | 376 |
} |
370 | 377 |
|
371 | 378 |
private QuantitativeData handleMissingValues(QuantitativeData qd) { |
379 |
//min max |
|
372 | 380 |
qd = handleMissingMinOrMax(qd); |
381 |
//average |
|
373 | 382 |
if (qd != null && qd.getAverage() == null){ |
374 | 383 |
BigDecimal n = qd.getSampleSize(); |
375 | 384 |
if(n != null && !n.equals(0f)){ |
376 |
qd.setAverage((qd.getMax().add(qd.getMin())).divide(n), null); |
|
385 |
BigDecimal average = (qd.getMax().add(qd.getMin())).divide(n); |
|
386 |
qd.setAverage(average, null); |
|
377 | 387 |
} |
378 | 388 |
} |
379 | 389 |
return qd; |
... | ... | |
407 | 417 |
|
408 | 418 |
private QuantitativeData mergeQuantitativeData(QuantitativeData aggQd, QuantitativeData newQd) { |
409 | 419 |
|
410 |
newQd = aggregateSingleQuantitativeData(newQd); //alternatively we could check, if newQd is already basically aggregated, but for this we need a cleear definition what the minimum requirements are and how ExactValues and MinMax if existing in parallel should be handled.
|
|
420 |
newQd = aggregateSingleQuantitativeData(newQd); //alternatively we could check, if newQd is already basically aggregated, but for this we need a clear definition what the minimum requirements are and how ExactValues and MinMax if existing in parallel should be handled. |
|
411 | 421 |
|
412 | 422 |
BigDecimal min = null; |
413 | 423 |
BigDecimal max = null; |
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/description/StructuredDescriptionAggregationConfiguration.java | ||
---|---|---|
25 | 25 |
|
26 | 26 |
private UUID datasetUuid; |
27 | 27 |
|
28 |
|
|
29 | 28 |
//TODO merge with DistributionAggregationConfiguration.aggregationMode |
30 | 29 |
private boolean aggregateToHigherRanks; |
31 | 30 |
|
cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/description/StructuredDescriptionAggregationTest.java | ||
---|---|---|
141 | 141 |
engine = new StructuredDescriptionAggregation(); |
142 | 142 |
engine.setBatchMinFreeHeap(100 * 1024 * 1024); |
143 | 143 |
monitor = DefaultProgressMonitor.NewInstance(); |
144 |
|
|
145 | 144 |
} |
146 | 145 |
|
147 |
|
|
148 | 146 |
@Test |
149 | 147 |
@DataSets({ |
150 | 148 |
@DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml"), |
... | ... | |
308 | 306 |
|
309 | 307 |
private DescriptiveDataSet createTestDataset() { |
310 | 308 |
DescriptiveDataSet dataSet = DescriptiveDataSet.NewInstance(); |
309 |
dataSet.setLabel("Test dataset"); |
|
311 | 310 |
datasetService.save(dataSet); |
312 | 311 |
|
313 | 312 |
SpecimenDescription specDescAlpina1 = createSpecimenDescription(dataSet, T_LAPSANA_COMMUNIS_ALPINA_UUID, "alpina specimen1"); |
cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/description/StructuredDescriptionAggregationTest.xml | ||
---|---|---|
5 | 5 |
<TAXONBASE DTYPE="Taxon" ID="5002" UUID="441a3c40-0c84-11de-8c30-0800200c9a66" PROTECTEDTITLECACHE="false" TITLECACHE="L. communis subsp. communis sec. ???" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" NAME_ID="5002"/> |
6 | 6 |
<TAXONBASE DTYPE="Taxon" ID="5003" UUID="e4acf200-63b6-11dd-ad8b-0800200c9a66" PROTECTEDTITLECACHE="false" TITLECACHE="L. communis subsp. adenophora sec. ???" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" NAME_ID="5003"/> |
7 | 7 |
<TAXONBASE DTYPE="Taxon" ID="5004" UUID="596b1325-be50-4b0a-9aa2-3ecd610215f2" PROTECTEDTITLECACHE="false" TITLECACHE="L. communis subsp. alpina sec. ???" DOUBTFUL="false" PUBLISH="true" USENAMECACHE="false" TAXONSTATUSUNKNOWN="false" NAME_ID="5004"/> |
8 |
<TAXONNAME ID="5000" UUID="99e31a2d-36aa-4d5f-adce-c4a6ba27c6cb" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="Lapsana" FULLTITLECACHE="Lapsana" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="774"/>
|
|
9 |
<TAXONNAME ID="5001" UUID="cd2335d1-2d7c-437e-b4d5-1f450ce0d380" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis" FULLTITLECACHE="L. communis" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="765"/>
|
|
10 |
<TAXONNAME ID="5002" UUID="c9a5631c-20b0-477b-890b-fb11c7e7a083" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. communis" FULLTITLECACHE="L. communis subsp. communis" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="763"/>
|
|
11 |
<TAXONNAME ID="5003" UUID="494224de-a70c-4d06-a579-5b8ca2c3559b" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. adenophora" FULLTITLECACHE="L. communis subsp. adenophora" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="763"/>
|
|
12 |
<TAXONNAME ID="5004" UUID="ba953d05-53e5-46ff-8d80-8cccb2cc5f9d" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. alpina" FULLTITLECACHE="L. communis subsp. alpina" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="[null]" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="[null]" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="763"/>
|
|
13 |
<CLASSIFICATION ID="5000" UUID="4b266053-a841-4980-b548-3f21d8d7d712" UPDATED="2019-11-26 13:23:34.183" PROTECTEDTITLECACHE="false" TITLECACHE="TestClassification" NAME_ID="5000" ROOTNODE_ID="5000"/>
|
|
14 |
<TAXONNODE ID="5000" UUID="d7ecc004-5291-4b9d-9573-f5537576f39c" UPDATED="2019-11-26 13:23:34.184" SORTINDEX="-1" TREEINDEX="#t5000#5000#" COUNTCHILDREN="1" CLASSIFICATION_ID="5000" PARENT_ID="[null]" TAXON_ID="[null]"/>
|
|
15 |
<TAXONNODE ID="5001" UUID="f4d29e9f-6484-4184-af2e-9704e96a17e3" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#" COUNTCHILDREN="1" CLASSIFICATION_ID="5000" PARENT_ID="5000" TAXON_ID="5000"/>
|
|
16 |
<TAXONNODE ID="5002" UUID="de98cbfe-f4c9-4e15-8b31-88a8bf128e5a" UPDATED="2019-11-26 13:23:34.184" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#5002#" COUNTCHILDREN="3" CLASSIFICATION_ID="5000" PARENT_ID="5001" TAXON_ID="5001"/>
|
|
17 |
<TAXONNODE ID="5003" UUID="c6b28358-ecc6-4ca7-8384-57c5a5c7d8eb" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#5002#5003#" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5002" TAXON_ID="5002"/> |
|
18 |
<TAXONNODE ID="5004" UUID="13988b44-e363-44e5-9495-479eb4415245" SORTINDEX="1" TREEINDEX="#t5000#5000#5001#5002#5004#" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5002" TAXON_ID="5003"/> |
|
19 |
<TAXONNODE ID="5005" UUID="d7ef7e1d-04b4-4169-bded-cce72984a824" SORTINDEX="2" TREEINDEX="#t5000#5000#5001#5002#5005#" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5002" TAXON_ID="5004"/> |
|
20 |
<REFERENCE ID="5000" UUID="cd499064-af81-4df7-83ed-854f7888edd0" PROTECTEDTITLECACHE="true" TITLECACHE="Sp.Pl." NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" TITLE="[null]" ABBREVTITLECACHE="Sp.Pl." PROTECTEDABBREVTITLECACHE="false" REFTYPE="DB" />
|
|
21 |
<REFERENCE ID="5001" UUID="c3218a0e-b2cc-4bb9-8ced-8faaf635beca" PROTECTEDTITLECACHE="false" TITLECACHE="Reference [type=Book, id= 0, uuid=c3218a0e-b2cc-4bb9-8ced-8faaf635beca]" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" TITLE="[null]" ABBREVTITLECACHE="Reference [type=Book, id= 0, uuid=c3218a0e-b2cc-4bb9-8ced-8faaf635beca]" PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK"/>
|
|
8 |
<TAXONNAME ID="5000" UUID="99e31a2d-36aa-4d5f-adce-c4a6ba27c6cb" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="Lapsana" FULLTITLECACHE="Lapsana" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="774"/>
|
|
9 |
<TAXONNAME ID="5001" UUID="cd2335d1-2d7c-437e-b4d5-1f450ce0d380" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis" FULLTITLECACHE="L. communis" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="765"/>
|
|
10 |
<TAXONNAME ID="5002" UUID="c9a5631c-20b0-477b-890b-fb11c7e7a083" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. communis" FULLTITLECACHE="L. communis subsp. communis" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="763"/>
|
|
11 |
<TAXONNAME ID="5003" UUID="494224de-a70c-4d06-a579-5b8ca2c3559b" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. adenophora" FULLTITLECACHE="L. communis subsp. adenophora" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="763"/>
|
|
12 |
<TAXONNAME ID="5004" UUID="ba953d05-53e5-46ff-8d80-8cccb2cc5f9d" NAMETYPE="ICNAFP" PROTECTEDTITLECACHE="true" TITLECACHE="L. communis subsp. alpina" FULLTITLECACHE="L. communis subsp. alpina" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" NAMECACHE="subsp." PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" TRINOMHYBRID="false" ANAMORPHIC="false" RANK_ID="763"/>
|
|
13 |
<CLASSIFICATION ID="5000" UUID="4b266053-a841-4980-b548-3f21d8d7d712" PROTECTEDTITLECACHE="false" TITLECACHE="TestClassification" NAME_ID="5000" ROOTNODE_ID="5000"/> |
|
14 |
<TAXONNODE ID="5000" UUID="d7ecc004-5291-4b9d-9573-f5537576f39c" SORTINDEX="-1" TREEINDEX="#t5000#5000#" COUNTCHILDREN="1" CLASSIFICATION_ID="5000"/>
|
|
15 |
<TAXONNODE ID="5001" UUID="f4d29e9f-6484-4184-af2e-9704e96a17e3" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#" COUNTCHILDREN="1" CLASSIFICATION_ID="5000" PARENT_ID="5000" TAXON_ID="5000"/>
|
|
16 |
<TAXONNODE ID="5002" UUID="de98cbfe-f4c9-4e15-8b31-88a8bf128e5a" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#5002#" COUNTCHILDREN="3" CLASSIFICATION_ID="5000" PARENT_ID="5001" TAXON_ID="5001"/>
|
|
17 |
<TAXONNODE ID="5003" UUID="c6b28358-ecc6-4ca7-8384-57c5a5c7d8eb" SORTINDEX="0" TREEINDEX="#t5000#5000#5001#5002#5003#" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5002" TAXON_ID="5002"/>
|
|
18 |
<TAXONNODE ID="5004" UUID="13988b44-e363-44e5-9495-479eb4415245" SORTINDEX="1" TREEINDEX="#t5000#5000#5001#5002#5004#" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5002" TAXON_ID="5003"/>
|
|
19 |
<TAXONNODE ID="5005" UUID="d7ef7e1d-04b4-4169-bded-cce72984a824" SORTINDEX="2" TREEINDEX="#t5000#5000#5001#5002#5005#" COUNTCHILDREN="0" CLASSIFICATION_ID="5000" PARENT_ID="5002" TAXON_ID="5004"/>
|
|
20 |
<REFERENCE ID="5000" UUID="cd499064-af81-4df7-83ed-854f7888edd0" PROTECTEDTITLECACHE="true" TITLECACHE="Sp.Pl." NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" ABBREVTITLECACHE="Sp.Pl." PROTECTEDABBREVTITLECACHE="false" REFTYPE="DB" />
|
|
21 |
<REFERENCE ID="5001" UUID="c3218a0e-b2cc-4bb9-8ced-8faaf635beca" PROTECTEDTITLECACHE="true" TITLECACHE="My Book" NOMENCLATURALLYRELEVANT="false" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" ABBREVTITLECACHE="My Bk." PROTECTEDABBREVTITLECACHE="false" REFTYPE="BK"/>
|
|
22 | 22 |
<LANGUAGESTRING ID="5000" UUID="abb4c80f-2203-4544-8e37-1fef1e41f498" TEXT="TestClassification" LANGUAGE_ID="406"/> |
23 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="AuditEvent" NEXT_VAL="5003"/> |
|
24 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="CdmMetaData" NEXT_VAL="5004"/> |
|
25 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="Classification" NEXT_VAL="5001"/> |
|
26 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="GrantedAuthorityImpl" NEXT_VAL="5021"/> |
|
27 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="HomotypicalGroup" NEXT_VAL="5005"/> |
|
28 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="LanguageString" NEXT_VAL="5001"/> |
|
29 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="PermissionGroup" NEXT_VAL="5004"/> |
|
30 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="Reference" NEXT_VAL="5002"/> |
|
31 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="TaxonBase" NEXT_VAL="5005"/> |
|
32 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="TaxonName" NEXT_VAL="5005"/> |
|
33 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="TaxonNode" NEXT_VAL="5006"/> |
|
34 |
<HIBERNATE_SEQUENCES SEQUENCE_NAME="UserAccount" NEXT_VAL="5001"/> |
|
35 | 23 |
</dataset> |
Also available in: Unified diff
minor issues for StructuredDescriptionAggregationTest