import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao;\r
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;\r
import eu.etaxonomy.cdm.persistence.query.Grouping;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
\r
return dao.count(clazz);\r
}\r
\r
+ @Override\r
+ @Transactional(readOnly = false)\r
+ public DeleteResult delete(UUID persistentObjectUUID) {\r
+ T persistentObject = dao.findByUuid(persistentObjectUUID);\r
+ return delete(persistentObject);\r
+ }\r
+\r
+ @Override\r
+ @Transactional(readOnly = false)\r
+ public DeleteResult delete(Collection<UUID> persistentObjectUUIDs) {\r
+ DeleteResult result = new DeleteResult();\r
+ for(UUID persistentObjectUUID : persistentObjectUUIDs) {\r
+ T persistentObject = dao.findByUuid(persistentObjectUUID);\r
+ DeleteResult dr = delete(persistentObject);\r
+ result.includeResult(dr);\r
+ }\r
+ return result;\r
+ }\r
+\r
@Override\r
@Transactional(readOnly = false)\r
public DeleteResult delete(T persistentObject) {\r
DeleteResult result = new DeleteResult();\r
try{\r
dao.delete(persistentObject);\r
+ result.setCdmEntity(persistentObject);\r
} catch(DataAccessException e){\r
result.setError();\r
result.addException(e);\r
return result;\r
}\r
\r
- @Override\r
- @Transactional(readOnly = false)\r
- public DeleteResult delete(UUID uuid) {\r
- return delete(dao.load(uuid));\r
- }\r
+\r
\r
@Override\r
@Transactional(readOnly = true)\r
@Override\r
@Transactional(readOnly = true)\r
public List<T> findById(Set<Integer> idSet) { //can't be called find(Set<Integer>) as this conflicts with find(Set<UUID)\r
- return dao.listByIds(idSet, null, null, null, null);\r
+ return dao.loadList(idSet, null);\r
+ }\r
+\r
+ @Override\r
+ @Transactional(readOnly = true)\r
+ public List<T> loadByIds(List<Integer> idList, List<String> propertyPaths){\r
+ return dao.loadList(idList, propertyPaths);\r
}\r
\r
@Override\r
return uuid == null ? null : dao.load(uuid);\r
}\r
\r
+ @Override\r
+ @Transactional(readOnly = true)\r
+ public T loadWithUpdate(UUID uuid) {\r
+ return load(uuid);\r
+ }\r
+\r
@Override\r
@Transactional(readOnly = true)\r
public T load(UUID uuid, List<String> propertyPaths){\r
return uuid == null ? null : dao.load(uuid, propertyPaths);\r
}\r
\r
+ @Override\r
+ @Transactional(readOnly = true)\r
+ public List<T> load(List<UUID> uuids, List<String> propertyPaths){\r
+ if(uuids == null) {\r
+ return null;\r
+ }\r
+\r
+ List<T> entities = new ArrayList<T>();\r
+ for(UUID uuid : uuids) {\r
+ entities.add(uuid == null ? null : dao.load(uuid, propertyPaths));\r
+ }\r
+ return entities;\r
+ }\r
+\r
@Override\r
@Transactional(readOnly = false)\r
public T merge(T newInstance) {\r
return dao.merge(newInstance);\r
}\r
\r
+ @Override\r
+ @Transactional(readOnly = false)\r
+ public MergeResult<T> merge(T newInstance, boolean returnTransientEntity) {\r
+ return dao.merge(newInstance, returnTransientEntity);\r
+ }\r
+\r
+ @Override\r
+ @Transactional(readOnly = false)\r
+ public List<T> merge(List<T> detachedObjects) {\r
+ List<T> mergedObjects = new ArrayList<T>();\r
+ for(T obj : detachedObjects) {\r
+ mergedObjects.add(dao.merge(obj));\r
+ }\r
+ return mergedObjects;\r
+ }\r
+\r
+ @Override\r
+ @Transactional(readOnly = false)\r
+ public List<MergeResult<T>> merge(List<T> detachedObjects, boolean returnTransientEntity) {\r
+ List<MergeResult<T>> mergedObjects = new ArrayList<MergeResult<T>>();\r
+ for(T obj : detachedObjects) {\r
+ mergedObjects.add(dao.merge(obj, returnTransientEntity));\r
+ }\r
+ return mergedObjects;\r
+ }\r
+\r
@Override\r
@Transactional(readOnly = true)\r
public <S extends T> Pager<S> page(Class<S> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths){\r
\r
@Override\r
@Transactional(readOnly = false)\r
- public UUID save(T newInstance) {\r
+ public T save(T newInstance) {\r
return dao.save(newInstance);\r
}\r
\r