Commit 68ac8771 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Fixed relative path issue in NodeDAO

parent d7af3b27
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -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());
@@ -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;
        });

@@ -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;
        }
    }
}