diff --git a/src/main/java/it/inaf/oats/vospace/CollectionsController.java b/src/main/java/it/inaf/oats/vospace/CollectionsController.java new file mode 100644 index 0000000000000000000000000000000000000000..4e08fd0fed764825d99789bfc873d88b3be87e87 --- /dev/null +++ b/src/main/java/it/inaf/oats/vospace/CollectionsController.java @@ -0,0 +1,54 @@ +/* + * This file is part of vospace-rest + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.oats.vospace; + +import it.inaf.ia2.aa.data.User; +import it.inaf.oats.vospace.datamodel.collections.NodeCollectionsList; +import it.inaf.oats.vospace.persistence.CollectionsDAO; +import javax.servlet.http.HttpServletRequest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * + * @author Nicola Fulvio Calabria <nicola.calabria at inaf.it> + */ + +@RestController +public class CollectionsController { + + private static final Logger LOG = LoggerFactory.getLogger(CollectionsController.class); + + @Autowired + private CollectionsService collectionsService; + + // list collections owned by user + @GetMapping(value = "/collections") + public ResponseEntity<NodeCollectionsList> listCollections( + HttpServletRequest request, User principal) { + LOG.debug("listCollections called for user {}", principal.getName()); + + NodeCollectionsList ncl = new NodeCollectionsList(); + + ncl.setNodeCollections( + collectionsService.listCollections(principal.getName())); + + return ResponseEntity.ok(ncl); + } + + + // create a new collection with specified title + + + // delete collection by id + + + +} diff --git a/src/main/java/it/inaf/oats/vospace/CollectionsService.java b/src/main/java/it/inaf/oats/vospace/CollectionsService.java new file mode 100644 index 0000000000000000000000000000000000000000..c7d8218d8dbd093d3189f2428e4925508c4b9bfb --- /dev/null +++ b/src/main/java/it/inaf/oats/vospace/CollectionsService.java @@ -0,0 +1,46 @@ +/* + * This file is part of vospace-rest + * Copyright (C) 2021 Istituto Nazionale di Astrofisica + * SPDX-License-Identifier: GPL-3.0-or-later + */ +package it.inaf.oats.vospace; + +import it.inaf.oats.vospace.persistence.CollectionsDAO; +import it.inaf.oats.vospace.datamodel.collections.NodeCollection; +import java.util.ArrayList; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * + * @author Nicola Fulvio Calabria <nicola.calabria at inaf.it> + */ +@Service +@EnableTransactionManagement +public class CollectionsService { + + @Autowired + private CollectionsDAO collectionsDAO; + + public List<NodeCollection> listCollections(String userId) { + + List<NodeCollection> result = new ArrayList<>(); + + // If user is not authenticated simply return an empty list + if (isUserAuthenticated(userId)) { + result.addAll( + collectionsDAO.getUserNodeCollections(userId)); + } + + return result; + + } + + private boolean isUserAuthenticated(String userId) { + return userId != null + && !userId.equals("anonymous"); + } + +} 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 fecca5c329e0339517f652b81f37cb9cd40d97fe..c97d438ae9c4643778411abdb8f5102557c7edbb 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java @@ -5,7 +5,7 @@ */ package it.inaf.oats.vospace.persistence; -import it.inaf.oats.vospace.persistence.model.NodeCollection; +import it.inaf.oats.vospace.datamodel.collections.NodeCollection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; 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 deleted file mode 100644 index e904820ff1344d20f6d582bc1fb66d19d5ebf34c..0000000000000000000000000000000000000000 --- a/src/main/java/it/inaf/oats/vospace/persistence/model/NodeCollection.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of vospace-rest - * Copyright (C) 2021 Istituto Nazionale di Astrofisica - * SPDX-License-Identifier: GPL-3.0-or-later - */ -package it.inaf.oats.vospace.persistence.model; - -/** - * - * @author Nicola Fulvio Calabria <nicola.calabria at inaf.it> - */ -public class NodeCollection { - - private Long id; - private String title; - private String ownerId; - - public NodeCollection(Long id, String title, String ownerId) { - this.id = id; - this.title = title; - this.ownerId = ownerId; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getOwnerId() { - return ownerId; - } - - public void setOwnerId(String ownerId) { - this.ownerId = ownerId; - } - - -} diff --git a/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java b/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java index a7871d6b888e776bcbfb6f1bc4757d4d438d44cb..5b2d527fb3e64f3d2b6d4c4efb1de1fffeee4384 100644 --- a/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java +++ b/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java @@ -5,7 +5,7 @@ */ package it.inaf.oats.vospace.persistence; -import it.inaf.oats.vospace.persistence.model.NodeCollection; +import it.inaf.oats.vospace.datamodel.collections.NodeCollection; import java.util.List; import javax.sql.DataSource; import static org.junit.jupiter.api.Assertions.assertEquals;