Merge branch 'release/5.0.0'
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / CommonServiceImpl.java
index 9af5e51af9bb1c5f90dd47f3545063bf591b4b58..4a3307489e22d8fe8d985dcb3919618110464139 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.ISourceable;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.metadata.CdmMetaData;\r
-import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;\r
+import eu.etaxonomy.cdm.model.metadata.CdmMetaDataPropertyName;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
@@ -58,17 +58,17 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
 \r
 \r
     @Override\r
-    public CdmBase findWithUpdate(Class<? extends CdmBase> clazz, int id){\r
+    public <T extends CdmBase> T findWithUpdate(Class<T> clazz, int id){\r
         return genericDao.find(clazz, id);\r
     }\r
 \r
     @Override\r
-    public CdmBase find(Class<? extends CdmBase> clazz, int id){\r
+    public <T extends CdmBase> T find(Class<T> clazz, int id){\r
         return genericDao.find(clazz, id);\r
     }\r
 \r
     @Override\r
-    public CdmBase find(Class<? extends CdmBase> clazz, int id, List<String> propertyPaths){\r
+    public <T extends CdmBase> T find(Class<T> clazz, int id, List<String> propertyPaths){\r
         return  genericDao.find(clazz, id, propertyPaths);\r
     }\r
 \r
@@ -117,7 +117,7 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
     //\r
     //                 referencedCdmBase = (CdmBase)HibernateProxyHelper.deproxy(referencedCdmBase);\r
     //                 Class referencedClass = referencedCdmBase.getClass();\r
-    //                 Set<CdmBase> result = new HashSet<CdmBase>();\r
+    //                 Set<CdmBase> result = new HashSet<>();\r
     //                 logger.debug("Referenced Class: " + referencedClass.getName());\r
     //\r
     //                 for (Class<? extends CdmBase> cdmClass : allCdmClasses){\r
@@ -208,7 +208,7 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
     // }\r
     //\r
     // private Set<Field> getFields(Class clazz){\r
-    //         Set<Field> result = new HashSet<Field>();\r
+    //         Set<Field> result = new HashSet<>();\r
     //         for (Field field: clazz.getDeclaredFields()){\r
     //                 if (!Modifier.isStatic(field.getModifiers())){\r
     //                         result.add(field);\r
@@ -222,7 +222,7 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
     // }\r
     //\r
     // private Set<CdmBase> getCdmBasesByFieldAndClass(Field field, Class itemClass, Class otherClazz, CdmBase item, boolean isCollection){\r
-    //         Set<CdmBase> result = new HashSet<CdmBase>();\r
+    //         Set<CdmBase> result = new HashSet<>();\r
     //         if (isCollection){\r
     //                 result.addAll(genericDao.getCdmBasesWithItemInCollection(itemClass, otherClazz, field.getName(), item));\r
     //         }else{\r
@@ -272,6 +272,12 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
         IMergeStrategy mergeStrategy;\r
         T mergeFirst = (T) genericDao.find(clazz, mergeFirstUuid);\r
         T mergeSecond = (T) genericDao.find(clazz, mergeSecondUuid);\r
+        if (mergeFirst == null){\r
+            throw new MergeException("The merge target is not available anymore.");\r
+        }\r
+        if (mergeSecond == null){\r
+            throw new MergeException("The merge candidate is not available anymore.");\r
+        }\r
         mergeStrategy = DefaultMergeStrategy.NewInstance(clazz);\r
         merge(mergeFirst, mergeSecond, mergeStrategy);\r
     }\r
@@ -324,11 +330,11 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
     }\r
 \r
     @Override\r
-    public Map<MetaDataPropertyName, CdmMetaData> getCdmMetaData() {\r
-        Map<MetaDataPropertyName, CdmMetaData> result = new HashMap<MetaDataPropertyName, CdmMetaData>();\r
+    public Map<CdmMetaDataPropertyName, CdmMetaData> getCdmMetaData() {\r
+        Map<CdmMetaDataPropertyName, CdmMetaData> result = new HashMap<>();\r
         List<CdmMetaData> metaDataList = genericDao.getMetaData();\r
         for (CdmMetaData metaData : metaDataList){\r
-            MetaDataPropertyName propertyName = metaData.getPropertyName();\r
+            CdmMetaDataPropertyName propertyName = metaData.getPropertyName();\r
             result.put(propertyName, metaData);\r
         }\r
         return result;\r
@@ -402,6 +408,12 @@ public class CommonServiceImpl /*extends ServiceBase<OriginalSourceBase,IOrigina
         return genericDao.save(newInstance);\r
     }\r
 \r
+    @Override\r
+    @Transactional(readOnly = false)\r
+    public UUID delete(CdmBase instance) {\r
+        return genericDao.delete(instance);\r
+    }\r
+\r
     @Override\r
     @Transactional(readOnly = false)\r
     public UUID saveOrUpdate(CdmBase newInstance) {\r