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 987886a40184ebb99b6058791ca5d28464ab14d0..8de4ace05add6b69ad54523b3c5e18c06cf08064 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 @@ -26,6 +26,7 @@ public class NodeInfo { private final String groupWrite; private final boolean isPublic; private final boolean asyncTrans; + private final boolean sticky; private final boolean busy; private final boolean listOfFiles; @@ -40,6 +41,7 @@ public class NodeInfo { this.groupWrite = getGroupWrite(node); this.isPublic = isPublic(node); this.asyncTrans = isAsyncTrans(node); + this.sticky = isSticky(node); this.busy = isBusy(node); this.listOfFiles = isListOfFiles(node); } @@ -70,11 +72,15 @@ public class NodeInfo { } private boolean isPublic(Node node) { - return getProperty(node, NodeProperties.PUBLIC_READ_URI).map(value -> "t".equals(value)).orElse(false); + return getProperty(node, NodeProperties.PUBLIC_READ_URI).map(value -> "true".equals(value)).orElse(false); } private boolean isAsyncTrans(Node node) { - return getProperty(node, "urn:async_trans").map(value -> "t".equals(value)).orElse(false); + return getProperty(node, NodeProperties.ASYNC_TRANS_URN).map(value -> "true".equals(value)).orElse(false); + } + + private boolean isSticky(Node node) { + return getProperty(node, NodeProperties.STICKY_URN).map(value -> "true".equals(value)).orElse(false); } private boolean isBusy(Node node) { @@ -175,6 +181,10 @@ public class NodeInfo { return asyncTrans; } + public boolean isSticky() { + return sticky; + } + public boolean isBusy() { return busy; } diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodesService.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodesService.java index 4c3b4bfa816c7ce9a97cea44f177ad55e01de9dd..018ccc24e4fd05ab06e1a6b4e06aa78bacd50e04 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodesService.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/service/NodesService.java @@ -3,6 +3,7 @@ package it.inaf.ia2.vospace.ui.service; import it.inaf.ia2.aa.data.User; import it.inaf.ia2.vospace.ui.client.VOSpaceClient; import it.inaf.ia2.vospace.ui.data.ListNodeData; +import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeUtils; import java.io.IOException; import java.io.StringWriter; @@ -31,9 +32,9 @@ public class NodesService { public ListNodeData generateNodesHtml(String path, User user) { ListNodeData listNodeData = new ListNodeData(); - + Node node = client.getNode(path); - + listNodeData.setWritable(NodeUtils.checkIfWritable(node, user.getName(), user.getGroups())); try (StringWriter sw = new StringWriter()) { @@ -48,7 +49,7 @@ public class NodesService { } listNodeData.setHtmlTable(sw.toString()); - + return listNodeData; } catch (IOException ex) { throw new UncheckedIOException(ex); @@ -75,7 +76,7 @@ public class NodesService { html += "<td>" + nodeInfo.getGroupRead() + "</td>"; html += "<td>" + nodeInfo.getGroupWrite() + "</td>"; html += "<td>"; - if (NodeUtils.checkIfWritable(node, user.getName(), user.getGroups())) { + if (NodeUtils.checkIfWritable(node, user.getName(), user.getGroups()) && !nodeInfo.isSticky()) { html += "<span class=\"icon trash-icon pointer\" onclick=\"deleteNode('" + nodeInfo.getPath() + "')\"></span>"; } html += "</td>"; @@ -121,7 +122,7 @@ public class NodesService { if (nodeInfo.isPublic()) { return true; } - + if (nodeInfo.getCreator().equals(user.getName())) { return true; }