ref #8934 adapt Feature and Taxon for FoG status import
authora.mueller <a.mueller@bgbm.org>
Sun, 5 Apr 2020 06:12:08 +0000 (08:12 +0200)
committera.mueller <a.mueller@bgbm.org>
Sun, 5 Apr 2020 06:22:41 +0000 (08:22 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/description/Feature.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/taxon/Taxon.java

index 5d334e15a959dadca20b62e04ba97eb00f118a85..c87ee055f5af481a13f279c5ff2c3dff3a3aa48c 100644 (file)
@@ -191,7 +191,7 @@ public class Feature extends DefinedTermBase<Feature> {
     private static final UUID uuidIndividualsAssociation = UUID.fromString("e2308f37-ddc5-447d-b483-5e2171dd85fd");
     public static final UUID uuidSpecimen = UUID.fromString("8200e050-d5fd-4cac-8a76-4b47afb13809");
     private static final UUID uuidObservation = UUID.fromString("f59e747d-0b4f-4bf7-b69a-cbd50bc78595");
-    private static final UUID uuidStatus = UUID.fromString("86d40635-2a63-4ad6-be75-9faa4a6a57fb");
+    public static final UUID uuidStatus = UUID.fromString("86d40635-2a63-4ad6-be75-9faa4a6a57fb");
     private static final UUID uuidSystematics = UUID.fromString("bd9aca17-cd0e-4418-a3a1-1a4b80dbc162");
     private static final UUID uuidUseRecord = UUID.fromString("8125a59d-b4d5-4485-89ea-67306297b599");
     private static final UUID uuidNotes = UUID.fromString("b5780b45-6439-4f3c-9818-d89d26d36eb2");
index 0d1cf851094720f12a45bdc16e72b0b1eec7cd93..9c7003a373312a786797be97760253c03eab083b 100644 (file)
@@ -51,10 +51,12 @@ import org.springframework.util.ReflectionUtils;
 
 import eu.etaxonomy.cdm.hibernate.search.GroupByTaxonClassBridge;
 import eu.etaxonomy.cdm.hibernate.search.TaxonRelationshipClassBridge;
+import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.IRelated;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.DescriptionType;
+import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.IDescribable;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
@@ -1697,6 +1699,32 @@ public class Taxon
         return result;
     }
 
+    public void clearDescriptions() {
+        this.descriptions = new HashSet<>();
+    }
+
+    /**
+     * Compiles all description items attached to this taxon having the given feature
+     * and being of the given class. If feature or clazz is null no according filter
+     * is applied.
+     */
+    public <T extends DescriptionElementBase> Set<T> getDescriptionItems(Feature feature, Class<T> clazz) {
+        Set<T> result = new HashSet<>();
+        Set<TaxonDescription> descriptions = this.getDescriptions();
+        for (TaxonDescription description : descriptions) {
+            for (DescriptionElementBase deb : description.getElements()) {
+                if (clazz == null || deb.isInstanceOf(clazz)) {
+                    if (feature == null || feature.equals(deb.getFeature())) {
+                        T matchingDeb = CdmBase.deproxy(deb, clazz);
+                        result.add(matchingDeb);
+                    }
+                }
+            }
+        }
+        return result;
+    }
+
+    //*********************** CLONE ********************************************************/
 
     /**
      * Clones <i>this</i> taxon. This is a shortcut that enables to create
@@ -1752,12 +1780,5 @@ public class Taxon
         }*/
 
         return result;
-
     }
-
-    public void clearDescriptions() {
-               this.descriptions = new HashSet<>();
-       }
-
-
 }