mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
ACS-4966 Add option to include path while fetching Categories
This commit is contained in:
@@ -69,6 +69,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
public class CategoriesImpl implements Categories
|
public class CategoriesImpl implements Categories
|
||||||
{
|
{
|
||||||
static final String INCLUDE_COUNT_PARAM = "count";
|
static final String INCLUDE_COUNT_PARAM = "count";
|
||||||
|
static final String INCLUDE_PATH_PARAM = "path";
|
||||||
static final String NOT_A_VALID_CATEGORY = "Node id does not refer to a valid category";
|
static final String NOT_A_VALID_CATEGORY = "Node id does not refer to a valid category";
|
||||||
static final String NO_PERMISSION_TO_MANAGE_A_CATEGORY = "Current user does not have permission to manage a category";
|
static final String NO_PERMISSION_TO_MANAGE_A_CATEGORY = "Current user does not have permission to manage a category";
|
||||||
static final String NO_PERMISSION_TO_READ_CONTENT = "Current user does not have read permission to content";
|
static final String NO_PERMISSION_TO_READ_CONTENT = "Current user does not have read permission to content";
|
||||||
@@ -111,6 +112,11 @@ public class CategoriesImpl implements Categories
|
|||||||
category.setCount(categoriesCount.getOrDefault(category.getId(), 0));
|
category.setCount(categoriesCount.getOrDefault(category.getId(), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parameters.getInclude().contains(INCLUDE_PATH_PARAM))
|
||||||
|
{
|
||||||
|
category.setPath(nodeService.getPath(nodeRef).toDisplayPath(nodeService, permissionService));
|
||||||
|
}
|
||||||
|
|
||||||
return category;
|
return category;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,11 +142,18 @@ public class CategoriesImpl implements Categories
|
|||||||
public List<Category> getCategoryChildren(final StoreRef storeRef, final String parentCategoryId, final Parameters parameters)
|
public List<Category> getCategoryChildren(final StoreRef storeRef, final String parentCategoryId, final Parameters parameters)
|
||||||
{
|
{
|
||||||
final NodeRef parentNodeRef = getCategoryNodeRef(storeRef, parentCategoryId);
|
final NodeRef parentNodeRef = getCategoryNodeRef(storeRef, parentCategoryId);
|
||||||
final List<Category> categories = nodeService.getChildAssocs(parentNodeRef).stream()
|
final List<Category> categories = nodeService.getChildAssocs(parentNodeRef)
|
||||||
.filter(ca -> ContentModel.ASSOC_SUBCATEGORIES.equals(ca.getTypeQName()))
|
.stream()
|
||||||
.map(ChildAssociationRef::getChildRef)
|
.filter(ca -> ContentModel.ASSOC_SUBCATEGORIES.equals(ca.getTypeQName()))
|
||||||
.map(this::mapToCategory)
|
.map(ChildAssociationRef::getChildRef)
|
||||||
.collect(Collectors.toList());
|
.map(this::mapToCategory)
|
||||||
|
.peek(category -> {
|
||||||
|
if (parameters.getInclude().contains(INCLUDE_PATH_PARAM))
|
||||||
|
{
|
||||||
|
category.setPath(nodeService.getPath(nodes.getNode(category.getId()).getNodeRef()).toDisplayPath(nodeService, permissionService));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (parameters.getInclude().contains(INCLUDE_COUNT_PARAM))
|
if (parameters.getInclude().contains(INCLUDE_COUNT_PARAM))
|
||||||
{
|
{
|
||||||
@@ -200,7 +213,16 @@ public class CategoriesImpl implements Categories
|
|||||||
}
|
}
|
||||||
final Collection<NodeRef> actualCategories = DefaultTypeConverter.INSTANCE.getCollection(NodeRef.class, currentCategories);
|
final Collection<NodeRef> actualCategories = DefaultTypeConverter.INSTANCE.getCollection(NodeRef.class, currentCategories);
|
||||||
|
|
||||||
return actualCategories.stream().map(this::mapToCategory).collect(Collectors.toList());
|
return actualCategories
|
||||||
|
.stream()
|
||||||
|
.map(this::mapToCategory)
|
||||||
|
.peek(category -> {
|
||||||
|
if (parameters.getInclude().contains(INCLUDE_PATH_PARAM))
|
||||||
|
{
|
||||||
|
category.setPath(nodeService.getPath(nodes.getNode(category.getId()).getNodeRef()).toDisplayPath(nodeService, permissionService));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -35,6 +35,7 @@ public class Category
|
|||||||
private String parentId;
|
private String parentId;
|
||||||
private boolean hasChildren;
|
private boolean hasChildren;
|
||||||
private Integer count;
|
private Integer count;
|
||||||
|
private String path;
|
||||||
|
|
||||||
public String getId()
|
public String getId()
|
||||||
{
|
{
|
||||||
@@ -91,6 +92,14 @@ public class Category
|
|||||||
this.count = count;
|
this.count = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPath() {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPath(String path) {
|
||||||
|
this.path = path;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
@@ -100,19 +109,20 @@ public class Category
|
|||||||
return false;
|
return false;
|
||||||
Category category = (Category) o;
|
Category category = (Category) o;
|
||||||
return hasChildren == category.hasChildren && Objects.equals(id, category.id) && Objects.equals(name, category.name) && Objects.equals(parentId, category.parentId)
|
return hasChildren == category.hasChildren && Objects.equals(id, category.id) && Objects.equals(name, category.name) && Objects.equals(parentId, category.parentId)
|
||||||
&& Objects.equals(count, category.count);
|
&& Objects.equals(count, category.count) && Objects.equals(path, category.path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode()
|
public int hashCode()
|
||||||
{
|
{
|
||||||
return Objects.hash(id, name, parentId, hasChildren, count);
|
return Objects.hash(id, name, parentId, hasChildren, count, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return "Category{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", parentId='" + parentId + '\'' + ", hasChildren=" + hasChildren + ", count=" + count + '}';
|
return "Category{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", parentId='" + parentId + '\'' + ", hasChildren=" + hasChildren
|
||||||
|
+ ", count=" + count + ", path=" + path + '}';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder()
|
public static Builder builder()
|
||||||
@@ -127,6 +137,7 @@ public class Category
|
|||||||
private String parentId;
|
private String parentId;
|
||||||
private boolean hasChildren;
|
private boolean hasChildren;
|
||||||
private Integer count;
|
private Integer count;
|
||||||
|
private String path;
|
||||||
|
|
||||||
public Builder id(String id)
|
public Builder id(String id)
|
||||||
{
|
{
|
||||||
@@ -158,6 +169,12 @@ public class Category
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder path(String path)
|
||||||
|
{
|
||||||
|
this.path = path;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Category create()
|
public Category create()
|
||||||
{
|
{
|
||||||
final Category category = new Category();
|
final Category category = new Category();
|
||||||
@@ -166,6 +183,7 @@ public class Category
|
|||||||
category.setParentId(parentId);
|
category.setParentId(parentId);
|
||||||
category.setHasChildren(hasChildren);
|
category.setHasChildren(hasChildren);
|
||||||
category.setCount(count);
|
category.setCount(count);
|
||||||
|
category.setPath(path);
|
||||||
return category;
|
return category;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user