result = transform(result);
addInfo(result);
} else {
// you're not an Administrator: only return harvest nodes from groups visible to you
GeonetContext gc = (GeonetContext) context.getHandlerContext(Geonet.CONTEXT_NAME);
AccessManager am = gc.getBean(AccessManager.class);
Set<Integer> groups = am.getVisibleGroups(context.getUserSession().getUserIdAsInt());
result = transform(result);
Element nodeGroup = result.getChild("ownerGroup");
if ((nodeGroup != null) && (groups.contains(Integer.valueOf(nodeGroup.getValue())))) {
addInfo(result);
} else {
return null;
}
}
} else {
// id is null: return all (visible) nodes
Element nodes = result.getChild("children");
result = new Element("nodes");
if (nodes != null) {
// you're Administrator: all nodes are visible
if (profile == Profile.Administrator) {
for (Object o : nodes.getChildren()) {
Element node = transform((Element) o);
addInfo(node);
result.addContent(node);
}
} else {
// you're not an Adminstrator: only return nodes in groups visible to you
GeonetContext gc = (GeonetContext) context.getHandlerContext(Geonet.CONTEXT_NAME);
AccessManager am = gc.getBean(AccessManager.class);
Set<Integer> groups = am.getVisibleGroups(context.getUserSession().getUserIdAsInt());
for (Object o : nodes.getChildren()) {
Element node = transform((Element) o);
Element nodeGroup = node.getChild("ownerGroup");
if ((nodeGroup != null) && (groups.contains(Integer.valueOf(nodeGroup.getValue())))) {
addInfo(node);