From 78ff2e26ed49ed22da8b0cb3a874179c2b9be5fb Mon Sep 17 00:00:00 2001 From: Sara Bertocco <sara.bertocco@inaf.it> Date: Wed, 17 Feb 2021 15:05:16 +0100 Subject: [PATCH] Conflicting --- .../oats/vospace/persistence/NodeDAO.java | 121 +++--------------- .../oats/vospace/persistence/NodeDAOTest.java | 2 +- 2 files changed, 22 insertions(+), 101 deletions(-) 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 216f64c..defef61 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java @@ -1,5 +1,7 @@ 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 net.ivoa.xml.vospace.v2.Node; import java.sql.PreparedStatement; @@ -40,7 +42,7 @@ public class NodeDAO { String nodeURI = myNode.getUri(); String path = nodeURI.replaceAll("vos://[^/]+", ""); - String parentPath = getParentPath(path); + String parentPath = NodeUtils.getParentPath(path); String sql = "SELECT path, relative_path from " + "node n join node_vos_path p on n.node_id = p.node_id " @@ -70,16 +72,16 @@ public class NodeDAO { jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sb.toString()); int i = 0; - ps.setString(++i, getNodeName(myNode)); - ps.setBoolean(++i, getIsBusy(myNode)); - ps.setString(++i, getProperty(myNode, getPropertyURI("creator"))); - ps.setString(++i, getProperty(myNode, getPropertyURI("creator"))); - ps.setArray(++i, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupread")))); - ps.setArray(++i, fromPropertyToArray(ps, getProperty(myNode, getPropertyURI("groupwrite")))); - ps.setBoolean(++i, Boolean.valueOf(getProperty(myNode, getPropertyURI("publicread")))); + ps.setString(++i, NodeUtils.getNodeName(myNode)); + ps.setBoolean(++i, NodeUtils.getIsBusy(myNode)); + ps.setString(++i, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("creator"))); + ps.setString(++i, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("creator"))); + ps.setArray(++i, fromPropertyToArray(ps, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("groupread")))); + ps.setArray(++i, fromPropertyToArray(ps, NodeProperties.getPropertiesStringByURI(myNode, NodeProperties.getPropertyURI("groupwrite")))); + 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).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.getProvides()), Types.OTHER); return ps; @@ -144,7 +146,7 @@ public class NodeDAO { private Node getNodeFromResultSet(ResultSet rs) throws SQLException { - Node node = getTypedNode(rs.getString("type")); + Node node = NodeUtils.getTypedNode(rs.getString("type")); if (node instanceof DataNode) { @@ -159,25 +161,25 @@ public class NodeDAO { List<Property> properties = new ArrayList<>(); - addProperty(getPropertyURI("length"), rs.getString("content_length"), + addProperty(NodeProperties.getPropertyURI("length"), rs.getString("content_length"), properties); - addProperty(getPropertyURI("btime"), rs.getString("created_on"), + addProperty(NodeProperties.getPropertyURI("btime"), rs.getString("created_on"), properties); - addProperty(getPropertyURI("creator"), rs.getString("creator_id"), + addProperty(NodeProperties.getPropertyURI("creator"), rs.getString("creator_id"), properties); - addProperty(getPropertyURI("mtime"), rs.getString("last_modified"), + addProperty(NodeProperties.getPropertyURI("mtime"), rs.getString("last_modified"), properties); - addProperty(getPropertyURI("groupread"), getGroupsString(rs, "group_read"), + addProperty(NodeProperties.getPropertyURI("groupread"), getGroupsString(rs, "group_read"), properties); - addProperty(getPropertyURI("groupwrite"), getGroupsString(rs, "group_write"), + addProperty(NodeProperties.getPropertyURI("groupwrite"), getGroupsString(rs, "group_write"), properties); - addProperty(getPropertyURI("publicread"), String.valueOf(rs.getBoolean("is_public")), + addProperty(NodeProperties.getPropertyURI("publicread"), String.valueOf(rs.getBoolean("is_public")), properties); addProperty("urn:async_trans", String.valueOf(rs.getBoolean("async_trans")), @@ -240,10 +242,6 @@ public class NodeDAO { 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 { Array array = rs.getArray(column); if (array == null) { @@ -261,24 +259,7 @@ public class NodeDAO { list.add(prop); } } - - 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) { return "vos://" + authority + path; @@ -288,58 +269,7 @@ public class NodeDAO { NodePaths paths = new NodePaths(rs.getString("path"), rs.getString("relative_path")); 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 { if (myProperty == null || myProperty.isBlank()) { @@ -374,15 +304,6 @@ public class NodeDAO { .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 final String path; 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 073e264..9275d5b 100644 --- a/src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java +++ b/src/test/java/it/inaf/oats/vospace/persistence/NodeDAOTest.java @@ -56,7 +56,7 @@ public class NodeDAOTest { ContainerNode root = (ContainerNode) dao.listNode("/").get(); 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")); } -- GitLab