3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.api
.service
;
13 import java
.util
.Collection
;
14 import java
.util
.List
;
16 import java
.util
.UUID
;
18 import eu
.etaxonomy
.cdm
.model
.common
.UuidAndTitleCache
;
19 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentation
;
20 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
21 import eu
.etaxonomy
.cdm
.model
.taxon
.ITreeNode
;
22 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
23 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
24 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonomicTree
;
25 import eu
.etaxonomy
.cdm
.persistence
.query
.OrderHint
;
30 * @created Sep 21, 2009
33 public interface ITaxonTreeService
extends IIdentifiableEntityService
<TaxonomicTree
> {
40 public TaxonNode
getTaxonNodeByUuid(UUID uuid
);
47 public ITreeNode
getTreeNodeByUuid(UUID uuid
);
54 * @param propertyPaths
57 public List
<TaxonomicTree
> listTaxonomicTrees(Integer limit
, Integer start
, List
<OrderHint
> orderHints
, List
<String
> propertyPaths
);
64 public TaxonomicTree
getTaxonomicTreeByUuid(UUID uuid
);
69 * @param taxonomicTreeUuid
70 * @param propertyPaths
72 * @deprecated use loadTaxonNode(TaxonNode taxonNode, ...) instead
73 * if you have a taxonomicTree and a taxon that is in it, you should also have the according taxonNode
75 public TaxonNode
loadTaxonNodeByTaxon(Taxon taxon
, UUID taxonomicTreeUuid
, List
<String
> propertyPaths
);
80 * @param propertyPaths
82 * @deprecated use TaxonNodeService instead
84 public TaxonNode
loadTaxonNode(TaxonNode taxonNode
, List
<String
> propertyPaths
);
87 * Loads all TaxonNodes of the specified tree for a given Rank.
88 * If a branch does not contain a TaxonNode with a TaxonName at the given
89 * Rank the node associated with the next lower Rank is taken as root node.
90 * If the <code>rank</code> is null the absolute root nodes will be returned.
92 * @param taxonomicTree
93 * @param rank may be null
94 * @param propertyPaths
97 public List
<TaxonNode
> loadRankSpecificRootNodes(TaxonomicTree taxonomicTree
, Rank rank
, List
<String
> propertyPaths
);
102 * specifies the root level of the taxonomic tree, may be null.
103 * Nodes of this rank or in case this rank does not exist in the
104 * current branch the next lower rank is taken as root node for
105 * this rank henceforth called the <b>base node</b>.
106 * @param propertyPaths
107 * the initialization strategy for the returned TaxonNode
109 * @return the path of nodes from the <b>base node</b> to the node of the
112 public List
<TaxonNode
> loadTreeBranch(TaxonNode taxonNode
, Rank baseRank
, List
<String
> propertyPaths
);
115 * Although this method seems to be a redundant alternative to {@link #loadChildNodesOfTaxonNode(TaxonNode, List)} it is an important
116 * alternative from which web services benefit. Without this method the web service controller method, which operates outside of the
117 * transaction, would have to initialize the full taxon tree with all nodes of the taxon.
118 * This would be rather slow compared to using this method.
120 * @param taxonomicTree
121 * the taxonomic tree to be used
123 * specifies the root level of the taxonomic tree, may be null.
124 * Nodes of this rank or in case this rank does not exist in the
125 * current branch the next lower rank is taken as as root node for
126 * this rank henceforth called the <b>base node</b>.
127 * @param propertyPaths
128 * the initialization strategy for the returned TaxonNode
130 * @return the path of nodes from the <b>base node</b> to the node of the specified
133 public List
<TaxonNode
> loadTreeBranchToTaxon(Taxon taxon
, TaxonomicTree taxonomicTree
, Rank baseRank
, List
<String
> propertyPaths
);
138 * Although this method seems to be a redundant alternative to {@link #loadChildNodesOfTaxonNode(TaxonNode, List)} it is an important
139 * alternative from which web services benefit. Without this method the web service controller method, which operates outside of the
140 * transaction, would have to initialize the full taxon tree with all nodes of the taxon.
141 * This would be rather slow compared to using this method.
143 * @param taxonomicTree
144 * @param propertyPaths
147 public List
<TaxonNode
> loadChildNodesOfTaxon(Taxon taxon
, TaxonomicTree taxonomicTree
, List
<String
> propertyPaths
);
152 * @param taxonomicTree
153 * @param propertyPaths
155 * @deprecated move to TaxonNodeService
157 public List
<TaxonNode
> loadChildNodesOfTaxonNode(TaxonNode taxonNode
, List
<String
> propertyPaths
);
161 * @param taxonomicTree
164 public List
<UuidAndTitleCache
<TaxonNode
>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByTaxonomicTree(TaxonomicTree taxonomicTree
);
169 * @param propertyPaths
172 * @param widthOrDuration
175 * @deprecated use getAllMediaForChildNodes(TaxonNode taxonNode, ...) instead
176 * if you have a taxonomicTree and a taxon that is in it, you should also have the according taxonNode
178 public Map
<UUID
, List
<MediaRepresentation
>> getAllMediaForChildNodes(Taxon taxon
, TaxonomicTree taxTree
, List
<String
> propertyPaths
, int size
, int height
, int widthOrDuration
, String
[] mimeTypes
);
183 * @param propertyPaths
186 * @param widthOrDuration
190 public Map
<UUID
, List
<MediaRepresentation
>> getAllMediaForChildNodes(TaxonNode taxonNode
, List
<String
> propertyPaths
, int size
, int height
, int widthOrDuration
, String
[] mimeTypes
);
196 * @deprecated use TaxonNodeService instead
198 public UUID
removeTaxonNode(TaxonNode taxonNode
);
204 * @deprecated use TaxonNodeService instead
206 public UUID
saveTaxonNode(TaxonNode taxonNode
);
210 * @param taxonNodeCollection
212 * @deprecated use TaxonNodeService instead
214 public Map
<UUID
, TaxonNode
> saveTaxonNodeAll(Collection
<TaxonNode
> taxonNodeCollection
);
221 public UUID
removeTreeNode(ITreeNode treeNode
);
228 public UUID
saveTreeNode(ITreeNode treeNode
);
231 public List
<TaxonNode
> getAllNodes();