generated from 2martens/template-service
Implemented getSystem for oparl service
This commit is contained in:
parent
b598225538
commit
df412e6659
|
@ -26,6 +26,7 @@ dependencies {
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-websocket'
|
implementation 'org.springframework.boot:spring-boot-starter-websocket'
|
||||||
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
|
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
|
||||||
|
implementation 'org.springframework.data:spring-data-jdbc'
|
||||||
implementation 'io.micrometer:micrometer-registry-prometheus'
|
implementation 'io.micrometer:micrometer-registry-prometheus'
|
||||||
implementation 'org.springdoc:springdoc-openapi-ui:1.3.9'
|
implementation 'org.springdoc:springdoc-openapi-ui:1.3.9'
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,6 @@ public class System {
|
||||||
@Schema(description = "URL to the license")
|
@Schema(description = "URL to the license")
|
||||||
private String license;
|
private String license;
|
||||||
|
|
||||||
@Schema(description = "Categorization of the object")
|
|
||||||
private String keyword;
|
|
||||||
|
|
||||||
@Schema(description = "URL of a website that presents the object in the browser")
|
@Schema(description = "URL of a website that presents the object in the browser")
|
||||||
private String web;
|
private String web;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
package de.twomartens.oparlservice.entity.internal;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
@EqualsAndHashCode
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class System {
|
||||||
|
private final int id;
|
||||||
|
private final String license;
|
||||||
|
private final String name;
|
||||||
|
private final String contactEmail;
|
||||||
|
private final String contactName;
|
||||||
|
private final String website;
|
||||||
|
private final String vendor;
|
||||||
|
private final String product;
|
||||||
|
private final String web;
|
||||||
|
private final ZonedDateTime created;
|
||||||
|
private final ZonedDateTime modified;
|
||||||
|
private final boolean deleted;
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package de.twomartens.oparlservice.repository;
|
||||||
|
|
||||||
|
import de.twomartens.oparlservice.entity.internal.System;
|
||||||
|
import org.springframework.data.repository.CrudRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class SystemRepository implements CrudRepository<System, Integer> {
|
||||||
|
@Override
|
||||||
|
public <S extends System> S save(S entity) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <S extends System> Iterable<S> saveAll(Iterable<S> entities) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<System> findById(Integer integer) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean existsById(Integer integer) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterable<System> findAll() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterable<System> findAllById(Iterable<Integer> integers) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long count() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteById(Integer integer) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delete(System entity) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAll(Iterable<? extends System> entities) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteAll() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,17 +3,25 @@ package de.twomartens.oparlservice.service;
|
||||||
import de.twomartens.oparlservice.configs.OParlServiceProperties;
|
import de.twomartens.oparlservice.configs.OParlServiceProperties;
|
||||||
import de.twomartens.oparlservice.entity.dto.*;
|
import de.twomartens.oparlservice.entity.dto.*;
|
||||||
import de.twomartens.oparlservice.entity.dto.System;
|
import de.twomartens.oparlservice.entity.dto.System;
|
||||||
|
import de.twomartens.oparlservice.repository.SystemRepository;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class OParlService {
|
public class OParlService {
|
||||||
|
|
||||||
private final OParlServiceProperties properties;
|
private final OParlServiceProperties properties;
|
||||||
|
private final SystemRepository systemRepository;
|
||||||
|
|
||||||
public OParlService(OParlServiceProperties properties) {
|
public OParlService(OParlServiceProperties properties,
|
||||||
|
SystemRepository systemRepository) {
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
|
this.systemRepository = systemRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<ObjectList<AgendaItem>> getAgendaItemsInBody(String bodyID, int pageNumber) {
|
public Optional<ObjectList<AgendaItem>> getAgendaItemsInBody(String bodyID, int pageNumber) {
|
||||||
|
@ -113,6 +121,29 @@ public class OParlService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public System getSystem() {
|
public System getSystem() {
|
||||||
return null;
|
Iterable<de.twomartens.oparlservice.entity.internal.System> systems = systemRepository.findAll();
|
||||||
|
de.twomartens.oparlservice.entity.internal.System firstNotDeletedSystem = StreamSupport
|
||||||
|
.stream(systems.spliterator(), false)
|
||||||
|
.filter(system -> !system.isDeleted())
|
||||||
|
.findFirst().orElseThrow();
|
||||||
|
|
||||||
|
return System.builder()
|
||||||
|
.id(String.valueOf(firstNotDeletedSystem.getId()))
|
||||||
|
.type("https://schema.oparl.org/1.1/Schema")
|
||||||
|
.created(firstNotDeletedSystem.getCreated())
|
||||||
|
.modified(firstNotDeletedSystem.getModified())
|
||||||
|
.oparlVersion("https://schema.oparl.org/1.1/")
|
||||||
|
.body(properties.getUrl() + "/bodies")
|
||||||
|
.license(firstNotDeletedSystem.getLicense())
|
||||||
|
.name(firstNotDeletedSystem.getName())
|
||||||
|
.contactEmail(firstNotDeletedSystem.getContactEmail())
|
||||||
|
.contactName(firstNotDeletedSystem.getContactName())
|
||||||
|
.deleted(firstNotDeletedSystem.isDeleted())
|
||||||
|
.product(firstNotDeletedSystem.getProduct())
|
||||||
|
.vendor(firstNotDeletedSystem.getVendor())
|
||||||
|
.web(firstNotDeletedSystem.getWeb())
|
||||||
|
.website(firstNotDeletedSystem.getWebsite())
|
||||||
|
.otherOparlVersions(Collections.emptyList())
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
package de.twomartens.oparlservice.service;
|
||||||
|
|
||||||
|
import de.twomartens.oparlservice.configs.OParlServiceProperties;
|
||||||
|
import de.twomartens.oparlservice.entity.internal.System;
|
||||||
|
import de.twomartens.oparlservice.repository.SystemRepository;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
class OParlServiceTest {
|
||||||
|
private OParlServiceProperties properties;
|
||||||
|
private OParlService service;
|
||||||
|
private SystemRepository systemRepository;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
properties = new OParlServiceProperties();
|
||||||
|
properties.setUrl("http://localhost");
|
||||||
|
systemRepository = mock(SystemRepository.class);
|
||||||
|
service = new OParlService(properties, systemRepository);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldAnnotateSystemWithURLs() {
|
||||||
|
System internalSystem = new System(0, "https://creativecommons.org/cc-by",
|
||||||
|
"OParl-Schnittstelle", "admin@2martens.de", "Jim Martens", null, null,
|
||||||
|
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
|
||||||
|
when(systemRepository.findAll()).thenReturn(List.of(internalSystem));
|
||||||
|
|
||||||
|
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals(String.valueOf(0), result.getId());
|
||||||
|
assertEquals("https://schema.oparl.org/1.1/Schema", result.getType());
|
||||||
|
assertEquals("https://schema.oparl.org/1.1/", result.getOparlVersion());
|
||||||
|
assertEquals("http://localhost/bodies", result.getBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldPickFirstSystem_whenMultipleSystemsAvailable() {
|
||||||
|
System internalSystem1 = new System(0, "https://creativecommons.org/cc-by",
|
||||||
|
"OParl-Schnittstelle", "admin@2martens.de", "Jim Martens", null, null,
|
||||||
|
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
|
||||||
|
System internalSystem2 = new System(1, "https://creativecommons.org/cc-by-sa",
|
||||||
|
"OParl-Baustelle", "admin@2martens.de", "Jim Martens", null, null,
|
||||||
|
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
|
||||||
|
when(systemRepository.findAll()).thenReturn(List.of(internalSystem1, internalSystem2));
|
||||||
|
|
||||||
|
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals(String.valueOf(0), result.getId());
|
||||||
|
assertEquals("https://creativecommons.org/cc-by", result.getLicense());
|
||||||
|
assertEquals("OParl-Schnittstelle", result.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldPickFirstNotDeletedSystem() {
|
||||||
|
System internalSystem1 = new System(0, "https://creativecommons.org/cc-by",
|
||||||
|
"OParl-Schnittstelle", "admin@2martens.de", "Jim Martens", null, null,
|
||||||
|
null, null, ZonedDateTime.now(), ZonedDateTime.now(), true);
|
||||||
|
System internalSystem2 = new System(1, "https://creativecommons.org/cc-by-sa",
|
||||||
|
"OParl-Baustelle", "admin@2martens.de", "Jim Martens", null, null,
|
||||||
|
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
|
||||||
|
when(systemRepository.findAll()).thenReturn(List.of(internalSystem1, internalSystem2));
|
||||||
|
|
||||||
|
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
|
||||||
|
|
||||||
|
assertNotNull(result);
|
||||||
|
assertEquals(String.valueOf(1), result.getId());
|
||||||
|
assertEquals("https://creativecommons.org/cc-by-sa", result.getLicense());
|
||||||
|
assertEquals("OParl-Baustelle", result.getName());
|
||||||
|
assertFalse(result.isDeleted());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldUseCorrectUrl() {
|
||||||
|
System internalSystem = new System(1, "https://creativecommons.org/cc-by-sa",
|
||||||
|
"OParl-Baustelle", "admin@2martens.de", "Jim Martens", null, null,
|
||||||
|
null, null, ZonedDateTime.now(), ZonedDateTime.now(), false);
|
||||||
|
when(systemRepository.findAll()).thenReturn(List.of(internalSystem));
|
||||||
|
|
||||||
|
de.twomartens.oparlservice.entity.dto.System result1 = service.getSystem();
|
||||||
|
properties.setUrl("http://test.com");
|
||||||
|
de.twomartens.oparlservice.entity.dto.System result2 = service.getSystem();
|
||||||
|
|
||||||
|
assertNotNull(result1);
|
||||||
|
assertNotNull(result2);
|
||||||
|
assertEquals(String.valueOf(1), result1.getId());
|
||||||
|
assertEquals(String.valueOf(1), result2.getId());
|
||||||
|
assertEquals("http://localhost/bodies", result1.getBody());
|
||||||
|
assertEquals("http://test.com/bodies", result2.getBody());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldReturnNonValuesOfInternalEntity() {
|
||||||
|
System internalSystem = new System(1, "https://creativecommons.org/cc-by-sa",
|
||||||
|
"OParl-Baustelle", "admin@2martens.de", "Jim Martens",
|
||||||
|
"https://sitzungsdienst-eimsbuettel.hamburg.de/bi/allris.net.asp", "https://2martens.de",
|
||||||
|
"https://git.2martens.com/2martens/oparl-service", "http://example.com", ZonedDateTime.now(),
|
||||||
|
ZonedDateTime.now(),
|
||||||
|
false);
|
||||||
|
when(systemRepository.findAll()).thenReturn(List.of(internalSystem));
|
||||||
|
|
||||||
|
de.twomartens.oparlservice.entity.dto.System result = service.getSystem();
|
||||||
|
|
||||||
|
assertEquals("OParl-Baustelle", result.getName());
|
||||||
|
assertEquals("admin@2martens.de", result.getContactEmail());
|
||||||
|
assertEquals("Jim Martens", result.getContactName());
|
||||||
|
assertEquals("https://2martens.de", result.getVendor());
|
||||||
|
assertEquals("https://sitzungsdienst-eimsbuettel.hamburg.de/bi/allris.net.asp", result.getWebsite());
|
||||||
|
assertEquals("https://git.2martens.com/2martens/oparl-service", result.getProduct());
|
||||||
|
assertEquals("http://example.com", result.getWeb());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue