\r
return getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification,null);\r
}\r
+\r
}\r
\r
import org.apache.log4j.Logger;\r
import org.hibernate.Criteria;\r
+import org.hibernate.Query;\r
import org.hibernate.criterion.Projections;\r
import org.hibernate.criterion.Restrictions;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import eu.etaxonomy.cdm.model.taxon.Classification;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;\r
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.AnnotatableDaoImpl;\r
import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao;\r
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao;\r
@Override\r
public List<TaxonNode> listChildrenOf(TaxonNode node, Integer pageSize, Integer pageIndex, List<String> propertyPaths, boolean recursive){\r
if (recursive == true){\r
- Criteria crit = getSession().createCriteria(TaxonNode.class); \r
+ Criteria crit = getSession().createCriteria(TaxonNode.class);\r
crit.add( Restrictions.like("treeIndex", node.treeIndex()+ "%") );\r
if(pageSize != null) {\r
crit.setMaxResults(pageSize);\r
crit.setFirstResult(0);\r
}\r
}\r
- List<TaxonNode> results = (List<TaxonNode>) crit.list();\r
+ List<TaxonNode> results = crit.list();\r
results.remove(node);\r
defaultBeanInitializer.initializeAll(results, propertyPaths);\r
return results;\r
}else{\r
return classificationDao.listChildrenOf(node.getTaxon(), node.getClassification(), pageSize, pageIndex, propertyPaths);\r
}\r
- \r
+\r
}\r
- \r
+\r
@Override\r
public Long countChildrenOf(TaxonNode node, Classification classification,\r
boolean recursive) {\r
- \r
+\r
if (recursive == true){\r
- Criteria crit = getSession().createCriteria(TaxonNode.class); \r
+ Criteria crit = getSession().createCriteria(TaxonNode.class);\r
crit.add( Restrictions.like("treeIndex", node.treeIndex()+ "%") );\r
crit.setProjection(Projections.rowCount());\r
return ((Integer)crit.uniqueResult().hashCode()).longValue();\r
return classificationDao.countChildrenOf(node.getTaxon(), classification);\r
}\r
}\r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ @Override\r
+ public List<TaxonNodeAgentRelation> listTaxonNodeAgentRelations(UUID taxonUuid, UUID classificationUuid,\r
+ Integer start, Integer limit, List<String> propertyPaths) {\r
+\r
+ String hql = "select tnar from TaxonNodeAgentRelation as tnar "\r
+ + "join tnar.taxonNode as tn "\r
+ + "join tn.taxon as t "\r
+ + "join tn.classification as c "\r
+ + "join fetch tnar.agent as a "\r
+ + "where t.uuid = :taxonUuid and c.uuid = :classificationUuid "\r
+ + "order by a.titleCache";\r
+ Query query = getSession().createQuery(hql);\r
+\r
+ if(limit != null) {\r
+ query.setMaxResults(limit);\r
+ if(start != null) {\r
+ query.setFirstResult(start);\r
+ }\r
+ }\r
+\r
+ query.setParameter("taxonUuid", taxonUuid);\r
+ query.setParameter("classificationUuid", classificationUuid);\r
+\r
+ List<TaxonNodeAgentRelation> records = query.list();\r
\r
+ if(propertyPaths != null) {\r
+ defaultBeanInitializer.initializeAll(records, propertyPaths);\r
+ }\r
+ return records;\r
+ }\r
+ /**\r
+ * {@inheritDoc}\r
+ */\r
+ @Override\r
+ public long countTaxonNodeAgentRelations(UUID taxonUuid, UUID classificationUuid) {\r
+ String hql = "select count(tnar) from TaxonNodeAgentRelation as tnar "\r
+ + "join tnar.taxonNode as tn "\r
+ + "join tn.taxon as t "\r
+ + "join tn.classification as c "\r
+ + "where t.uuid = :taxonUuid and c.uuid = :classificationUuid";\r
+ Query query = getSession().createQuery(hql);\r
+\r
+ query.setParameter("taxonUuid", taxonUuid);\r
+ query.setParameter("classificationUuid", classificationUuid);\r
+\r
+ Long count = Long.parseLong(query.uniqueResult().toString());\r
+\r
+ return count;\r
+ }\r
\r
}\r
\r
import eu.etaxonomy.cdm.model.taxon.Classification;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;\r
import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao;\r
\r
/**\r
public List<TaxonNode> listChildrenOf(TaxonNode node, Integer pageSize, Integer pageIndex, List<String> propertyPaths, boolean recursive);\r
\r
public abstract Long countChildrenOf(TaxonNode node, Classification classification, boolean recursive);\r
+\r
+ /**\r
+ * Returns the of TaxonNodeAgentRelation entities which are associated with the TaxonNode for the\r
+ * given TaxonUuid in the specified Classification.\r
+ *\r
+ * @param taxonUuid\r
+ * @param limit\r
+ * @param start\r
+ * @param classification\r
+ * @param propertyPaths\r
+ * @return\r
+ */\r
+ public List<TaxonNodeAgentRelation> listTaxonNodeAgentRelations(UUID taxonUuid, UUID classificationUuid,\r
+ Integer start, Integer limit, List<String> propertyPaths);\r
+\r
+ /**\r
+ * Returns the number of TaxonNodeAgentRelation entities which are associated with the TaxonNode for the\r
+ * given TaxonUuid in the specified Classification.\r
+ *\r
+ * @param taxonUuid\r
+ * @param classification\r
+ * @return\r
+ */\r
+ public long countTaxonNodeAgentRelations(UUID taxonUuid, UUID classificationUuid);\r
+\r
+\r
}\r
\r
import eu.etaxonomy.cdm.api.service.INameService;\r
import eu.etaxonomy.cdm.api.service.IOccurrenceService;\r
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
import eu.etaxonomy.cdm.api.service.ITaxonService;\r
import eu.etaxonomy.cdm.api.service.config.IncludedTaxonConfiguration;\r
import eu.etaxonomy.cdm.api.service.dto.IncludedTaxaDTO;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;\r
import eu.etaxonomy.cdm.remote.controller.util.PagerParameters;\r
private IOccurrenceService occurrenceService;\r
@Autowired\r
private INameService nameService;\r
+ @Autowired\r
+ private ITaxonNodeService nodeService;\r
\r
protected static final List<String> TAXONNODE_INIT_STRATEGY = Arrays.asList(new String []{\r
"taxonNodes"\r
@PathVariable("uuid") UUID uuid,\r
HttpServletRequest request,\r
HttpServletResponse response) throws IOException {\r
+\r
TaxonBase<?> tb = service.load(uuid, TAXONNODE_INIT_STRATEGY);\r
if(tb instanceof Taxon){\r
return ((Taxon)tb).getTaxonNodes();\r
}\r
}\r
\r
+ @RequestMapping(value = "taxonNodeAgentRelations/{classification_uuid}", method = RequestMethod.GET)\r
+ public Pager<TaxonNodeAgentRelation> doGetTaxonNodeAgentRelations(\r
+ @PathVariable("uuid") UUID uuid,\r
+ @PathVariable("classification_uuid") UUID classificationUuid,\r
+ @RequestParam(value = "pageNumber", required = false) Integer pageNumber,\r
+ @RequestParam(value = "pageSize", required = false) Integer pageSize,\r
+ HttpServletRequest request,\r
+ HttpServletResponse response) throws IOException {\r
+\r
+ PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber);\r
+ pagerParams.normalizeAndValidate(response);\r
+\r
+ Pager<TaxonNodeAgentRelation> pager = nodeService.pageTaxonNodeAgentRelations(uuid, classificationUuid,\r
+ pagerParams.getPageSize(), pagerParams.getPageIndex(), null);\r
+ return pager;\r
+\r
+\r
+ }\r
+\r
\r
@RequestMapping(value = "specimensOrObservations", method = RequestMethod.GET)\r
public ModelAndView doListSpecimensOrObservations(\r
import java.util.UUID;
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
/**
*/
public DeleteResult deleteTaxonNodes(List<TaxonNode> list, TaxonDeletionConfigurator config);
-
+ /**
+ * Returns the of TaxonNodeAgentRelation entities which are associated with the TaxonNode for the
+ * given TaxonUuid in the specified Classification.
+ *
+ * @param taxonUuid
+ * @param classification
+ * @return
+ */
+ public Pager<TaxonNodeAgentRelation> pageTaxonNodeAgentRelations(UUID taxonUuid, UUID classificationUuid,
+ Integer pageSize, Integer pageIndex, List<String> propertyPaths);
}
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
import eu.etaxonomy.cdm.api.service.config.TaxonNodeDeletionConfigurator;
import eu.etaxonomy.cdm.api.service.dto.CdmEntityIdentifier;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.api.service.pager.PagerUtils;
+import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNaturalComparator;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByNameComparator;
import eu.etaxonomy.cdm.model.taxon.TaxonNodeByRankAndNameComparator;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
return result;
}
+ @Override
+ public Pager<TaxonNodeAgentRelation> pageTaxonNodeAgentRelations(UUID taxonUuid, UUID classificationUuid,
+ Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
+
+ List<TaxonNodeAgentRelation> records = null;
+
+ long count = dao.countTaxonNodeAgentRelations(taxonUuid, classificationUuid);
+ if(PagerUtils.hasResultsInRange(count, pageIndex, pageSize)) {
+ records = dao.listTaxonNodeAgentRelations(taxonUuid, classificationUuid,
+ PagerUtils.startFor(pageSize, pageIndex), PagerUtils.limitFor(pageSize), propertyPaths);
+
+ }
+
+ Pager<TaxonNodeAgentRelation> pager = new DefaultPagerImpl<TaxonNodeAgentRelation>(pageIndex, count, pageSize, records);
+ return pager;
+ }
+
}
taxonPager = taxonService.page(Taxon.class, batchSize, pageIndex++, null, null);
if(taxonPager.getCurrentIndex() == 0){
- subMonitor.beginTask("Accumulating by area ", taxonPager.getCount());
+ subMonitor.beginTask("Accumulating by area ", taxonPager.getCount().intValue());
}
logger.debug("accumulateByArea() - taxon " + taxonPager.getFirstRecord() + " to " + taxonPager.getLastRecord() + " of " + taxonPager.getCount() + "]");
if(taxonSubMonitor == null) {
taxonSubMonitor = new SubProgressMonitor(subMonitor, ticksPerRank);
- taxonSubMonitor.beginTask("Accumulating by rank " + rank.getLabel(), taxonPager.getCount());
+ taxonSubMonitor.beginTask("Accumulating by rank " + rank.getLabel(), taxonPager.getCount().intValue());
}