Skip to content
Snippets Groups Projects
Commit 78ff2e26 authored by Sara Bertocco's avatar Sara Bertocco
Browse files

Conflicting

parent 0da7fb11
No related branches found
No related tags found
No related merge requests found
package it.inaf.oats.vospace.persistence; package it.inaf.oats.vospace.persistence;
import it.inaf.oats.vospace.datamodel.NodeProperties;
import it.inaf.oats.vospace.datamodel.NodeUtils;
import java.sql.Array; import java.sql.Array;
import net.ivoa.xml.vospace.v2.Node; import net.ivoa.xml.vospace.v2.Node;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
...@@ -40,7 +42,7 @@ public class NodeDAO { ...@@ -40,7 +42,7 @@ public class NodeDAO {
String nodeURI = myNode.getUri(); String nodeURI = myNode.getUri();
String path = nodeURI.replaceAll("vos://[^/]+", ""); String path = nodeURI.replaceAll("vos://[^/]+", "");
String parentPath = getParentPath(path); String parentPath = NodeUtils.getParentPath(path);
String sql = "SELECT path, relative_path from " String sql = "SELECT path, relative_path from "
+ "node n join node_vos_path p on n.node_id = p.node_id " + "node n join node_vos_path p on n.node_id = p.node_id "
...@@ -70,16 +72,16 @@ public class NodeDAO { ...@@ -70,16 +72,16 @@ public class NodeDAO {
jdbcTemplate.update(conn -> { jdbcTemplate.update(conn -> {
PreparedStatement ps = conn.prepareStatement(sb.toString()); PreparedStatement ps = conn.prepareStatement(sb.toString());
int i = 0; int i = 0;
ps.setString(++i, getNodeName(myNode)); ps.setString(++i, NodeUtils.getNodeName(myNode));
ps.setBoolean(++i, getIsBusy(myNode)); ps.setBoolean(++i, NodeUtils.getIsBusy(myNode));
ps.setString(++i, getProperty(myNode, getPropertyURI("creator"))); ps.setString(++i, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("creator")));
ps.setString(++i, getProperty(myNode, getPropertyURI("creator"))); ps.setString(++i, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("creator")));
ps.setArray(++i, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupread")))); ps.setArray(++i, fromPropertyToArray(ps, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("groupread"))));
ps.setArray(++i, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupwrite")))); ps.setArray(++i, fromPropertyToArray(ps, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("groupwrite"))));
ps.setBoolean(++i, Boolean.valueOf(getProperty(myNode, getPropertyURI("publicread")))); ps.setBoolean(++i, Boolean.valueOf(NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("publicread"))));
ps.setObject(++i, paths.get(0).path, Types.OTHER); ps.setObject(++i, paths.get(0).path, Types.OTHER);
ps.setObject(++i, paths.get(0).relativePath, Types.OTHER); ps.setObject(++i, paths.get(0).relativePath, Types.OTHER);
ps.setObject(++i, getDbNodeType(myNode), Types.OTHER); ps.setObject(++i, NodeUtils.getDbNodeType(myNode), Types.OTHER);
ps.setObject(++i, fromViewsToArray(ps, myNode, d -> d.getAccepts()), Types.OTHER); ps.setObject(++i, fromViewsToArray(ps, myNode, d -> d.getAccepts()), Types.OTHER);
ps.setObject(++i, fromViewsToArray(ps, myNode, d -> d.getProvides()), Types.OTHER); ps.setObject(++i, fromViewsToArray(ps, myNode, d -> d.getProvides()), Types.OTHER);
return ps; return ps;
...@@ -144,7 +146,7 @@ public class NodeDAO { ...@@ -144,7 +146,7 @@ public class NodeDAO {
private Node getNodeFromResultSet(ResultSet rs) throws SQLException { private Node getNodeFromResultSet(ResultSet rs) throws SQLException {
Node node = getTypedNode(rs.getString("type")); Node node = NodeUtils.getTypedNode(rs.getString("type"));
if (node instanceof DataNode) { if (node instanceof DataNode) {
...@@ -159,25 +161,25 @@ public class NodeDAO { ...@@ -159,25 +161,25 @@ public class NodeDAO {
List<Property> properties = new ArrayList<>(); List<Property> properties = new ArrayList<>();
addProperty(getPropertyURI("length"), rs.getString("content_length"), addProperty(NodeProperties.getPropertyURI("length"), rs.getString("content_length"),
properties); properties);
addProperty(getPropertyURI("btime"), rs.getString("created_on"), addProperty(NodeProperties.getPropertyURI("btime"), rs.getString("created_on"),
properties); properties);
addProperty(getPropertyURI("creator"), rs.getString("creator_id"), addProperty(NodeProperties.getPropertyURI("creator"), rs.getString("creator_id"),
properties); properties);
addProperty(getPropertyURI("mtime"), rs.getString("last_modified"), addProperty(NodeProperties.getPropertyURI("mtime"), rs.getString("last_modified"),
properties); properties);
addProperty(getPropertyURI("groupread"), getGroupsString(rs, "group_read"), addProperty(NodeProperties.getPropertyURI("groupread"), getGroupsString(rs, "group_read"),
properties); properties);
addProperty(getPropertyURI("groupwrite"), getGroupsString(rs, "group_write"), addProperty(NodeProperties.getPropertyURI("groupwrite"), getGroupsString(rs, "group_write"),
properties); properties);
addProperty(getPropertyURI("publicread"), String.valueOf(rs.getBoolean("is_public")), addProperty(NodeProperties.getPropertyURI("publicread"), String.valueOf(rs.getBoolean("is_public")),
properties); properties);
addProperty("urn:async_trans", String.valueOf(rs.getBoolean("async_trans")), addProperty("urn:async_trans", String.valueOf(rs.getBoolean("async_trans")),
...@@ -240,10 +242,6 @@ public class NodeDAO { ...@@ -240,10 +242,6 @@ public class NodeDAO {
return jdbcTemplate.queryForObject(sql, args, types, Integer.class); return jdbcTemplate.queryForObject(sql, args, types, Integer.class);
} }
private String getPropertyURI(String propertyName) {
return "ivo://ivoa.net/vospace/core#".concat(propertyName);
}
private String getGroupsString(ResultSet rs, String column) throws SQLException { private String getGroupsString(ResultSet rs, String column) throws SQLException {
Array array = rs.getArray(column); Array array = rs.getArray(column);
if (array == null) { if (array == null) {
...@@ -262,23 +260,6 @@ public class NodeDAO { ...@@ -262,23 +260,6 @@ public class NodeDAO {
} }
} }
private Node getTypedNode(String type) {
Node node;
switch (type) {
case "container":
node = new ContainerNode();
break;
case "data":
node = new DataNode();
break;
case "structured":
node = new StructuredDataNode();
break;
default:
throw new UnsupportedOperationException("Node type " + type + " not supported yet");
}
return node;
}
private String getUri(String path) { private String getUri(String path) {
return "vos://" + authority + path; return "vos://" + authority + path;
...@@ -289,57 +270,6 @@ public class NodeDAO { ...@@ -289,57 +270,6 @@ public class NodeDAO {
return paths; return paths;
} }
private String getNodeName(String path) {
String[] parsedPath = path.split("/");
return parsedPath[parsedPath.length - 1];
}
private String getNodeName(Node myNode) {
String uri = myNode.getUri();
return getNodeName(uri);
}
private boolean getIsBusy(Node myNode) {
if (myNode instanceof DataNode) {
DataNode dataNode = (DataNode) myNode;
return dataNode.isBusy();
}
return false;
}
// Copied from CreateNodeController: to be moved in a common utility class
private String getParentPath(String path) {
String[] parsedPath = path.split("[/]+");
if (parsedPath.length < 2 || !parsedPath[0].isEmpty()) {
throw new IllegalArgumentException();
}
StringBuilder sb = new StringBuilder();
sb.append("/");
for (int i = 1; i < parsedPath.length - 1; i++) {
sb.append(parsedPath[i]);
if (i < parsedPath.length - 2) {
sb.append("/");
}
}
return sb.toString();
}
private String getProperty(Node node, String uri) {
for (Property property : node.getProperties()) {
if (uri.equals(property.getUri())) {
return property.getValue();
}
}
return null;
}
private Array fromPropertyToArray(PreparedStatement ps, String myProperty) throws SQLException { private Array fromPropertyToArray(PreparedStatement ps, String myProperty) throws SQLException {
if (myProperty == null || myProperty.isBlank()) { if (myProperty == null || myProperty.isBlank()) {
...@@ -374,15 +304,6 @@ public class NodeDAO { ...@@ -374,15 +304,6 @@ public class NodeDAO {
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
private String getDbNodeType(Node node) {
if (node instanceof ContainerNode) {
return "container";
} else if (node instanceof DataNode) {
return "data";
}
throw new UnsupportedOperationException("Unable to retrieve database node type for class " + node.getClass().getCanonicalName());
}
private class NodePaths { private class NodePaths {
private final String path; private final String path;
......
...@@ -56,7 +56,7 @@ public class NodeDAOTest { ...@@ -56,7 +56,7 @@ public class NodeDAOTest {
ContainerNode root = (ContainerNode) dao.listNode("/").get(); ContainerNode root = (ContainerNode) dao.listNode("/").get();
assertEquals(2, root.getNodes().size()); assertEquals(2, root.getNodes().size());
assertEquals("true", NodeProperties.getNodePropertyAsListByURI(root, NodeProperties.PUBLIC_READ_URI).get(0)); assertEquals("true", NodeProperties.getNodePropertiesListByURI(root, NodeProperties.PUBLIC_READ_URI).get(0));
assertEquals("group1 group2", getProperty(root.getNodes().get(0), "ivo://ivoa.net/vospace/core#groupread")); assertEquals("group1 group2", getProperty(root.getNodes().get(0), "ivo://ivoa.net/vospace/core#groupread"));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment