handle some more cases for taxa without name and add some invalid name types to...
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 14 Jul 2017 10:17:15 +0000 (12:17 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 14 Jul 2017 10:17:15 +0000 (12:17 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/container/AbstractGroupedContainer.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/container/SynonymContainer.java

index e438a48c315e7afc3c22094c32e62a19fc2f191b..843ab21d606a31d5d5f127942fa76104a1e0b466 100755 (executable)
@@ -13,6 +13,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.text.IDocument;
@@ -47,6 +48,7 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.INonViralName;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.TaxonName;
@@ -90,7 +92,6 @@ import eu.etaxonomy.taxeditor.preference.Resources;
  * @author p.ciardelli
  * @author n.hoffmann
  * @created 02.06.2008
- * @version 1.0
  */
 abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                IFormPart, IContainerConstants, IElementHasDetails {
@@ -314,7 +315,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         */
        public void showAnnotations() {
 
-               if (getName().hasProblem()) {
+               if (getName() != null && getName().hasProblem()) {
                        showParsingProblems();
                }
 
@@ -340,7 +341,12 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        private void showParsingProblems() {
                String text = getNameViewer().getTextWidget().getText();
 
-               List<ParserProblem> parsingProblems = getName().getParsingProblems();
+               TaxonName name = getName();
+               if (name == null){
+                       return;
+               }
+
+               List<ParserProblem> parsingProblems = name.getParsingProblems();
 
                for (ParserProblem problem : parsingProblems) {
                        getNameViewer().addAnnotation(new EditorAnnotation(problem),
@@ -351,7 +357,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        private Position getParsingProblemPosition() {
                String text = getNameViewer().getTextWidget().getText();
 
-               if (getName().hasProblem() && text.length() > 0) {
+               if (getName() != null && getName().hasProblem() && text.length() > 0) {
                        int start = getName().getProblemStarts();
                        int length = getName().getProblemEnds() - start;
 
@@ -450,8 +456,6 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * @return
         */
        private boolean isFreetextEditingAllowed() {
-               INonViralName name = (INonViralName) HibernateProxyHelper
-                               .deproxy(getName());
                boolean enableFreetext = true;
 
                enableFreetext |= isNameUsedMultipleTimes();
@@ -468,27 +472,33 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         */
        private boolean isNameUsedMultipleTimes() {
 
-               Set<TaxonBase> taxonBases = getName().getTaxonBases();
-               Iterator<TaxonBase> tbItr = taxonBases.iterator();
-               int nonOrphanedTaxonBaseCount = taxonBases.size();
-
-               while(tbItr.hasNext()) {
-                       TaxonBase tb = tbItr.next();
-                       if(tb.isOrphaned()) {
-                               nonOrphanedTaxonBaseCount--;
+               TaxonName name = getName();
+               if (name != null){
+                       Set<TaxonBase> taxonBases = name.getTaxonBases();
+                       Iterator<TaxonBase> tbItr = taxonBases.iterator();
+                       int nonOrphanedTaxonBaseCount = taxonBases.size();
+       
+                       while(tbItr.hasNext()) {
+                               TaxonBase<?> tb = tbItr.next();
+                               if(tb.isOrphaned()) {
+                                       nonOrphanedTaxonBaseCount--;
+                               }
+                       }
+                       if(nonOrphanedTaxonBaseCount > 1) {
+                               return true;
                        }
-               }
-               if(nonOrphanedTaxonBaseCount > 1) {
-                       return true;
                }
                return false;
        }
 
        private boolean isNameParsable() {
                TaxonName name = getName();
+               if (name == null){
+                       return false;
+               }
 
                boolean isParsable = true;
-               isParsable &= CdmUtils.isEmpty(name.getAppendedPhrase()); // taxonFieldsEmpty();
+               isParsable &= StringUtils.isBlank(name.getAppendedPhrase()); // taxonFieldsEmpty();
 
                isParsable &= !name.isProtectedAuthorshipCache();
                isParsable &= !name.isProtectedNameCache();
@@ -526,8 +536,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * @return a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase} object.
         */
        public TaxonName getName() {
-               return HibernateProxyHelper.deproxy(getTaxonBase()
-                               .getName());
+               return CdmBase.deproxy(getTaxonBase().getName());
        }
 
        /**
index 63a0fa0460e6077484f40974cedb98bce8420f28..121867da1e228fa3c8e45a9b318056c13cd64bd7 100644 (file)
@@ -53,9 +53,6 @@ public class SynonymContainer extends AbstractGroupedContainer<Synonym> {
                this.icon = icon;
        }
        
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.editor.name.NameComposite#initializeComposite()
-        */
        /** {@inheritDoc} */
        @Override
        protected void initializeComposite() {
@@ -72,12 +69,13 @@ public class SynonymContainer extends AbstractGroupedContainer<Synonym> {
        protected void updateIcon(){
                TaxonName name = getName();
                
+               
                if(! name.getStatus().isEmpty()){
                        
                        Set<NomenclaturalStatus> allStatus = name.getStatus();
                        
                        for (NomenclaturalStatus status : allStatus){
-                               if(status.getType() != null && (status.getType().equals(NomenclaturalStatusType.INVALID()) || status.getType().equals(NomenclaturalStatusType.NUDUM()))){
+                               if(status.getType() != null && (status.getType().isInvalidType())){
                                        setIcon(INVALID_OR_NUDUM_NAME_ICON);
                                        return;
                                }