From 6eed1337bf137b6f3c4ada790416f9df557f6256 Mon Sep 17 00:00:00 2001 From: Sonia Zorba Date: Thu, 4 Feb 2021 11:05:56 +0100 Subject: [PATCH] Upload: added owner folder only if node has a virtual parent --- .../java/it/inaf/ia2/transfer/controller/FileInfo.java | 9 +++++++++ .../java/it/inaf/ia2/transfer/persistence/FileDAO.java | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/it/inaf/ia2/transfer/controller/FileInfo.java b/src/main/java/it/inaf/ia2/transfer/controller/FileInfo.java index bee3c64..0e079e5 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/FileInfo.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/FileInfo.java @@ -8,6 +8,7 @@ public class FileInfo { private String osPath; private String virtualPath; private boolean isPublic; + private boolean virtualParent; private List groupRead; private List groupWrite; private String ownerId; @@ -47,6 +48,14 @@ public class FileInfo { this.isPublic = isPublic; } + public boolean hasVirtualParent() { + return virtualParent; + } + + public void setVirtualParent(boolean virtualParent) { + this.virtualParent = virtualParent; + } + public List getGroupRead() { return groupRead; } diff --git a/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java b/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java index 888bedb..3cfb521 100644 --- a/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java +++ b/src/main/java/it/inaf/ia2/transfer/persistence/FileDAO.java @@ -32,7 +32,7 @@ public class FileDAO { public Optional getFileInfo(String virtualPath) { String sql = "SELECT n.node_id, is_public, group_read, group_write, owner_id, async_trans,\n" - + "accept_views, provide_views, l.location_type,\n" + + "accept_views, provide_views, l.location_type, n.path <> n.relative_path AS virtual_parent,\n" + "(SELECT user_name FROM users WHERE rap_id = owner_id) AS username,\n" + "base_path, os_path\n" + "FROM node_path p\n" @@ -57,6 +57,7 @@ public class FileDAO { fi.setAsyncTrans(rs.getBoolean("async_trans")); fi.setAcceptViews(toList(rs.getArray("accept_views"))); fi.setProvideViews(toList(rs.getArray("provide_views"))); + fi.setVirtualParent(rs.getBoolean("virtual_parent")); fi.setVirtualPath(virtualPath); fillOsPath(fi, rs); @@ -93,7 +94,7 @@ public class FileDAO { if (asyncLocation) { String username = rs.getString("username"); completeOsPath = completeOsPath.resolve(username).resolve("retrieve"); - } else { + } else if (fi.hasVirtualParent()) { completeOsPath = completeOsPath.resolve(fi.getOwnerId()); } -- GitLab