package eu.etaxonomy.cdm.model.name;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import javax.persistence.Column;
import javax.persistence.Entity;
Method method = ReflectionUtils.findMethod(TaxonBase.class, "setName", new Class[] {TaxonNameBase.class});
ReflectionUtils.makeAccessible(method);
ReflectionUtils.invokeMethod(method, taxonBase, new Object[] {null});
- boolean removed = false;
-
- if (taxonBases.contains(taxonBase)){
- removed = taxonBases.remove(taxonBase);
- }
- if (!removed){
- if (!removed && !taxonBases.isEmpty()){
- HashSet<TaxonBase> copyTaxonBase = new HashSet<TaxonBase>();
- Iterator<TaxonBase> iterator = taxonBases.iterator();
- while (iterator.hasNext()){
- TaxonBase taxonBaseTest = iterator.next();
- if (taxonBaseTest.equals(taxonBase)){
- removed = taxonBases.remove(taxonBaseTest);
- }
-
-
- }
- }
- }
-
-
-
-
-
+
}
}
return getRank().isInfraSpecific();
}
+
+ /**
+ * Returns true if this name's rank indicates a rank that aggregates species like species
+ * aggregates or species groups, false otherwise. This methods currently returns false
+ * for all user defined ranks.
+ *
+ *@see Rank#isSpeciesAggregate()
+ *
+ * @return
+ */
+ @Transient
+ public boolean isSpeciesAggregate() {
+ if (rank == null){
+ return false;
+ }
+ return getRank().isSpeciesAggregate();
+ }
/**