fix #7321: check whether text of default language is set otherwise get another language
authorKatja Luther <k.luther@bgbm.org>
Tue, 17 Sep 2019 12:58:02 +0000 (14:58 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 17 Sep 2019 12:58:59 +0000 (14:58 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListLabelProvider.java

index 9a4e1658dc61c0e5fb3937cca21fe1cd905b677e..a36ebbf1d2ff74837c558318e38062161dcac0df 100644 (file)
@@ -1,14 +1,17 @@
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * European Distributed Institute of Taxonomy
  * http://www.e-taxonomy.eu
- * 
+ *
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
 
 package eu.etaxonomy.taxeditor.editor.key.polytomous;
 
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.jface.viewers.StyledCellLabelProvider;
 import org.eclipse.jface.viewers.StyledString;
 import org.eclipse.jface.viewers.StyledString.Styler;
@@ -21,6 +24,7 @@ import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.KeyStatement;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -42,7 +46,7 @@ public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.jface.viewers.StyledCellLabelProvider#update(org.eclipse.
         * jface.viewers.ViewerCell)
@@ -56,8 +60,8 @@ public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
 
                        String text = getTextForColumnIndex((PolytomousKeyNode) element,
                                        columnIndex);
-                       
-                       
+
+
                        cell.setText(text);
 
                        if (columnIndex == 4 || columnIndex == 5) {
@@ -76,7 +80,7 @@ public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
                case 0:
                        return getItemNumber(node);
                case 1:
-                       return getItemQuestion(node);                   
+                       return getItemQuestion(node);
                case 2:
                        return getItemEdgeNumber(node);
                case 3:
@@ -111,14 +115,14 @@ public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
                if (isParentRoot(node)) {
                        return "root"; //$NON-NLS-1$
                } else {
-                       
-                       String itemNumber = (node.getParent().getNodeNumber() != null) ? node.getParent().getNodeNumber().toString() : EMPTY;                                   
+
+                       String itemNumber = (node.getParent().getNodeNumber() != null) ? node.getParent().getNodeNumber().toString() : EMPTY;
                        return itemNumber;
                }
        }
 
        private String getItemEdgeNumber(PolytomousKeyNode node) {
-               String itemEdgeNumber = node.getParent().getNodeNumber() != null ? node.getParent().getNodeNumber().toString() : EMPTY;         
+               String itemEdgeNumber = node.getParent().getNodeNumber() != null ? node.getParent().getNodeNumber().toString() : EMPTY;
                PolytomousKeyNode parent = getParent(node);
                int index = parent.getChildren().indexOf(node);
 
@@ -134,22 +138,48 @@ public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
                }
                return itemEdgeNumber + numberChar;
        }
-       
+
        private String getItemQuestion(PolytomousKeyNode node) {
                if (isParentRoot(node)) {
                        return ""; //$NON-NLS-1$
                } else {
-                       KeyStatement question = getParent(node).getQuestion();                                  
-                       return question != null ? CdmUtils.Nz(question.getLabelText(CdmStore.getDefaultLanguage())) : EMPTY;
-                       
+                       KeyStatement question = getParent(node).getQuestion();
+                       String statementLabel = CdmUtils.Nz(question.getLabelText(CdmStore.getDefaultLanguage()));
+                       if (StringUtils.isBlank(statementLabel)){
+                   Map<Language, LanguageString> labels = question.getLabel();
+                   if (labels != null && !labels.isEmpty()){
+                       for (LanguageString langString: labels.values()){
+                           if (StringUtils.isNotBlank(langString.getText())){
+                               statementLabel = langString.getText();
+                               break;
+                           }
+                       }
+                   }
+               }
+
+
+                       return question != null ?  statementLabel: EMPTY;
+
                }
 
        }
 
        private String getItemStatement(PolytomousKeyNode node) {
                KeyStatement statement = node.getStatement();
-               return statement != null ? CdmUtils.Nz(statement.getLabelText(CdmStore
-                               .getDefaultLanguage())) : EMPTY;
+               String statementLabel = CdmUtils.Nz(statement.getLabelText(CdmStore
+                .getDefaultLanguage()));
+               if (StringUtils.isBlank(statementLabel)){
+            Map<Language, LanguageString> labels = statement.getLabel();
+            if (labels != null && !labels.isEmpty()){
+                for (LanguageString langString: labels.values()){
+                    if (StringUtils.isNotBlank(langString.getText())){
+                        statementLabel = langString.getText();
+                        break;
+                    }
+                }
+            }
+        }
+               return statementLabel != null ?  statementLabel: EMPTY;
        }
 
        private String getItemLink(PolytomousKeyNode node) {
@@ -157,7 +187,7 @@ public class PolytomousKeyListLabelProvider extends StyledCellLabelProvider {
 
                return linkString;
        }
-       
+
        private String getItemTaxon(PolytomousKeyNode node) {
            String taxonString = node.getTaxon() != null ? node.getTaxon().getName().getTitleCache() : EMPTY;