MoveDescriptionToOtherTaxonOperation, MultiPageTaxonEditor, ChangeSynonymToAcceptedTa...
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / container / AbstractGroupedContainer.java
index 5fbed53059c8fd4d0dacf2bd8d805cad3f200091..603473942a74f86cd57698b8b39e5d8d2d40a16b 100644 (file)
@@ -9,6 +9,7 @@
 
 package eu.etaxonomy.taxeditor.editor.name.container;
 
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -360,7 +361,9 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                        if (text.length() < start + length) {
                                length = text.length() - start;
                        }
-
+                       if (length<0){
+                               return null;
+                       }
                        return new Position(start, length);
                }
                return null;
@@ -454,8 +457,25 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                return enableFreetext;
        }
 
+       /**
+        * Checks whether there are more than one, non-orphaned taxon bases   
+        * attached to the taxon name
+        * 
+        * @return
+        */
        private boolean isNameUsedMultipleTimes() {
-               if (getName().getTaxonBases().size() > 1) {
+               
+               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--;
+                       }
+               }
+               if(nonOrphanedTaxonBaseCount > 1) {
                        return true;
                }
                return false;