import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
+import eu.etaxonomy.cdm.api.service.dto.SpecimenRowWrapperDTO;
+import eu.etaxonomy.cdm.api.service.dto.TaxonRowWrapperDTO;
import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.cdm.model.description.CategoricalData;
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.QuantitativeData;
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
if(dialog.open()==Window.OK){
Collection<SpecimenNodeWrapper> wrappers = dialog.getSpecimen();
for (SpecimenNodeWrapper wrapper : wrappers) {
- SpecimenDescription description = CdmStore.getService(IDescriptiveDataSetService.class)
- .findDescriptionForDescriptiveDataSet(matrix.getDescriptiveDataSet().getUuid(),
+ SpecimenDescription specimenDescription = CdmStore.getService(IDescriptiveDataSetService.class)
+ .findSpecimenDescription(matrix.getDescriptiveDataSet().getUuid(),
wrapper.getUuidAndTitleCache().getUuid());
- // description elements
- Map<Feature, DescriptionElementBase> featureToElementMap = new HashMap<>();
- Set<DescriptionElementBase> elements = description.getElements();
- for (DescriptionElementBase descriptionElementBase : elements) {
- Feature feature = descriptionElementBase.getFeature();
- featureToElementMap.put(feature, descriptionElementBase);
- }
- RowWrapperDTO rowWrapper = CdmStore.getService(IDescriptiveDataSetService.class).createSpecimenRowWrapper(description, matrix.getDescriptiveDataSet());
+ SpecimenRowWrapperDTO rowWrapper = CdmStore.getService(IDescriptiveDataSetService.class)
+ .createSpecimenRowWrapper(specimenDescription, matrix.getDescriptiveDataSet(), true);
if(rowWrapper==null){
- error += description;
+ error += specimenDescription;
continue;
}
+ //add specimen description
matrix.getDescriptions().add(rowWrapper);
- matrix.getDescriptiveDataSet().addDescription(description);
+ matrix.getDescriptiveDataSet().addDescription(specimenDescription);
+ matrix.getCdmEntitiySession().load(specimenDescription, true);
+
+ //add taxon description
+ TaxonRowWrapperDTO taxonDescription = rowWrapper.getDefaultTaxonDescription();
+ matrix.getDescriptiveDataSet().addDescription(taxonDescription.getDescription());
+ matrix.getCdmEntitiySession().load(taxonDescription.getDescription(), true);
+
matrix.setDirty();
matrix.getSpecimenCache().remove(wrapper);
}
}
toRemove.forEach(rowToRemove->{
matrix.getDescriptions().remove(rowToRemove);
- matrix.getDescriptiveDataSet().removeDescription(rowToRemove.getSpecimenDescription());
+ matrix.getDescriptiveDataSet().removeDescription(rowToRemove.getDescription());
matrix.setDirty();
});
}
List<UUID> descriptionUuids = new ArrayList<>();
matrix.getDescriptiveDataSet().getDescriptions().forEach(desc->descriptionUuids.add(desc.getUuid()));
UpdateResult result = CdmStore.getService(IDescriptionService.class).aggregateDescription(taxonUuid, descriptionUuids, matrix.getDescriptiveDataSet().getLabel(), matrix.getDescriptiveDataSet().getUuid());
+ TaxonDescription taxonDescription = (TaxonDescription) result.getCdmEntity();
+ TaxonRowWrapperDTO taxonRowWrapper = CdmStore.getService(IDescriptiveDataSetService.class).createTaxonRowWrapper(taxonDescription, matrix.getDescriptiveDataSet());
+ matrix.getDescriptions().add(taxonRowWrapper);
matrix.addUpdateResult(result);
- matrix.setDirty();
aggregateCategorcialHistogram(matrix.getFeatureToHistogramMap());
aggregateQuantitativeSummary(matrix.getFeatureToQuantDataStatisticsMap());
@SuppressWarnings("unchecked")
private void aggregateCategorcialHistogram(Map<Feature, CategoricalDataHistogram> featureToHistogramMap) {
featureToHistogramMap.clear();
- matrix.getDescriptions()
- .forEach(o -> o.getSpecimenDescription().getElements().stream()
+ matrix.getDescriptions().stream()
+ .filter(desc->desc instanceof SpecimenRowWrapperDTO)
+ .forEach(o -> ((SpecimenRowWrapperDTO) o).getDescription().getElements().stream()
.filter(descriptionElement -> descriptionElement instanceof CategoricalData)
.forEach(categoricalData -> {
Feature feature = ((CategoricalData) categoricalData).getFeature();
@SuppressWarnings("unchecked")
private void aggregateQuantitativeSummary(Map<Feature, QuantitativeDataStatistics> featureToQuantDataStatisticsMap) {
featureToQuantDataStatisticsMap.clear();
- matrix.getDescriptions()
- .forEach(o -> o.getSpecimenDescription().getElements().stream()
+ matrix.getDescriptions().stream()
+ .filter(desc->desc instanceof SpecimenRowWrapperDTO)
+ .forEach(o -> ((SpecimenRowWrapperDTO) o).getDescription().getElements().stream()
.filter(descriptionElement -> descriptionElement instanceof QuantitativeData)
.forEach(quantData -> {
Feature feature = ((QuantitativeData) quantData).getFeature();