package de.twomartens.oparlservice.service; import de.twomartens.oparlservice.configs.OParlServiceProperties; import de.twomartens.oparlservice.entity.dto.System; import de.twomartens.oparlservice.entity.dto.*; import de.twomartens.oparlservice.repository.SystemRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.ZonedDateTime; import java.util.Collections; import java.util.Optional; import java.util.stream.StreamSupport; @Service public class OParlService { private final OParlServiceProperties properties; private final SystemRepository systemRepository; @Autowired public OParlService(OParlServiceProperties properties, SystemRepository systemRepository) { this.properties = properties; this.systemRepository = systemRepository; } public Optional> getAgendaItemsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getAgendaItem(String id) { return Optional.empty(); } public ObjectList getBodies() { return null; } public Optional getBody(String id) { return Optional.empty(); } public Optional> getConsultationsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getConsultation(String id) { return Optional.empty(); } public Optional> getFilesInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getFile(String id) { return Optional.empty(); } public Optional> getLegislativeTermsOfBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getLegislativeTerm(String id) { return Optional.empty(); } public Optional> getLocationsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getLocation(String id) { return Optional.empty(); } public Optional getMeeting(String id) { return Optional.empty(); } public Optional> getMeetingsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional> getMeetingsInOrganization(String organizationID, int pageNumber) { return Optional.empty(); } public Optional getMembership(String id) { return Optional.empty(); } public Optional> getMembershipsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional> getMembershipsInOrganization(String organizationID, int pageNumber) { return Optional.empty(); } public Optional> getOrganizationsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getOrganization(String id) { return Optional.empty(); } public Optional> getPapersInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getPaper(String id) { return Optional.empty(); } public Optional> getPersonsInBody(String bodyID, int pageNumber) { return Optional.empty(); } public Optional getPerson(String id) { return Optional.empty(); } public System getSystem() { Iterable systems = systemRepository.findAll(); Optional firstNotDeletedSystem = StreamSupport .stream(systems.spliterator(), false) .filter(system -> !system.isDeleted()) .findFirst(); de.twomartens.oparlservice.entity.internal.System system; if (firstNotDeletedSystem.isEmpty()) { de.twomartens.oparlservice.entity.internal.System newSystem = new de.twomartens.oparlservice.entity.internal.System(); newSystem.setCreated(ZonedDateTime.now()); newSystem.setModified(ZonedDateTime.now()); newSystem.setDeleted(false); system = systemRepository.saveAndFlush(newSystem); } else { system = firstNotDeletedSystem.get(); } return System.builder() .id(String.valueOf(system.getId())) .type("https://schema.oparl.org/1.1/Schema") .created(system.getCreated()) .modified(system.getModified()) .oparlVersion("https://schema.oparl.org/1.1/") .body(properties.getUrl() + "/bodies") .license(system.getLicense()) .name(system.getName()) .contactEmail(system.getContactEmail()) .contactName(system.getContactName()) .deleted(system.isDeleted()) .product(system.getProduct()) .vendor(system.getVendor()) .web(system.getWeb()) .website(system.getWebsite()) .otherOparlVersions(Collections.emptyList()) .build(); } }