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.model.description.DescriptiveDataSet;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
public void save(IProgressMonitor monitor) {
- matrix.addSpecimensToDescriptiveDataSet();
+ HashMap<UUID, DescriptionBase> descriptionResults = matrix.addSpecimensToDescriptiveDataSet();
//newly added descriptions should not be saved again.
// descriptions.removeAll(matrix.getRowsToSave().values());
// save edited descriptions
matrix.getDescriptionsToDelete().clear();
}
- CdmStore.getService(IDescriptionService.class).merge(new ArrayList<>(matrix.getDescriptionsToSave()), true);
+
+ List<MergeResult<DescriptionBase>> resultsFromSave = CdmStore.getService(IDescriptionService.class).merge(new ArrayList<>(matrix.getDescriptionsToSave()), true);
+ for (MergeResult<DescriptionBase> result: resultsFromSave){
+ Set<DescriptionBase> newEntities = result.getNewEntities();
+ for(DescriptionBase newEntity: newEntities){
+ descriptionResults.put(newEntity.getUuid(), newEntity);
+ }
+
+ }
matrix.getDescriptionsToSave().clear();
UpdateResult results = CdmStore.getService(IDescriptionService.class).mergeDescriptions(descriptionsToMerge, matrix.getDescriptiveDataSet().getUuid());
matrix.getRowsToMerge().clear();
conversation.commit();
- HashMap<UUID, DescriptionBase> descriptionResults = new HashMap<>();
+
for (CdmBase result: results.getUpdatedObjects()){
if (result instanceof DescriptionBase){
descriptionResults.put(result.getUuid(), (DescriptionBase)result);