ref #7095, #7086 Persist WS with descriptions
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 1 Dec 2017 12:25:41 +0000 (13:25 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 1 Dec 2017 12:25:41 +0000 (13:25 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/matrix/CharacterMatrix.java

index 92d913c99bbb3252cd1368c3bc4dbc20050aa338..bd7109f618e4fc9a087f72a48c7e55c5c1ef70ac 100644 (file)
@@ -8,6 +8,7 @@
 */
 package eu.etaxonomy.taxeditor.editor.workingSet;
 
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -26,12 +27,17 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.IWorkingSetService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.WorkingSet;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -101,6 +107,17 @@ public class WorkingSetEditor implements IE4SavablePart{
             areas.add(area);
         }
         TaxonNode taxonNode = composite.getTaxonNode();
+        Set<NamedArea> descriptions;
+        if(taxonNode!=null && taxonNode.getTaxon()!=null){
+            Taxon taxon = HibernateProxyHelper.deproxy(taxonNode.getTaxon(), Taxon.class);
+            Collection<SpecimenOrObservationBase> specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null);
+            for (SpecimenOrObservationBase specimen : specimens) {
+                Set<SpecimenDescription> specimenDescriptions = specimen.getSpecimenDescriptions();
+                for (SpecimenDescription specimenDescription : specimenDescriptions) {
+                    workingSet.addDescription(specimenDescription);
+                }
+            }
+        }
         FeatureTree characters = composite.getCharacters();
         DefinedTermBase rankMaxSelection = composite.getRankMax().getSelection();
         Rank rankMax = null;
index 3d53a0fdfc9b2f64e9df017b48ed98bd154c058f..c5f9ce345fe2c846c8854a10f295bb2014085697 100644 (file)
@@ -53,14 +53,10 @@ import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.IWorkingSetService;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.WorkingSet;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
@@ -195,15 +191,10 @@ public class CharacterMatrix implements IE4SavablePart, IPartContentHasDetails,
 
     private List<SpecimenDescription> getDescriptions(WorkingSet workingSet) {
         List<SpecimenDescription> descriptions = new ArrayList<>();
-        Set<TaxonNode> taxonSubtreeFilter = workingSet.getTaxonSubtreeFilter();
-        for (TaxonNode taxonNode : taxonSubtreeFilter) {
-            Taxon taxon = taxonNode.getTaxon();
-            if(taxon!=null){
-                taxon = HibernateProxyHelper.deproxy(taxon, Taxon.class);
-                Collection<SpecimenOrObservationBase> specimens = CdmStore.getService(IOccurrenceService.class).listByAssociatedTaxon(SpecimenOrObservationBase.class, null, taxon, null, null, null, null, null);
-                for (SpecimenOrObservationBase specimen : specimens) {
-                    descriptions.addAll(specimen.getSpecimenDescriptions());
-                }
+        Set<DescriptionBase> wsDescriptions = workingSet.getDescriptions();
+        for (DescriptionBase descriptionBase : wsDescriptions) {
+            if(descriptionBase instanceof SpecimenDescription){
+                descriptions.add((SpecimenDescription) descriptionBase);
             }
         }
         return descriptions;