Loading src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +15 −14 Original line number Diff line number Diff line Loading @@ -41,30 +41,30 @@ public class NodeDAO { String path = nodeURI.replaceAll("vos://[^/]+", ""); String parentPath = getParentPath(path); String sql = "SELECT path from " String sql = "SELECT path, relative_path from " + "node n join node_vos_path p on n.node_id = p.node_id " + "where p.vos_path = ?"; List<String> ltreeParentPaths = jdbcTemplate.query(conn -> { List<NodePaths> paths = jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, parentPath); return ps; }, (row, index) -> { return row.getString("path"); return getPathsFromResultSet(row); }); if (ltreeParentPaths.isEmpty()) { if (paths.isEmpty()) { throw new IllegalStateException("Unable to find parent node during node creation"); } if (ltreeParentPaths.size() > 1) { if (paths.size() > 1) { throw new IllegalStateException("Multiple ltree parent paths found for " + parentPath); } StringBuilder sb = new StringBuilder(); sb.append("INSERT INTO node"); sb.append(" (name, busy_state, owner_id, creator_id, group_read, group_write,"); sb.append(" is_public, parent_path, type)"); sb.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ? )"); sb.append(" is_public, parent_path, parent_relative_path, type)"); sb.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"); jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sb.toString()); Loading @@ -75,8 +75,9 @@ public class NodeDAO { ps.setArray(5, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupread")))); ps.setArray(6, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupwrite")))); ps.setBoolean(7, Boolean.valueOf(getProperty(myNode, getPropertyURI("publicread")))); ps.setObject(8, ltreeParentPaths.get(0), Types.OTHER); ps.setObject(9, getDbNodeType(myNode), Types.OTHER); ps.setObject(8, paths.get(0).path, Types.OTHER); ps.setObject(9, paths.get(0).relativePath, Types.OTHER); ps.setObject(10, getDbNodeType(myNode), Types.OTHER); return ps; }); Loading Loading @@ -283,18 +284,18 @@ public class NodeDAO { private class NodePaths { private String path; private String parentPath; private final String path; private final String relativePath; public NodePaths(String myPath, String myParentPath) { public NodePaths(String myPath, String myRelativePath) { this.path = myPath; this.parentPath = myParentPath; this.relativePath = myRelativePath; } @Override public String toString() { return parentPath + " " + path; return relativePath + " " + path; } } } Loading
src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +15 −14 Original line number Diff line number Diff line Loading @@ -41,30 +41,30 @@ public class NodeDAO { String path = nodeURI.replaceAll("vos://[^/]+", ""); String parentPath = getParentPath(path); String sql = "SELECT path from " String sql = "SELECT path, relative_path from " + "node n join node_vos_path p on n.node_id = p.node_id " + "where p.vos_path = ?"; List<String> ltreeParentPaths = jdbcTemplate.query(conn -> { List<NodePaths> paths = jdbcTemplate.query(conn -> { PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, parentPath); return ps; }, (row, index) -> { return row.getString("path"); return getPathsFromResultSet(row); }); if (ltreeParentPaths.isEmpty()) { if (paths.isEmpty()) { throw new IllegalStateException("Unable to find parent node during node creation"); } if (ltreeParentPaths.size() > 1) { if (paths.size() > 1) { throw new IllegalStateException("Multiple ltree parent paths found for " + parentPath); } StringBuilder sb = new StringBuilder(); sb.append("INSERT INTO node"); sb.append(" (name, busy_state, owner_id, creator_id, group_read, group_write,"); sb.append(" is_public, parent_path, type)"); sb.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ? )"); sb.append(" is_public, parent_path, parent_relative_path, type)"); sb.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"); jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sb.toString()); Loading @@ -75,8 +75,9 @@ public class NodeDAO { ps.setArray(5, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupread")))); ps.setArray(6, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupwrite")))); ps.setBoolean(7, Boolean.valueOf(getProperty(myNode, getPropertyURI("publicread")))); ps.setObject(8, ltreeParentPaths.get(0), Types.OTHER); ps.setObject(9, getDbNodeType(myNode), Types.OTHER); ps.setObject(8, paths.get(0).path, Types.OTHER); ps.setObject(9, paths.get(0).relativePath, Types.OTHER); ps.setObject(10, getDbNodeType(myNode), Types.OTHER); return ps; }); Loading Loading @@ -283,18 +284,18 @@ public class NodeDAO { private class NodePaths { private String path; private String parentPath; private final String path; private final String relativePath; public NodePaths(String myPath, String myParentPath) { public NodePaths(String myPath, String myRelativePath) { this.path = myPath; this.parentPath = myParentPath; this.relativePath = myRelativePath; } @Override public String toString() { return parentPath + " " + path; return relativePath + " " + path; } } }