import eu.etaxonomy.cdm.model.media.Media;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao;\r
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;\r
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionElementDao;\r
return dao.countDescriptions(type, hasImages, hasText, feature);\r
}\r
\r
- public <TYPE extends DescriptionElementBase> Pager<TYPE> getDescriptionElements(DescriptionBase description, Set<Feature> features, Class<TYPE> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {\r
- Integer numberOfResults = dao.countDescriptionElements(description, features, type);\r
- \r
+ public <TYPE extends DescriptionElementBase> Pager<TYPE> getDescriptionElements(DescriptionBase description,\r
+ Set<Feature> features, Class<TYPE> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {\r
+ Integer numberOfResults = dao.countDescriptionElements(description, features, type);\r
+\r
List<TYPE> results = new ArrayList<TYPE>();\r
- if(numberOfResults > 0) { // no point checking again\r
- results = dao.getDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths); \r
+ if (numberOfResults > 0) { // no point checking again\r
+ results = dao.getDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);\r
}\r
- \r
+\r
return new DefaultPagerImpl<TYPE>(pageNumber, numberOfResults, pageSize, results);\r
}\r
+ \r
\r
public Pager<Media> getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {\r
Integer numberOfResults = descriptionElementDao.countMedia(descriptionElement);\r
import eu.etaxonomy.cdm.model.media.Media;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
\r
* @param description The description which these description elements belong to (can be null to count all description elements)\r
* @param features Restrict the results to those description elements which are scoped by one of the Features passed (can be null or empty)\r
* @param type The type of description\r
+ * @param class \r
* @param pageSize The maximum number of description elements returned (can be null for all description elements)\r
* @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
* @param propertyPaths Properties to initialize in the returned entities, following the syntax described in {@link BeanInitializer#initialize(Object, List)}\r
import java.util.Collection;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.Set;\r
import java.util.UUID;\r
\r
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;\r
\r
public List<HomotypicalGroup> getAllHomotypicalGroups(int limit, int start);\r
\r
+ @Deprecated\r
public List<RelationshipBase> getAllRelationships(int limit, int start);\r
\r
/**\r
public TermVocabulary<NameRelationshipType> getNameRelationshipTypeVocabulary();\r
\r
/**\r
- * Return a List of relationships related to this name, optionally filtered \r
+ * Return a List of relationships in which this name is related to another name, optionally filtered \r
* by relationship type\r
* \r
- * @param name the name\r
+ * @param name the name on the <i>"from side"</i> of the relationship\r
+ * @param type the relationship type (or null to return all relationships) \r
+ * @param pageSize The maximum number of relationships returned (can be null for all relationships)\r
+ * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+ * @param orderHints may be null\r
+ * @param propertyPaths properties to initialize - see {@link BeanInitializer#initialize(Object, List)}\r
+ * @return a Pager of NameRelationship instances\r
+ */\r
+ public List<NameRelationship> listFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+ \r
+ /**\r
+ * Return a List of relationships in which this name is related to another name, optionally filtered \r
+ * by relationship type\r
+ * \r
+ * @param name the name on the <i>"from side"</i> of the relationship\r
* @param type the relationship type (or null to return all relationships) \r
* @param pageSize The maximum number of relationships returned (can be null for all relationships)\r
* @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
* @param propertyPaths properties to initialize - see {@link BeanInitializer#initialize(Object, List)}\r
* @return a Pager of NameRelationship instances\r
*/\r
- public Pager<NameRelationship> getRelatedNames(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+ public Pager<NameRelationship> pageFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+ \r
+ /**\r
+ * Return a List of relationships in which another name is related to this name, optionally filtered \r
+ * by relationship type\r
+ * \r
+ * @param name the name on the <i>"to side"</i> of the relationship \r
+ * @param type the relationship type (or null to return all relationships) \r
+ * @param pageSize The maximum number of relationships returned (can be null for all relationships)\r
+ * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+ * @param orderHints may be null\r
+ * @param propertyPaths properties to initialize - see {@link BeanInitializer#initialize(Object, List)}\r
+ * @return a Pager of NameRelationship instances\r
+ */\r
+ public List<NameRelationship> listToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+ \r
+ /**\r
+ * Return a List of relationships in which another name is related to this name, optionally filtered \r
+ * by relationship type\r
+ * \r
+ * @param name the name on the <i>"to side"</i> of the relationship \r
+ * @param type the relationship type (or null to return all relationships) \r
+ * @param pageSize The maximum number of relationships returned (can be null for all relationships)\r
+ * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)\r
+ * @param orderHints may be null\r
+ * @param propertyPaths properties to initialize - see {@link BeanInitializer#initialize(Object, List)}\r
+ * @return a Pager of NameRelationship instances\r
+ */\r
+ public Pager<NameRelationship> pageToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);\r
+ \r
\r
/**\r
* Return a List of hybrids related to this name, optionally filtered \r
public Synonym makeTaxonSynonym (Taxon oldTaxon, Taxon newAcceptedTaxon, SynonymRelationshipType synonymType, ReferenceBase citation, String citationMicroReference);
/**
- * Returns the TaxonRelationships (of where relationship.type == type, if this arguement is supplied)
+ * Returns the TaxonRelationships (of where relationship.type == type, if this argument is supplied)
* where the supplied taxon is relatedTo.
*
* @param taxon The taxon that is relatedTo
* @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
* @param orderHints Properties to order by
* @param propertyPaths Properties to initialize in the returned entities, following the syntax described in {@link BeanInitializer#initialize(Object, List)}
+ * @return a List of TaxonRelationship instances
+ */
+ public List<TaxonRelationship> listToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
+
+ /**
+ * Returns the TaxonRelationships (of where relationship.type == type, if this argument is supplied)
+ * where the supplied taxon is relatedTo.
+ *
+ * @param taxon The taxon that is relatedTo
+ * @param type The type of TaxonRelationship (can be null)
+ * @param pageSize The maximum number of relationships returned (can be null for all relationships)
+ * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+ * @param orderHints Properties to order by
+ * @param propertyPaths Properties to initialize in the returned entities, following the syntax described in {@link BeanInitializer#initialize(Object, List)}
+ * @return a Pager of TaxonRelationship instances
+ */
+ public Pager<TaxonRelationship> pageToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
+
+ /**
+ * Returns the TaxonRelationships (of where relationship.type == type, if this argument is supplied)
+ * where the supplied taxon is relatedFrom.
+ *
+ * @param taxon The taxon that is relatedFrom
+ * @param type The type of TaxonRelationship (can be null)
+ * @param pageSize The maximum number of relationships returned (can be null for all relationships)
+ * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+ * @param orderHints Properties to order by
+ * @param propertyPaths Properties to initialize in the returned entities, following the syntax described in {@link BeanInitializer#initialize(Object, List)}
+ * @return a List of TaxonRelationship instances
+ */
+ public List<TaxonRelationship> listFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
+
+ /**
+ * Returns the TaxonRelationships (of where relationship.type == type, if this argument is supplied)
+ * where the supplied taxon is relatedFrom.
+ *
+ * @param taxon The taxon that is relatedFrom
+ * @param type The type of TaxonRelationship (can be null)
+ * @param pageSize The maximum number of relationships returned (can be null for all relationships)
+ * @param pageNumber The offset (in pageSize chunks) from the start of the result set (0 - based)
+ * @param orderHints Properties to order by
+ * @param propertyPaths Properties to initialize in the returned entities, following the syntax described in {@link BeanInitializer#initialize(Object, List)}
* @return a Pager of TaxonRelationship instances
*/
- public Pager<TaxonRelationship> getRelatedTaxa(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
+ public Pager<TaxonRelationship> pageFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths);
/**
- * Returns the SynonymRelationships (of where relationship.type == type, if this arguement is supplied)
+ * Returns the SynonymRelationships (of where relationship.type == type, if this argument is supplied)
* where the supplied taxon is relatedTo.
*
* @param taxon The taxon that is relatedTo
import java.util.Collection;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.Set;\r
import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
return homotypicalGroupDao.list(limit, start);\r
}\r
\r
+ @Deprecated\r
public List<RelationshipBase> getAllRelationships(int limit, int start){\r
return dao.getAllRelationships(limit, start);\r
}\r
\r
return new DefaultPagerImpl<HybridRelationship>(pageNumber, numberOfResults, pageSize, results);\r
}\r
-\r
- public Pager<NameRelationship> getRelatedNames(TaxonNameBase name,NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
- Integer numberOfResults = dao.countRelatedNames(name, type);\r
+ \r
+ public List<NameRelationship> listFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+ Integer numberOfResults = dao.countNameRelationships(name, NameRelationship.Direction.relatedFrom, type);\r
\r
List<NameRelationship> results = new ArrayList<NameRelationship>();\r
if(numberOfResults > 0) { // no point checking again\r
- results = dao.getRelatedNames(name, type, pageSize, pageNumber,orderHints,propertyPaths); \r
+ results = dao.getNameRelationships(name, NameRelationship.Direction.relatedFrom, type, pageSize, pageNumber, orderHints, propertyPaths); \r
}\r
+ return results;\r
+ }\r
+\r
+ public Pager<NameRelationship> pageFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+ List<NameRelationship> results = listFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);\r
+ return new DefaultPagerImpl<NameRelationship>(pageNumber, results.size(), pageSize, results);\r
+ }\r
+ \r
+ public List<NameRelationship> listToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+\r
+ Integer numberOfResults = dao.countNameRelationships(name, NameRelationship.Direction.relatedTo, type);\r
\r
- return new DefaultPagerImpl<NameRelationship>(pageNumber, numberOfResults, pageSize, results);\r
+ List<NameRelationship> results = new ArrayList<NameRelationship>();\r
+ if(numberOfResults > 0) { // no point checking again\r
+ results = dao.getNameRelationships(name, NameRelationship.Direction.relatedTo, type, pageSize, pageNumber, orderHints, propertyPaths); \r
+ }\r
+ return results;\r
+ }\r
+ \r
+ public Pager<NameRelationship> pageToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+ List<NameRelationship> results = listToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);\r
+ return new DefaultPagerImpl<NameRelationship>(pageNumber, results.size(), pageSize, results);\r
}\r
\r
\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.cdm.persistence.dao.BeanInitializer;\r
import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;\r
import eu.etaxonomy.cdm.persistence.dao.common.IOrderedTermVocabularyDao;\r
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao;\r
private IOrderedTermVocabularyDao orderedVocabularyDao;\r
@Autowired\r
private IDescriptionDao descriptionDao;\r
+ @Autowired\r
+ private BeanInitializer defaultBeanInitializer;\r
\r
\r
/**\r
return new DefaultPagerImpl<TaxonBase>(pageNumber, numberOfResults, pageSize, results);\r
}\r
\r
- public Pager<TaxonRelationship> getRelatedTaxa(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
- Integer numberOfResults = dao.countRelatedTaxa(taxon, type);\r
+ public List<TaxonRelationship> listToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths){\r
+ Integer numberOfResults = dao.countTaxonRelationships(taxon, type, TaxonRelationship.Direction.relatedTo);\r
\r
List<TaxonRelationship> results = new ArrayList<TaxonRelationship>();\r
if(numberOfResults > 0) { // no point checking again\r
- results = dao.getRelatedTaxa(taxon, type, pageSize, pageNumber, orderHints, propertyPaths); \r
+ results = dao.getTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths, TaxonRelationship.Direction.relatedTo); \r
}\r
+ return results;\r
+ }\r
+ \r
+ public Pager<TaxonRelationship> pageToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+ List<TaxonRelationship> results = listToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths); \r
+ return new DefaultPagerImpl<TaxonRelationship>(pageNumber, results.size(), pageSize, results);\r
+ }\r
+ \r
+ public List<TaxonRelationship> listFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths){\r
+ Integer numberOfResults = dao.countTaxonRelationships(taxon, type, TaxonRelationship.Direction.relatedFrom);\r
\r
- return new DefaultPagerImpl<TaxonRelationship>(pageNumber, numberOfResults, pageSize, results);\r
+ List<TaxonRelationship> results = new ArrayList<TaxonRelationship>();\r
+ if(numberOfResults > 0) { // no point checking again\r
+ results = dao.getTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths, TaxonRelationship.Direction.relatedFrom); \r
+ }\r
+ return results;\r
+ }\r
+ \r
+ public Pager<TaxonRelationship> pageFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
+ List<TaxonRelationship> results = listToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths); \r
+ return new DefaultPagerImpl<TaxonRelationship>(pageNumber, results.size(), pageSize, results);\r
}\r
\r
public Pager<SynonymRelationship> getSynonyms(Taxon taxon, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {\r
if (configurator.isDoTaxa() && configurator.isDoSynonyms()) {\r
taxa = dao.getTaxaByName(configurator.getSearchString(), \r
configurator.getMatchMode(), SelectMode.ALL, configurator.getSec(),\r
- configurator.getPageSize(), configurator.getPageNumber());\r
+ configurator.getPageSize(), configurator.getPageNumber(), \r
+ configurator.getTaxonPropertyPath());\r
numberTaxaResults = \r
dao.countTaxaByName(configurator.getSearchString(), \r
configurator.getMatchMode(), SelectMode.ALL, configurator.getSec());\r
} else if(configurator.isDoTaxa()) {\r
taxa = dao.getTaxaByName(configurator.getSearchString(), \r
configurator.getMatchMode(), SelectMode.TAXA, configurator.getSec(),\r
- configurator.getPageSize(), configurator.getPageNumber());\r
+ configurator.getPageSize(), configurator.getPageNumber(), \r
+ configurator.getTaxonPropertyPath());\r
numberTaxaResults = \r
dao.countTaxaByName(configurator.getSearchString(), \r
configurator.getMatchMode(), SelectMode.TAXA, configurator.getSec());\r
} else if (configurator.isDoSynonyms()) {\r
taxa = dao.getTaxaByName(configurator.getSearchString(), \r
configurator.getMatchMode(), SelectMode.SYNONYMS, configurator.getSec(),\r
- configurator.getPageSize(), configurator.getPageNumber());\r
+ configurator.getPageSize(), configurator.getPageNumber(), \r
+ configurator.getTaxonPropertyPath());\r
numberTaxaResults = \r
dao.countTaxaByName(configurator.getSearchString(), \r
configurator.getMatchMode(), SelectMode.SYNONYMS, configurator.getSec());\r
\r
if (logger.isDebugEnabled()) { logger.debug(numberTaxaResults + " matching taxa counted"); }\r
\r
- results.addAll(taxa);\r
+ if(taxa != null){\r
+ results.addAll(taxa);\r
+ }\r
\r
numberOfResults += numberTaxaResults;\r
\r
int numberNameResults = 0;\r
List<? extends TaxonNameBase<?,?>> names = \r
nameDao.findByName(configurator.getSearchString(), configurator.getMatchMode(), \r
- configurator.getPageSize(), configurator.getPageNumber(), null);\r
+ configurator.getPageSize(), configurator.getPageNumber(), null, null);\r
if (logger.isDebugEnabled()) { logger.debug(names.size() + " matching name(s) found"); }\r
if (names.size() > 0) {\r
for (TaxonNameBase<?,?> taxonName : names) {\r
}\r
\r
// Taxa from common names\r
- \r
+ // FIXME the matching common names also must be returned\r
if (configurator.isDoTaxaByCommonNames()) {\r
int numberCommonNameResults = 0;\r
List<CommonTaxonName> commonTaxonNames = \r
Taxon taxon = taxonDescription.getTaxon();\r
taxon = HibernateProxyHelper.deproxy(taxon, Taxon.class);\r
if (!results.contains(taxon) && !taxon.isMisappliedName()) {\r
+ defaultBeanInitializer.initialize(taxon, configurator.getTaxonPropertyPath());\r
results.add(taxon);\r
numberCommonNameResults++;\r
}\r
\r
package eu.etaxonomy.cdm.api.service.config;\r
\r
+import java.util.List;\r
+\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
\r
\r
public ReferenceBase getSec();\r
\r
- public void setReferenceBase(ReferenceBase sec);\r
+ public void setSec(ReferenceBase sec);\r
\r
public Integer getPageSize();\r
\r
public Integer getPageNumber();\r
\r
public void setPageNumber(Integer pageNumber);\r
+ \r
+ public List<String> getTaxonPropertyPath();\r
+\r
+ public void setTaxonPropertyPath(List<String> taxonPropertyPath);\r
+\r
+ public List<String> getCommonNamePropertyPath();\r
+\r
+ public void setCommonNamePropertyPath(List<String> commonNamePropertyPath);\r
}\r
\r
package eu.etaxonomy.cdm.api.service.config.impl;\r
\r
+import java.util.List;\r
+\r
import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorBase;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
private boolean doNamesWithoutTaxa = false;\r
private String searchString;\r
private ReferenceBase sec = null;\r
+ private List<String> taxonPropertyPath;\r
+ private List<String> commonNamePropertyPath;\r
\r
public static TaxonServiceConfiguratorImpl NewInstance() {\r
return new TaxonServiceConfiguratorImpl();\r
return sec;\r
}\r
\r
- public void setReferenceBase(ReferenceBase sec) {\r
+ public void setSec(ReferenceBase sec) {\r
this.sec = sec;\r
}\r
+\r
+ public List<String> getTaxonPropertyPath() {\r
+ return taxonPropertyPath;\r
+ }\r
+\r
+ public void setTaxonPropertyPath(List<String> taxonPropertyPath) {\r
+ this.taxonPropertyPath = taxonPropertyPath;\r
+ }\r
+\r
+ public List<String> getCommonNamePropertyPath() {\r
+ return commonNamePropertyPath;\r
+ }\r
+\r
+ public void setCommonNamePropertyPath(List<String> commonNamePropertyPath) {\r
+ this.commonNamePropertyPath = commonNamePropertyPath;\r
+ }\r
+ \r
}\r