diff --git a/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java b/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java index 1e8d3eef4b87b5c4ce8c958070244f84bf841b1b..14e784d673b98e8888118e13d3d27a4289c749d3 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java @@ -159,16 +159,6 @@ public class NodeDAO { return newNode; } - /*private String getAllLevelsChildrenSelector(String path) { - String select = "(SELECT path FROM node WHERE node_id = (SELECT node_id FROM node_vos_path WHERE vos_path = ?))::varchar || '"; - - if (!"/".equals(path)) { - select += "."; - } - select += "*{1,}'"; - return select; - }*/ - private Node getNodeFromResultSet(ResultSet rs) throws SQLException { Node node = NodeUtils.getTypedNode(rs.getString("type")); @@ -291,7 +281,7 @@ public class NodeDAO { } public void renameNode(Long nodeId, String name) { - String sql = "UPDATE node SET name = ?\n" + String sql = "UPDATE node SET name = ?\n, os_name = COALESCE(os_name, name)" + "WHERE path ~ ('*.' || ?)::lquery"; jdbcTemplate.update(conn -> { diff --git a/src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java b/src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java index b429af00755b78c5c16a9329732c7e49d54786b4..cd7cb0d62e771195fe46e82fb9eb374f32f9d412 100644 --- a/src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java +++ b/src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java @@ -5,7 +5,6 @@ */ package it.inaf.oats.vospace.persistence; -import it.inaf.oats.vospace.URIUtils; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.persistence.NodeDAO.ShortNodeDescriptor; @@ -239,14 +238,23 @@ public class NodeDAOTest { Optional rootId = dao.getNodeId(oldPath); assertTrue(rootId.isPresent()); + assertEquals("f1", dao.getNodeOsName(oldPath)); + dao.renameNode(rootId.get(), "f_pippo"); assertTrue(dao.listNode(oldPath).isEmpty()); assertTrue(dao.listNode(oldPathChild).isEmpty()); + + // After the first rename the os_name column has to be equal to the old name + // to avoid issues with renaming folders where some files have been uploaded + assertEquals("f1", dao.getNodeOsName(newPath)); assertTrue(dao.listNode(newPath).isPresent()); assertTrue(dao.listNode(newPathChild).isPresent()); + // The second rename mustn't change the os_name column + dao.renameNode(rootId.get(), "f_pippo_second_rename"); + assertEquals("f1", dao.getNodeOsName("/test1/f_pippo_second_rename")); } @Test