ref #7854: fix exceptions in distribution editor when saving new created descriptions
authorKatja Luther <k.luther@bgbm.org>
Thu, 10 Jan 2019 13:53:55 +0000 (14:53 +0100)
committerKatja Luther <k.luther@bgbm.org>
Thu, 10 Jan 2019 13:53:55 +0000 (14:53 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionColumnAccessor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditorPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/ChecklistEditorGeneralPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusAdminWizard.java

index d813b90bb5983253a77db43c1580fe160231b2a0..6c6a0ab3466f2a536c633e01650928abc76bd575 100755 (executable)
@@ -142,6 +142,7 @@ public class DistributionColumnAccessor implements IColumnPropertyAccessor<Taxon
                         taxonWrapper.getDescriptionsWrapper().getDescriptions().add(desc);
                     }
                     desc.addElement(dist);
+                    editor.part.getCdmEntitySession().load(desc, true);
                     distributions.add(dist);
 
                 }
index ef502a539b9a16530e40bfeb14c5c13332219cd4..df3a07a5293d53086aad9e1ccf2a57fda4fc14b2 100755 (executable)
@@ -440,7 +440,7 @@ public class DistributionEditor extends Composite {
 
             @Override
             public void widgetSelected(SelectionEvent event) {
-                defaultSource = part.getCdmEntitySession().load(ReferenceSelectionDialog.select(AbstractUtility.getShell(), null), true);
+                defaultSource = ReferenceSelectionDialog.select(AbstractUtility.getShell(), null);
 
                 String defaultSourceStr = (defaultSource == null) ? "" : "Default Source Reference: " + defaultSource.getTitleCache();
                 if (defaultSourceStr.length()> 100){
@@ -692,13 +692,13 @@ public class DistributionEditor extends Composite {
         return defaultSource;
     }
 
-    /**
-     * @param result
-     */
-    public void reloadDistributions() {
-       loadDistributions(taxonList);
-
-    }
+//    /**
+//     * @param result
+//     */
+//    public void reloadDistributions() {
+//       loadDistributions(taxonList);
+//
+//    }
 
 
 
index 7c69eac40e54a267a9a7736035bae14d0f6ce36a..eca27b12162279a5ab1fdb2c287d28a9bf9b2361 100755 (executable)
@@ -36,9 +36,11 @@ 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.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.api.service.dto.TaxonDistributionDTO;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
@@ -228,12 +230,28 @@ ICdmEntitySessionEnabled, IPartContentHasSupplementalData, IPartContentHasDetail
 
     protected void saveDistributions() {
         Set<TaxonDistributionDTO> coll = new HashSet();
-        editor.taxonList.forEach(dto->coll.add(dto));
+        editor.getDescriptionsToSave().forEach(dto->coll.add(dto));
+        for (TaxonDistributionDTO dto: coll){
+            Taxon taxon = null;
+            for(TaxonDescription desc: dto.getDescriptionsWrapper().getDescriptions()){
+                if (desc.getTaxon() == null){
+                    if (taxon == null){
+                        taxon = (Taxon)CdmStore.getService(ITaxonService.class).load(dto.getTaxonUuid());
+                    }
+                    taxon.addDescription(desc);
+                }
+                if (taxon != null){
+                    CdmStore.getService(ITaxonService.class).merge(taxon, true);
+                }
+            }
+        }
+
         List<MergeResult<DescriptionBase>> result = CdmStore.getService(IDescriptionService.class).mergeDescriptionElements(coll, true);
         for (MergeResult<DescriptionBase> mergeRes: result ){
             cdmEntitySession.load(mergeRes, true);
+            cdmEntitySession.load(editor.getDefaultSource(), true);
         }
-       // editor.createTaxonDistributionMap();
+        editor.createTaxonDistributionMap();
         conversation.commit();
         this.dirty.setDirty(false);
         editor.getDescriptionsToSave().clear();
index 3df3b12ad13132a1652a96b1daf908ed7ba38fc8..aa7d100e4197766e90fce030ce3c6e00a2ab9c0c 100644 (file)
@@ -268,7 +268,11 @@ public class ChecklistEditorGeneralPreference extends CdmPreferencePage implemen
             if (PreferencesUtil.getStringValue(EditorPreferencePredicate.DistributionEditorActivated.getKey()) != null){
                 TermDisplayEnum areaDisplay;
                 try{
-                    areaDisplay  = TermDisplayEnum.valueOf(displayArea);
+                    if (displayArea != null){
+                        areaDisplay  = TermDisplayEnum.valueOf(displayArea);
+                    }else{
+                        areaDisplay = TermDisplayEnum.Title;
+                    }
                 }catch(IllegalArgumentException e){
                     areaDisplay = TermDisplayEnum.Title;
                 }
@@ -319,7 +323,7 @@ public class ChecklistEditorGeneralPreference extends CdmPreferencePage implemen
                 statusDisplaySelectionCombo.add(display.getLabel());
             }
             index = 0;
-            if (PreferencesUtil.displayStatusInChecklistEditor() != null){
+            if (displayStatus != null){
                 TermDisplayEnum statusDisplay = TermDisplayEnum.valueOf(displayStatus);
                 for (String itemLabel : statusDisplaySelectionCombo.getItems()){
                     if (itemLabel.equalsIgnoreCase(statusDisplay.getLabel())){
index 6b995400ed69bfa447205927c3306d6248829f62..0ed67e7138af8658074f2b6cfa667c86b6e77b34 100644 (file)
@@ -957,7 +957,7 @@ public class PreferencesUtil implements IPreferenceKeys {
        public static FeatureTree getDefaultFeatureTreeForTextualDescription() {
                String uuidString = getStringValue(
                                FEATURE_TREE_DEFAULT_TEXT);
-               if (uuidString == null) {
+               if (StringUtils.isBlank(uuidString)) {
             return null;
         }
                FeatureTree tree = CdmStore.getService(
index e5c31c63d7d3a899a06df6c99017982bc29ddc95..12da1971c182cb94d31c2d9b31bb2dd9a5a4e89b 100755 (executable)
@@ -20,7 +20,6 @@ import org.eclipse.jface.wizard.Wizard;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
@@ -105,9 +104,15 @@ public class AvailableDistributionStatusAdminWizard extends Wizard implements IC
         savePref.setAllowOverride(pref.isAllowOverride());
         PreferencesUtil.setPreferenceToDB(savePref);
         Collection<DefinedTermBase> terms = new ArrayList<>();
-        Collection<TermDto> termDtos = CdmStore.getService(IVocabularyService.class).getCompleteTermHierarchy(aPage.getVocabularies().get(0).getUuid());
-        termDtos.forEach(dto -> terms.add(CdmStore.getService(ITermService.class).load(dto.getUuid())));
+//        Collection<TermDto> termDtos = CdmStore.getService(IVocabularyService.class).getCompleteTermHierarchy(aPage.getVocabularies().get(0).getUuid());
+//        termDtos.forEach(dto -> terms.add(CdmStore.getService(ITermService.class).load(dto.getUuid())));
+//        CdmStore.getTermManager().setPreferredTerms(preferredTerms, terms);
+        terms.addAll(CdmStore.getService(ITermService.class).listByTermType(this.aPage.type, null, 0, null, null));
+
+//      aPage.getVocabularies().get(0).getTerms()
+//      .forEach(dto -> terms.add(CdmStore.getService(ITermService.class).load(dto.getUuid())));
         CdmStore.getTermManager().setPreferredTerms(preferredTerms, terms);
+        CdmStore.getTermManager().clearTermMapForTermType(this.aPage.type);
         PreferencesUtil.firePreferencesChanged(this.getClass());
         return true;
     }