ref #8450 Only save edited rows in matrix editor
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 18 Sep 2019 15:36:45 +0000 (17:36 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 18 Sep 2019 15:36:45 +0000 (17:36 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrix.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrixPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/SpecimenColumnPropertyAccessor.java

index 9fc1441d0194ece276cc6b8f14dadf57565cf557..2b98597c20cc15edf8e042cfaa67373efcc375b9 100644 (file)
@@ -12,6 +12,7 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -153,6 +154,8 @@ public class CharacterMatrix extends Composite {
 
     private NatTable natTable;
 
+    private Collection<RowWrapperDTO<?>> rowsToSave = new HashSet<>();
+
     private Map<Integer, Feature> indexToFeatureMap = new HashMap<>();
 
     private Map<Feature, List<TermDto>> categoricalFeatureToStateMap = new HashMap<>();
@@ -768,6 +771,14 @@ public class CharacterMatrix extends Composite {
         .collect(Collectors.toList());
     }
 
+    public void addRowToSave(RowWrapperDTO<?> row){
+        rowsToSave.add(row);
+    }
+
+    public Collection<RowWrapperDTO<?>> getRowsToSave() {
+        return rowsToSave;
+    }
+
     public Properties getNatTableState() {
         return toolbar.getNatTableState();
     }
index b35a321bf8f6b73a2d9254fdd90e0990366a3d4b..18c5b5f8035b7314d83386a76b136309bff6204a 100644 (file)
@@ -40,7 +40,6 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
-import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
@@ -175,15 +174,13 @@ ICdmEntitySessionEnabled, IPartContentHasSupplementalData, IPartContentHasDetail
     @Persist
     @Override
     public void save(IProgressMonitor monitor) {
-        //save descriptions
-        List<DescriptionBase> descriptions = matrix.getDescriptions().stream()
-        .filter(o->o instanceof RowWrapperDTO)
-        .map(o->((RowWrapperDTO)o).getDescription())
+        // save edited descriptions
+        List<DescriptionBase> descriptions = matrix.getRowsToSave().stream()
+        .map(row->row.getDescription())
         .collect(Collectors.toList());
         CdmStore.getService(IDescriptionService.class).merge(descriptions);
 
-        //save data set
-        CdmStore.getService(IDescriptiveDataSetService.class).merge(descriptiveDataSet, true);
+        matrix.getRowsToSave().clear();
 
         conversation.commit();
         dirty.setDirty(false);
index 5f916901c153ee5ee32f0d3fed97f80eb63695ec..497034aec9b96d55673d0a30c0d0edcd8bbf8d26 100644 (file)
@@ -85,6 +85,7 @@ public class SpecimenColumnPropertyAccessor implements IColumnPropertyAccessor<O
     public void setDataValue(Object rowObject, int columnIndex, Object newValue) {
         if(rowObject instanceof RowWrapperDTO){
             RowWrapperDTO rowWrapper = (RowWrapperDTO)rowObject;
+            matrix.addRowToSave(rowWrapper);
             Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
             if(newValue instanceof Collection && ((Collection) newValue).stream().allMatch(o->o instanceof TermDto)){
                 List<TermDto> dtos = (List<TermDto>)newValue;