diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java index 26446f6f1c457cc0b6bdbb265b83444512c2d6cd..4a6ffd2c88ab1ad645590c24c7a02db8d9c4c5e4 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/MainNodesHtmlGenerator.java @@ -159,7 +159,8 @@ public class MainNodesHtmlGenerator extends NodesHtmlGenerator { Element link = cell.appendElement("a"); String href; if (nodeInfo.isFolder()) { - href = "#/nodes" + urlEncodePath(nodeInfo.getPath()); + String path = nodeInfo.isLink() ? nodeInfo.getTarget() : nodeInfo.getPath(); + href = "#/nodes" + urlEncodePath(path); } else { href = "download" + urlEncodePath(nodeInfo.getPath()); link.attr("target", "blank_"); diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java index 21a802eb60e66cc3bf1ad88c99c525c548629f64..e7137bed9b1aaeb9c964674a2e70c6737a3ccae9 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodeInfo.java @@ -14,7 +14,6 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Optional; import java.util.stream.Collectors; -import net.ivoa.xml.vospace.v2.ContainerNode; import net.ivoa.xml.vospace.v2.DataNode; import net.ivoa.xml.vospace.v2.LinkNode; import net.ivoa.xml.vospace.v2.Node; @@ -28,7 +27,7 @@ public class NodeInfo { private final String authority; - private String path; + private final String path; private final String name; private final String size; private String type; @@ -41,7 +40,7 @@ public class NodeInfo { private final boolean busy; private final boolean writable; private final boolean deletable; - private final boolean link; + private String target; public NodeInfo(Node node, User user, String authority, Node linkedNode) { this.authority = authority; @@ -58,13 +57,9 @@ public class NodeInfo { this.busy = isBusy(node); this.writable = NodeUtils.checkIfWritable(node, user.getName(), user.getGroups()) && !busy; this.deletable = writable && !sticky && !asyncTrans; - this.link = linkedNode != null; if (linkedNode != null) { String prefix = "vos://" + authority; - String target = ((LinkNode) node).getTarget(); - if (linkedNode instanceof ContainerNode) { - this.path = decodePath(target, prefix); - } + this.target = decodePath(((LinkNode) node).getTarget(), prefix); this.type = linkedNode.getType(); } } @@ -209,7 +204,11 @@ public class NodeInfo { return deletable; } + public String getTarget() { + return target; + } + public boolean isLink() { - return link; + return target != null; } }