From 8968ecc536742d88cfb81c05049bdffb3e7cb756 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Sun, 26 Jul 2020 19:05:05 +0200 Subject: [PATCH] Implemented getSystem method end-to-end --- .../oparlservice/entity/internal/System.java | 33 ++++++---- .../repository/SystemRepository.java | 60 +------------------ .../oparlservice/service/OParlService.java | 47 +++++++++------ 3 files changed, 51 insertions(+), 89 deletions(-) diff --git a/oparl-server/src/main/java/de/twomartens/oparlservice/entity/internal/System.java b/oparl-server/src/main/java/de/twomartens/oparlservice/entity/internal/System.java index 3a3159c..658228d 100644 --- a/oparl-server/src/main/java/de/twomartens/oparlservice/entity/internal/System.java +++ b/oparl-server/src/main/java/de/twomartens/oparlservice/entity/internal/System.java @@ -2,23 +2,30 @@ package de.twomartens.oparlservice.entity.internal; import lombok.*; +import javax.persistence.*; import java.time.ZonedDateTime; @Getter +@Setter @ToString @EqualsAndHashCode -@RequiredArgsConstructor +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "systems") 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; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + private String license; + private String name; + private String contactEmail; + private String contactName; + private String website; + private String vendor; + private String product; + private String web; + private ZonedDateTime created; + private ZonedDateTime modified; + private boolean deleted; } diff --git a/oparl-server/src/main/java/de/twomartens/oparlservice/repository/SystemRepository.java b/oparl-server/src/main/java/de/twomartens/oparlservice/repository/SystemRepository.java index 5f6e912..ccaf43e 100644 --- a/oparl-server/src/main/java/de/twomartens/oparlservice/repository/SystemRepository.java +++ b/oparl-server/src/main/java/de/twomartens/oparlservice/repository/SystemRepository.java @@ -1,65 +1,9 @@ package de.twomartens.oparlservice.repository; import de.twomartens.oparlservice.entity.internal.System; -import org.springframework.data.repository.CrudRepository; +import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; -import java.util.Optional; - @Repository -public class SystemRepository implements CrudRepository { - @Override - public S save(S entity) { - return null; - } - - @Override - public Iterable saveAll(Iterable entities) { - return null; - } - - @Override - public Optional findById(Integer integer) { - return Optional.empty(); - } - - @Override - public boolean existsById(Integer integer) { - return false; - } - - @Override - public Iterable findAll() { - return null; - } - - @Override - public Iterable findAllById(Iterable 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 entities) { - - } - - @Override - public void deleteAll() { - - } +public interface SystemRepository extends JpaRepository { } diff --git a/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java b/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java index 92e1dda..b805994 100644 --- a/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java +++ b/oparl-server/src/main/java/de/twomartens/oparlservice/service/OParlService.java @@ -1,14 +1,14 @@ package de.twomartens.oparlservice.service; import de.twomartens.oparlservice.configs.OParlServiceProperties; -import de.twomartens.oparlservice.entity.dto.*; 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.List; import java.util.Optional; import java.util.stream.StreamSupport; @@ -18,8 +18,8 @@ public class OParlService { private final OParlServiceProperties properties; private final SystemRepository systemRepository; - public OParlService(OParlServiceProperties properties, - SystemRepository systemRepository) { + @Autowired + public OParlService(OParlServiceProperties properties, SystemRepository systemRepository) { this.properties = properties; this.systemRepository = systemRepository; } @@ -122,27 +122,38 @@ public class OParlService { public System getSystem() { Iterable systems = systemRepository.findAll(); - de.twomartens.oparlservice.entity.internal.System firstNotDeletedSystem = StreamSupport + Optional firstNotDeletedSystem = StreamSupport .stream(systems.spliterator(), false) .filter(system -> !system.isDeleted()) - .findFirst().orElseThrow(); + .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(firstNotDeletedSystem.getId())) + .id(String.valueOf(system.getId())) .type("https://schema.oparl.org/1.1/Schema") - .created(firstNotDeletedSystem.getCreated()) - .modified(firstNotDeletedSystem.getModified()) + .created(system.getCreated()) + .modified(system.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()) + .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(); }