merge-update from trunk
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / TaxonServiceImpl.java
index e7ba8b07ff48940522d2ef122a18dd8c39a85837..dcb0b8f27907c7f3b87a3338218bef84210690a9 100644 (file)
@@ -853,6 +853,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
 \r
         Set<Taxon> taxa = new HashSet<Taxon>();\r
         List<Media> taxonMedia = new ArrayList<Media>();\r
+        List<Media> nonImageGalleryImages = new ArrayList<Media>();\r
 \r
         if (limitToGalleries == null) {\r
             limitToGalleries = false;\r
@@ -877,11 +878,18 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                 if (!limitToGalleries || taxonDescription.isImageGallery()) {\r
                     for (DescriptionElementBase element : taxonDescription.getElements()) {\r
                         for (Media media : element.getMedia()) {\r
-                            taxonMedia.add(media);\r
+                            if(taxonDescription.isImageGallery()){\r
+                                taxonMedia.add(media);\r
+                            }\r
+                            else{\r
+                                nonImageGalleryImages.add(media);\r
+                            }\r
                         }\r
                     }\r
                 }\r
             }\r
+            //put images from image gallery first (#3242)\r
+            taxonMedia.addAll(nonImageGalleryImages);\r
         }\r
 \r
 \r
@@ -1172,10 +1180,10 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                                 }\r
                             }\r
                         config.getTaxonNodeConfig().setDeleteTaxon(false);\r
-                        List<UUID> deletedNodes = nodeService.deleteTaxonNodes(nodesList, config);\r
-                        if (deletedNodes.isEmpty() && !nodesList.isEmpty()){\r
-                                result.setError();\r
-                             result.addException(new Exception("There are an error in deleting the taxon nodes."));\r
+                        DeleteResult resultNodes = nodeService.deleteTaxonNodes(nodesList, config);\r
+                        if (!resultNodes.isOk()){\r
+                               result.addExceptions(resultNodes.getExceptions());\r
+                               result.setStatus(resultNodes.getStatus());\r
                         }\r
                     }\r
                     if (!success){\r
@@ -1188,7 +1196,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
 \r
              //PolytomousKey TODO\r
 \r
-             \r
+\r
             //TaxonNameBase\r
             if (config.isDeleteNameIfPossible()){\r
 \r
@@ -1199,7 +1207,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
                     if ((taxon.getTaxonNodes() == null || taxon.getTaxonNodes().size()== 0) && name != null ){\r
                         taxon = (Taxon) HibernateProxyHelper.deproxy(taxon);\r
                         name.removeTaxonBase(taxon);\r
-                        nameService.merge(name);\r
+                        nameService.saveOrUpdate(name);\r
                         DeleteResult nameResult = new DeleteResult();\r
 \r
                         nameResult = nameService.delete(name, config.getNameDeletionConfig());\r
@@ -3069,7 +3077,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
     @Override\r
     public List<String> isDeletable(TaxonBase taxonBase, DeleteConfiguratorBase config){\r
         List<String> result = new ArrayList<String>();\r
-        Set<CdmBase> references = commonService.getReferencingObjects(taxonBase);\r
+        Set<CdmBase> references = commonService.getReferencingObjectsForDeletion(taxonBase);\r
         if (taxonBase instanceof Taxon){\r
             TaxonDeletionConfigurator taxonConfig = (TaxonDeletionConfigurator) config;\r
             result = isDeletableForTaxon(references, taxonConfig);\r
@@ -3084,7 +3092,7 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         String message;\r
         List<String> result = new ArrayList<String>();\r
         for (CdmBase ref: references){\r
-            if (!(ref instanceof SynonymRelationship || ref instanceof Taxon || ref instanceof TaxonNameBase)){\r
+            if (!(ref instanceof SynonymRelationship || ref instanceof Taxon || ref instanceof TaxonNameBase )){\r
                 message = "The Synonym can't be deleted as long as it is referenced by " + ref.getClass().getSimpleName() + " with id "+ ref.getId();\r
                 result.add(message);\r
             }\r
@@ -3282,6 +3290,11 @@ public class TaxonServiceImpl extends IdentifiableServiceBase<TaxonBase,ITaxonDa
         }\r
         return result;\r
     }\r
+    @Override\r
+    public List<TaxonBase> findTaxaByName(MatchingTaxonConfigurator config){\r
+        List<TaxonBase> taxonList = dao.getTaxaByName(true, false, false, config.getTaxonNameTitle(), null, MatchMode.EXACT, null, 0, 0, config.getPropertyPath());\r
+        return taxonList;\r
+    }\r
+\r
 \r
-   \r
 }\r