From 6c44a94531cd6ee40a341bf1b82e4439fb7777d1 Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Mon, 8 Feb 2021 18:01:47 +0100
Subject: [PATCH] Handled sticky flag on UI

---
 .../it/inaf/ia2/vospace/ui/service/NodeInfo.java   | 14 ++++++++++++--
 .../inaf/ia2/vospace/ui/service/NodesService.java  | 11 ++++++-----
 2 files changed, 18 insertions(+), 7 deletions(-)

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 987886a..8de4ace 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 4c3b4bf..018ccc2 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;
         }
-- 
GitLab