Loading src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java +26 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,32 @@ public class CollectionsDAO { return nc; } public void addNodeToCollection(Long nodeId, Long collectionId) { String sql = "INSERT INTO collections_node (collection_id, node_id)\n" + "VALUES (?,?)"; jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sql); int i = 0; ps.setLong(++i, collectionId); ps.setLong(++i, nodeId); return ps; }); } public void removeNodeFromCollection(Long nodeId, Long collectionId) { String sql = "DELETE FROM collections_node WHERE collection_id = ? and node_id = ?"; jdbcTemplate.update(sql, collectionId, nodeId); } // TODO complete stub public List<NodeCollection> getCollectionsOfNode(Long nodeId) { throw new UnsupportedOperationException(); } // TODO complete stub: add list of nodes in collection (path list?) public void deleteCollection(Long collectionId, String userId) { String sql = "DELETE FROM collections WHERE collection_id = ? AND owner_id = ?"; Loading src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java +46 −21 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.datamodel.collections.NodeCollection; import java.util.List; import java.util.Optional; import javax.sql.DataSource; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; Loading @@ -17,18 +18,21 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.util.ReflectionTestUtils; /** * * @author Nicola Fulvio Calabria <nicola.calabria at inaf.it> */ @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @TestPropertySource(locations = "classpath:test.properties") public class CollectionsDAOTest { private static final String AUTHORITY = "example.com!vospace"; private CollectionsDAO collectionsDAO; private NodeDAO nodeDAO; @Autowired private DataSource dataSource; Loading @@ -36,28 +40,49 @@ public class CollectionsDAOTest { @BeforeEach public void init() { collectionsDAO = new CollectionsDAO(dataSource); nodeDAO = new NodeDAO(dataSource); ReflectionTestUtils.setField(nodeDAO, "authority", AUTHORITY); } @Test public void testInsertAndDeleteCollection() { assertTrue(collectionsDAO.getUserNodeCollections("pippo").isEmpty()); assertTrue(collectionsDAO.getUserNodeCollections("pippo1").isEmpty()); collectionsDAO.createNewCollection("collection1", "pippo"); collectionsDAO.createNewCollection("collection2", "pippo"); collectionsDAO.createNewCollection("collection1", "pippo1"); collectionsDAO.createNewCollection("collection2", "pippo1"); List<NodeCollection> ncl = collectionsDAO.getUserNodeCollections("pippo"); List<NodeCollection> ncl = collectionsDAO.getUserNodeCollections("pippo1"); assertEquals(2, ncl.size()); for (NodeCollection nc : ncl) { collectionsDAO.deleteCollection( nc.getId(), "pippo" nc.getId(), "pippo1" ); } assertTrue(collectionsDAO.getUserNodeCollections("pippo").isEmpty()); assertTrue(collectionsDAO.getUserNodeCollections("pippo1").isEmpty()); } @Test public void testAddAndRemoveNode() { List<NodeCollection> collections = collectionsDAO.getUserNodeCollections("pippo"); assertEquals(1, collections.size()); NodeCollection nc = collections.get(0); Optional<Long> maybeNodeId = nodeDAO.getNodeId("/test1/f1/f2_renamed"); assertTrue(maybeNodeId.isPresent()); Long nodeId = maybeNodeId.get(); collectionsDAO.addNodeToCollection(nodeId, nc.getId()); // Add some logic for checks collectionsDAO.removeNodeFromCollection(nodeId, nc.getId()); } } src/test/resources/test-data.sql +2 −0 Original line number Diff line number Diff line Loading @@ -51,3 +51,5 @@ INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creati INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creation_time, job_info, results) VALUES ('pippo4', 'user2', 'copyNode', 'PENDING', NULL, NULL, '2014-06-22 19:10:25', NULL, NULL); INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creation_time, job_info, results) VALUES ('pippo5', 'user1', 'pushToVoSpace', 'EXECUTING', NULL, NULL, '2015-06-22 19:10:25', NULL, NULL); INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creation_time, job_info, results) VALUES ('pippo6', 'user2', 'pullFromVoSpace', 'PENDING', NULL, NULL, '2015-06-22 19:10:25', NULL, NULL); INSERT INTO collections (title, owner_id) VALUES ('collection', 'pippo'); No newline at end of file Loading
src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java +26 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,32 @@ public class CollectionsDAO { return nc; } public void addNodeToCollection(Long nodeId, Long collectionId) { String sql = "INSERT INTO collections_node (collection_id, node_id)\n" + "VALUES (?,?)"; jdbcTemplate.update(conn -> { PreparedStatement ps = conn.prepareStatement(sql); int i = 0; ps.setLong(++i, collectionId); ps.setLong(++i, nodeId); return ps; }); } public void removeNodeFromCollection(Long nodeId, Long collectionId) { String sql = "DELETE FROM collections_node WHERE collection_id = ? and node_id = ?"; jdbcTemplate.update(sql, collectionId, nodeId); } // TODO complete stub public List<NodeCollection> getCollectionsOfNode(Long nodeId) { throw new UnsupportedOperationException(); } // TODO complete stub: add list of nodes in collection (path list?) public void deleteCollection(Long collectionId, String userId) { String sql = "DELETE FROM collections WHERE collection_id = ? AND owner_id = ?"; Loading
src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java +46 −21 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.datamodel.collections.NodeCollection; import java.util.List; import java.util.Optional; import javax.sql.DataSource; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; Loading @@ -17,18 +18,21 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.util.ReflectionTestUtils; /** * * @author Nicola Fulvio Calabria <nicola.calabria at inaf.it> */ @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @TestPropertySource(locations = "classpath:test.properties") public class CollectionsDAOTest { private static final String AUTHORITY = "example.com!vospace"; private CollectionsDAO collectionsDAO; private NodeDAO nodeDAO; @Autowired private DataSource dataSource; Loading @@ -36,28 +40,49 @@ public class CollectionsDAOTest { @BeforeEach public void init() { collectionsDAO = new CollectionsDAO(dataSource); nodeDAO = new NodeDAO(dataSource); ReflectionTestUtils.setField(nodeDAO, "authority", AUTHORITY); } @Test public void testInsertAndDeleteCollection() { assertTrue(collectionsDAO.getUserNodeCollections("pippo").isEmpty()); assertTrue(collectionsDAO.getUserNodeCollections("pippo1").isEmpty()); collectionsDAO.createNewCollection("collection1", "pippo"); collectionsDAO.createNewCollection("collection2", "pippo"); collectionsDAO.createNewCollection("collection1", "pippo1"); collectionsDAO.createNewCollection("collection2", "pippo1"); List<NodeCollection> ncl = collectionsDAO.getUserNodeCollections("pippo"); List<NodeCollection> ncl = collectionsDAO.getUserNodeCollections("pippo1"); assertEquals(2, ncl.size()); for (NodeCollection nc : ncl) { collectionsDAO.deleteCollection( nc.getId(), "pippo" nc.getId(), "pippo1" ); } assertTrue(collectionsDAO.getUserNodeCollections("pippo").isEmpty()); assertTrue(collectionsDAO.getUserNodeCollections("pippo1").isEmpty()); } @Test public void testAddAndRemoveNode() { List<NodeCollection> collections = collectionsDAO.getUserNodeCollections("pippo"); assertEquals(1, collections.size()); NodeCollection nc = collections.get(0); Optional<Long> maybeNodeId = nodeDAO.getNodeId("/test1/f1/f2_renamed"); assertTrue(maybeNodeId.isPresent()); Long nodeId = maybeNodeId.get(); collectionsDAO.addNodeToCollection(nodeId, nc.getId()); // Add some logic for checks collectionsDAO.removeNodeFromCollection(nodeId, nc.getId()); } }
src/test/resources/test-data.sql +2 −0 Original line number Diff line number Diff line Loading @@ -51,3 +51,5 @@ INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creati INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creation_time, job_info, results) VALUES ('pippo4', 'user2', 'copyNode', 'PENDING', NULL, NULL, '2014-06-22 19:10:25', NULL, NULL); INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creation_time, job_info, results) VALUES ('pippo5', 'user1', 'pushToVoSpace', 'EXECUTING', NULL, NULL, '2015-06-22 19:10:25', NULL, NULL); INSERT INTO job (job_id, owner_id, job_type, phase, start_time, end_time, creation_time, job_info, results) VALUES ('pippo6', 'user2', 'pullFromVoSpace', 'PENDING', NULL, NULL, '2015-06-22 19:10:25', NULL, NULL); INSERT INTO collections (title, owner_id) VALUES ('collection', 'pippo'); No newline at end of file