import org.springframework.stereotype.Repository;\r
\r
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;\r
import eu.etaxonomy.cdm.model.name.BacterialName;\r
AuditEvent auditEvent = getAuditEventFromContext();\r
if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) {\r
Criteria criteria = getSession().createCriteria(NameRelationship.class);\r
+// if (name != null)\r
criteria.add(Restrictions.eq(direction.toString(), name));\r
if(type != null) {\r
criteria.add(Restrictions.eq("type", type));\r
return results;\r
}\r
}\r
-\r
- public List<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, \r
- TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber) {\r
- return getTypeDesignations(name, status, pageSize, pageNumber, null);\r
+ \r
+ public List<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber, List<String> propertyPaths){\r
+ return getTypeDesignations(name, null, status, pageSize, pageNumber, propertyPaths);\r
}\r
\r
- public List<TypeDesignationBase> getTypeDesignations(TaxonNameBase name,TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber, List<String> propertyPaths){\r
+ public <T extends TypeDesignationBase> List<T> getTypeDesignations(TaxonNameBase name, \r
+ Class<T> type,\r
+ TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber,\r
+ List<String> propertyPaths){\r
checkNotInPriorView("getTypeDesignations(TaxonNameBase name,TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber, List<String> propertyPaths)");\r
Query query = null;\r
- if(status == null) {\r
- query = getSession().createQuery("select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name");\r
- } else {\r
- query = getSession().createQuery("select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name and designation.typeStatus = :status");\r
+ String queryString = "select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name";\r
+\r
+ if(status != null) {\r
+ queryString += " and designation.typeStatus = :status";\r
+ }\r
+ if(type != null){\r
+ queryString += " and designation.class = :type";\r
+ }\r
+\r
+ query = getSession().createQuery(queryString);\r
+ \r
+ if(status != null) { \r
query.setParameter("status", status);\r
}\r
+ if(type != null){\r
+ query.setParameter("type", type.getSimpleName());\r
+ }\r
+ \r
query.setParameter("name",name);\r
\r
if(pageSize != null) {\r
query.setFirstResult(0);\r
}\r
}\r
- return defaultBeanInitializer.initializeAll((List<TypeDesignationBase>)query.list(), propertyPaths);\r
+ return defaultBeanInitializer.initializeAll((List<T>)query.list(), propertyPaths);\r
}\r
\r
\r
List<? extends TaxonNameBase<?,?>> results = criteria.list();\r
if (results.size() == 1) {\r
defaultBeanInitializer.initializeAll(results, null);\r
- return (ZoologicalName) results.iterator().next();\r
+ TaxonNameBase<?, ?> taxonName = results.iterator().next();\r
+ if (taxonName.isInstanceOf(ZoologicalName.class)) {\r
+ ZoologicalName zoologicalName = CdmBase.deproxy(taxonName, ZoologicalName.class);\r
+ return zoologicalName;\r
+ } else {\r
+ logger.warn("This UUID (" + uuid + ") does not belong to a ZoologicalName. It belongs to: " + taxonName.getUuid() + " (" + taxonName.getTitleCache() + ")");\r
+ }\r
} else if (results.size() > 1) {\r
logger.warn("Multiple results for UUID: " + uuid);\r
} else if (results.size() == 0) {\r