ref #8335 Store character matrix table state as DB preference
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 19 Jun 2019 15:03:04 +0000 (17:03 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 19 Jun 2019 15:03:04 +0000 (17:03 +0200)
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/CharacterMatrixToolbar.java

index d809f91bb65927dbc7293fd36ddf954ea1df77f3..2e47edbd48925e1dc1eaca82db9c395062031f45 100644 (file)
@@ -8,8 +8,8 @@
  */
 package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix;
 
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.StringWriter;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -37,20 +37,25 @@ import org.eclipse.swt.custom.StackLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
 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.IPreferenceService;
 import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
-import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -214,11 +219,18 @@ ICdmEntitySessionEnabled, IPartContentHasSupplementalData, IPartContentHasDetail
         }
         dirty.setDirty(false);
         if(matrix.getNatTableState()!=null){
-            try (FileOutputStream tableStateStream =
-                    new FileOutputStream(matrix.getStatePropertiesFile())) {
-                matrix.getNatTableState().store(tableStateStream, null);
-            } catch (IOException ioe) {
-                ioe.printStackTrace();
+            StringWriter writer = new StringWriter();
+            try {
+                matrix.getNatTableState().store(writer, null);
+                ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
+                if (controller != null){
+                    IPreferenceService service = controller.getPreferenceService();
+                    CdmPreference pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.CharacterMatrixTableState, writer.toString());
+                    service.set(pref);
+                    PreferencesUtil.updateDBPreferences();
+                }
+            } catch (IOException e) {
+                MessagingUtils.error(getClass(), e);
             }
         }
     }
index b12b23d658d79bc2c84e2fe163ac85243ee2cffa..0021eefdbf7a2882d220df9fe1b7f60661fa837d 100644 (file)
@@ -8,9 +8,8 @@
 */
 package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.StringReader;
 import java.util.Collection;
 import java.util.Properties;
 import java.util.function.Consumer;
@@ -39,9 +38,12 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
  * @author pplitzner
@@ -167,13 +169,14 @@ public class CharacterMatrixToolbar extends Composite {
          */
         natTableState = new Properties();
         //load persisted state
-        File statePropertiesFile = matrix.getStatePropertiesFile();
-        FileInputStream inputStream;
         try {
-            inputStream = new FileInputStream(statePropertiesFile);
-            natTableState.load(inputStream);
-        } catch (IOException e) {
-            MessagingUtils.info("No initial state properties file found for character matrix"); //$NON-NLS-1$
+
+            CdmPreference preference = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.CharacterMatrixTableState);
+            if(preference!=null){
+                natTableState.load(new StringReader(preference.getValue()));
+            }
+        } catch (IOException e1) {
+            MessagingUtils.error(getClass(), e1);
         }
 
         // create a combobox for showing the available view states