From 3f87be5b986e1fe183eba32357034307821225f0 Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Sat, 29 Oct 2022 22:23:46 +0200 Subject: [PATCH] added collections dao --- .../vospace/persistence/CollectionsDAO.java | 68 ++++++++++++++++++- .../oats/vospace/persistence/NodeDAO.java | 3 - .../persistence/model/NodeCollection.java | 16 ++--- 3 files changed, 74 insertions(+), 13 deletions(-) diff --git a/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java b/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java index 1eaf7cc..cd78547 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java @@ -6,6 +6,11 @@ package it.inaf.oats.vospace.persistence; import it.inaf.oats.vospace.persistence.model.NodeCollection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import java.util.Optional; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; @@ -24,9 +29,68 @@ public class CollectionsDAO { public CollectionsDAO(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } + + void createNewCollection(String title, String ownerId) { + + String sql = "INSERT INTO collections (title, owner_id) VALUES (?,?)"; + + jdbcTemplate.update(conn -> { + PreparedStatement ps = conn.prepareStatement(sql); + int i = 0; + ps.setString(++i, title); + ps.setString(++i, ownerId); + return ps; + }); + } + + Optional<NodeCollection> getNodeCollectionById(Long id) { + String sql = "SELECT collection_id, title, owner_id FROM collections\n" + + "WHERE collection_id = ?"; + + Optional<NodeCollection> nc = jdbcTemplate.query( + conn -> { + PreparedStatement ps = conn.prepareStatement(sql); + ps.setLong(1, id); + return ps; + }, + rs -> { + if (!rs.next()) { + return Optional.empty(); + } else { + return Optional.of(getNodeCollectionFromResultset(rs)); + } + + }); + + return nc; + + } - void insertNewCollection(NodeCollection collection) { - + List<NodeCollection> getUserNodeCollections(String userId) { + String sql = "SELECT collection_id, title, owner_id FROM collections\n" + + "WHERE owner_id = ?"; + + List<NodeCollection> nc = jdbcTemplate.query( + conn -> { + PreparedStatement ps = conn.prepareStatement(sql); + ps.setString(1, userId); + return ps; + }, + (row, index) -> { + return this.getNodeCollectionFromResultset(row); + }); + + return nc; } + private NodeCollection getNodeCollectionFromResultset(ResultSet rs) + throws SQLException { + NodeCollection nc = new NodeCollection( + rs.getLong("collection_id"), + rs.getString("title"), + rs.getString("owner_id") + ); + + return nc; + } } 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 407dac7..bcec03f 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/NodeDAO.java @@ -5,7 +5,6 @@ */ package it.inaf.oats.vospace.persistence; -import it.inaf.oats.vospace.DeleteNodeController; import it.inaf.oats.vospace.URIUtils; import it.inaf.oats.vospace.datamodel.NodeProperties; import it.inaf.oats.vospace.datamodel.NodeUtils; @@ -32,8 +31,6 @@ import net.ivoa.xml.vospace.v2.DataNode; import net.ivoa.xml.vospace.v2.LinkNode; import net.ivoa.xml.vospace.v2.Property; import net.ivoa.xml.vospace.v2.View; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.jdbc.core.JdbcTemplate; diff --git a/src/main/java/it/inaf/oats/vospace/persistence/model/NodeCollection.java b/src/main/java/it/inaf/oats/vospace/persistence/model/NodeCollection.java index a1f61e7..e904820 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/model/NodeCollection.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/model/NodeCollection.java @@ -12,12 +12,12 @@ package it.inaf.oats.vospace.persistence.model; public class NodeCollection { private Long id; - private String name; + private String title; private String ownerId; - - public NodeCollection(Long id, String name, String ownerId) { + + public NodeCollection(Long id, String title, String ownerId) { this.id = id; - this.name = name; + this.title = title; this.ownerId = ownerId; } @@ -29,12 +29,12 @@ public class NodeCollection { this.id = id; } - public String getName() { - return name; + public String getTitle() { + return title; } - public void setName(String name) { - this.name = name; + public void setTitle(String title) { + this.title = title; } public String getOwnerId() { -- GitLab