Commit 800f9f41 authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

Refactor + add wrapper class for collections controller

parent 7d521392
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
/*
 * 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
    
    
    
}
+46 −0
Original line number Diff line number Diff line
/*
 * 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");
    }

}
+1 −1
Original line number Diff line number Diff line
@@ -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;
+0 −49
Original line number Diff line number Diff line
/*
 * 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;
    }    
    
    
}
+1 −1
Original line number Diff line number Diff line
@@ -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;