Loading src/main/java/it/inaf/oats/vospace/persistence/LinkedServiceDAO.java 0 → 100644 +44 −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.persistence; import com.fasterxml.jackson.databind.ObjectMapper; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Repository public class LinkedServiceDAO { private static final Logger LOG = LoggerFactory.getLogger(LinkedServiceDAO.class); private static final ObjectMapper MAPPER = new ObjectMapper(); private final JdbcTemplate jdbcTemplate; @Autowired public LinkedServiceDAO(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } boolean isLinkedServiceUrl(String targetUrl) { String sql = " SELECT COUNT(*) > 0\n" + "FROM linked_service\n" + "WHERE ? LIKE service_base_url || '%'"; return jdbcTemplate.query(sql, ps -> { ps.setString(1, targetUrl); }, row -> { if (!row.next()) { throw new IllegalStateException("Expected one result"); } return row.getBoolean(1); }); } } src/test/java/it/inaf/oats/vospace/persistence/LinkedServiceDAOTest.java 0 → 100644 +39 −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.persistence; import javax.sql.DataSource; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.junit.jupiter.api.Assertions.assertFalse; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @TestPropertySource(locations = "classpath:test.properties") public class LinkedServiceDAOTest { @Autowired private DataSource dataSource; private LinkedServiceDAO dao; @BeforeEach public void init() { dao = new LinkedServiceDAO(dataSource); } @Test void testIsLinkedService() { assertTrue(dao.isLinkedServiceUrl("http://archives.ia2.inaf.it/files/aao/pippofile.fits.gz")); assertFalse(dao.isLinkedServiceUrl("http://noportal.ia2.inaf.it/files/nop/nopippofile.tar.gz")); } } src/test/resources/test-data.sql +2 −0 Original line number Diff line number Diff line INSERT INTO linked_service(service_base_url) VALUES ('http://archives.ia2.inaf.it/files/aao'); INSERT INTO storage (storage_type, base_path, base_url, hostname) VALUES ('cold', '/ia2_tape/users', NULL, 'tape-server'); INSERT INTO storage (storage_type, base_path, base_url, hostname) VALUES ('hot', '/mnt/hot_storage/users', NULL, 'server'); INSERT INTO storage (storage_type, base_path, base_url, hostname) VALUES ('local', '/home', NULL, 'localhost'); Loading Loading
src/main/java/it/inaf/oats/vospace/persistence/LinkedServiceDAO.java 0 → 100644 +44 −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.persistence; import com.fasterxml.jackson.databind.ObjectMapper; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Repository public class LinkedServiceDAO { private static final Logger LOG = LoggerFactory.getLogger(LinkedServiceDAO.class); private static final ObjectMapper MAPPER = new ObjectMapper(); private final JdbcTemplate jdbcTemplate; @Autowired public LinkedServiceDAO(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } boolean isLinkedServiceUrl(String targetUrl) { String sql = " SELECT COUNT(*) > 0\n" + "FROM linked_service\n" + "WHERE ? LIKE service_base_url || '%'"; return jdbcTemplate.query(sql, ps -> { ps.setString(1, targetUrl); }, row -> { if (!row.next()) { throw new IllegalStateException("Expected one result"); } return row.getBoolean(1); }); } }
src/test/java/it/inaf/oats/vospace/persistence/LinkedServiceDAOTest.java 0 → 100644 +39 −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.persistence; import javax.sql.DataSource; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.junit.jupiter.api.Assertions.assertFalse; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {DataSourceConfig.class}) @TestPropertySource(locations = "classpath:test.properties") public class LinkedServiceDAOTest { @Autowired private DataSource dataSource; private LinkedServiceDAO dao; @BeforeEach public void init() { dao = new LinkedServiceDAO(dataSource); } @Test void testIsLinkedService() { assertTrue(dao.isLinkedServiceUrl("http://archives.ia2.inaf.it/files/aao/pippofile.fits.gz")); assertFalse(dao.isLinkedServiceUrl("http://noportal.ia2.inaf.it/files/nop/nopippofile.tar.gz")); } }
src/test/resources/test-data.sql +2 −0 Original line number Diff line number Diff line INSERT INTO linked_service(service_base_url) VALUES ('http://archives.ia2.inaf.it/files/aao'); INSERT INTO storage (storage_type, base_path, base_url, hostname) VALUES ('cold', '/ia2_tape/users', NULL, 'tape-server'); INSERT INTO storage (storage_type, base_path, base_url, hostname) VALUES ('hot', '/mnt/hot_storage/users', NULL, 'server'); INSERT INTO storage (storage_type, base_path, base_url, hostname) VALUES ('local', '/home', NULL, 'localhost'); Loading