fix #9166: avoid class cast exception while editing media in taxon bulk editor
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / e4 / BulkEditorE4.java
index 1fa3f0e0cc38ff74db443bb38caec9f49dc535e3..7f5fa95859c6417d44fd99792651ada0b2f8d23d 100644 (file)
@@ -38,14 +38,18 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.permission.Group;
 import eu.etaxonomy.cdm.model.permission.User;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
@@ -254,6 +258,22 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable
                     Taxon changedTaxon = ((TaxonDescription)((DescriptionElementBase)element).getInDescription()).getTaxon();
                     getEditorInput().addSaveCandidate(changedTaxon);
                     input.replaceInModel(changedTaxon);
+                }else if (((DescriptionElementBase)element).getInDescription() instanceof SpecimenDescription){
+                    SpecimenOrObservationBase changedSpecimen = ((SpecimenDescription)((DescriptionElementBase)element).getInDescription()).getDescribedSpecimenOrObservation();
+                    getEditorInput().addSaveCandidate(changedSpecimen);
+                    input.replaceInModel(changedSpecimen);
+                }
+            }else if (element instanceof Media){
+                IStructuredSelection sel = getSelection();
+                Object firstElement = sel.getFirstElement();
+                if (firstElement instanceof TaxonBase){
+                    TaxonBase changedTaxon = (TaxonBase)sel.getFirstElement();
+                    getEditorInput().addSaveCandidate(changedTaxon);
+                    input.replaceInModel(changedTaxon);
+                }else if (firstElement instanceof SpecimenOrObservationBase){
+                    SpecimenOrObservationBase changedSpecimen = (SpecimenOrObservationBase)sel.getFirstElement();
+                    getEditorInput().addSaveCandidate(changedSpecimen);
+                    input.replaceInModel(changedSpecimen);
                 }
             }else if(element instanceof Group){
                  Group oldGroup = ((GroupEditorInput)input).getEntityFromModel((Group)element);