From bc2ffb6f98bd5432d2ad2480e0a3da97f73fc760 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 1 Dec 2020 14:02:25 +0100 Subject: [PATCH] OZG-31 persist in Database; build docker-image for deployment --- README.md | 5 + mongodb/docker-compose.yml | 8 ++ .../src/main/protobuf/vorgang.proto | 4 +- pluto-server/Dockerfile | 6 ++ pluto-server/pom.xml | 95 +++++++++++++++++++ .../de/itvsh/ozg/pluto/vorgang/Eingang.java | 11 +++ .../ozg/pluto/vorgang/EingangMapper.java | 11 +++ .../ozg/pluto/vorgang/GrpcVorgangService.java | 9 ++ .../de/itvsh/ozg/pluto/vorgang/Vorgang.java | 32 +++++++ .../ozg/pluto/vorgang/VorgangHeader.java | 23 +++++ .../vorgang/VorgangHeaderRepository.java | 7 ++ .../ozg/pluto/vorgang/VorgangMapper.java | 8 ++ .../ozg/pluto/vorgang/VorgangRepository.java | 7 ++ .../ozg/pluto/vorgang/VorgangService.java | 15 +++ .../src/main/resources/application-local.yml | 0 .../src/main/resources/application-oc.yml | 7 ++ ...application.properties => application.yml} | 0 17 files changed, 246 insertions(+), 2 deletions(-) create mode 100644 README.md create mode 100644 mongodb/docker-compose.yml create mode 100644 pluto-server/Dockerfile create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Eingang.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeader.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangMapper.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangRepository.java create mode 100644 pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangService.java create mode 100644 pluto-server/src/main/resources/application-local.yml create mode 100644 pluto-server/src/main/resources/application-oc.yml rename pluto-server/src/main/resources/{application.properties => application.yml} (100%) diff --git a/README.md b/README.md new file mode 100644 index 000000000..181fd1c3b --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ + +## Configuration +### Create mongodb user + +db.createUser({user:"sh-kiel-pluto",pwd:"...",roles:[{role:"readWrite",database:"sh-kiel"}]}) diff --git a/mongodb/docker-compose.yml b/mongodb/docker-compose.yml new file mode 100644 index 000000000..17c966c31 --- /dev/null +++ b/mongodb/docker-compose.yml @@ -0,0 +1,8 @@ +version: "2.1" +services: + mongo: + image: mongo:3.2.4 + ports: + - 27017:27017 + command: --smallfiles + diff --git a/pluto-interface/src/main/protobuf/vorgang.proto b/pluto-interface/src/main/protobuf/vorgang.proto index 342cccb4b..ee17425c4 100644 --- a/pluto-interface/src/main/protobuf/vorgang.proto +++ b/pluto-interface/src/main/protobuf/vorgang.proto @@ -17,10 +17,10 @@ service VorgangService { /* Create Vorgang */ message CreateVorgangRequest { - Eingang eingang = 1; + GrpcEingang eingang = 1; } -message Eingang { +message GrpcEingang { string id = 1; EingangHeader header = 2; Antragsteller antragsteller = 3; diff --git a/pluto-server/Dockerfile b/pluto-server/Dockerfile new file mode 100644 index 000000000..75aee531f --- /dev/null +++ b/pluto-server/Dockerfile @@ -0,0 +1,6 @@ +FROM openjdk:15-slim + +COPY /target/pluto-server-0.0.1-SNAPSHOT.jar /opt/pluto.jar + +WORKDIR /opt +CMD java -jar pluto.jar \ No newline at end of file diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml index 5a6cfab87..e6b53aedb 100644 --- a/pluto-server/pom.xml +++ b/pluto-server/pom.xml @@ -3,12 +3,14 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> + <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.0</version> <relativePath /> <!-- lookup parent from repository --> </parent> + <groupId>de.itvsh.ozg.pluto</groupId> <artifactId>pluto-server</artifactId> <version>0.0.1-SNAPSHOT</version> @@ -21,6 +23,7 @@ <grpc.spring-boot-starter.version>2.10.1.RELEASE </grpc.spring-boot-starter.version> + <mapstruct.version>1.4.1.Final</mapstruct.version> <lorem.version>2.1</lorem.version> <faker.version>1.0.2</faker.version> </properties> @@ -55,6 +58,12 @@ <artifactId>javafaker</artifactId> <version>${faker.version}</version> </dependency> + <!-- tools --> + <dependency> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct</artifactId> + <version>${mapstruct.version}</version> + </dependency> <!-- Dev --> <dependency> @@ -109,6 +118,92 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>${java.version}</source> + <target>${java.version}</target> + <annotationProcessorPaths> + <path> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <version>${lombok.version}</version> + </path> + <path> + <groupId>org.mapstruct</groupId> + <artifactId>mapstruct-processor</artifactId> + <version>${mapstruct.version}</version> + </path> + <!-- other annotation processors --> + </annotationProcessorPaths> + + <showWarnings>true</showWarnings> + <compilerArgs> + <compilerArg> + -Amapstruct.defaultComponentModel=spring + </compilerArg> + <compilerArg> + -Amapstruct.unmappedTargetPolicy=IGNORE + </compilerArg> + </compilerArgs> + </configuration> + </plugin> + + <plugin> + <groupId>com.spotify</groupId> + <artifactId>dockerfile-maven-plugin</artifactId> + <version>1.4.13</version> + <configuration> + <username>admin</username> + <password>admin</password> + <!-- <username>srv-schiffsregister-jenkins</username> --> + <!-- <password>Dataport2018!</password> --> + <!-- <repository>build.schir:8082/schir-docker/schir</repository> --> + <repository>default-route-openshift-image-registry.apps.lab.okd.local/sh-kiel-dev/pluto</repository> + <!-- <repository>artefactrepo-ccse.dataport.de/schiffsregister-docker-development</repository> --> + <tag>${git.branch}-${project.version}</tag> + <useMavenSettingsForAuth>true</useMavenSettingsForAuth> + <buildArgs> + <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> + </buildArgs> + </configuration> + <executions> + <execution> + <id>default</id> + <phase>deploy</phase> + <goals> + <goal>build</goal> + <goal>tag</goal> + <goal>push</goal> + </goals> + </execution> + </executions> + <dependencies> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.1.1</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + <configuration> + <offline>true</offline> + </configuration> + <executions> + <execution> + <id>get-the-git-infos</id> + <goals> + <goal>revision</goal> + </goals> + <phase>initialize</phase> + </execution> + </executions> + </plugin> </plugins> </build> diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Eingang.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Eingang.java new file mode 100644 index 000000000..2aacfd46c --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Eingang.java @@ -0,0 +1,11 @@ +package de.itvsh.ozg.pluto.vorgang; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class Eingang { + + private String name; +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java new file mode 100644 index 000000000..fcbdfa67a --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/EingangMapper.java @@ -0,0 +1,11 @@ +package de.itvsh.ozg.pluto.vorgang; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +@Mapper +interface EingangMapper { + + @Mapping(target = "name", source = "header.formName") + Eingang fromGrpc(GrpcEingang grpcEingang); +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/GrpcVorgangService.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/GrpcVorgangService.java index 4320ce829..e21b98ad2 100644 --- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/GrpcVorgangService.java +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/GrpcVorgangService.java @@ -7,6 +7,8 @@ import java.util.Locale; import java.util.UUID; import java.util.concurrent.TimeUnit; +import org.springframework.beans.factory.annotation.Autowired; + import com.github.javafaker.Faker; import com.thedeanda.lorem.Lorem; import com.thedeanda.lorem.LoremIpsum; @@ -30,11 +32,18 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase { } } + @Autowired + private VorgangService vorgangService; + @Autowired + private EingangMapper eingangMapper; + @Override public void createVorgang(CreateVorgangRequest request, StreamObserver<CreateVorgangReply> responseObserver) { LOG.info("creating vorgang:\n{}", request.toString()); + vorgangService.createVorgang(eingangMapper.fromGrpc(request.getEingang())); + var reply = CreateVorgangReply.newBuilder().setMessage("ok").build(); responseObserver.onNext(reply); responseObserver.onCompleted(); diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java new file mode 100644 index 000000000..a6d5f385e --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/Vorgang.java @@ -0,0 +1,32 @@ +package de.itvsh.ozg.pluto.vorgang; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.List; + +import org.springframework.data.annotation.Id; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; + +@Getter +@Builder +public class Vorgang { + + enum Status { + NEU + } + + @Id + private String id; + @Builder.Default + private LocalDateTime createdAt = LocalDateTime.now(ZoneId.of("UTC")); + private String name; + + @Builder.Default + private Status status = Status.NEU; + + @Singular + private List<Eingang> eingangs; +} \ No newline at end of file diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeader.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeader.java new file mode 100644 index 000000000..edb0f97ea --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeader.java @@ -0,0 +1,23 @@ +package de.itvsh.ozg.pluto.vorgang; + +import java.time.LocalDateTime; +import java.time.ZoneId; + +import org.springframework.data.annotation.Id; + +import lombok.Getter; + +@Getter +public class VorgangHeader { + + enum Status { + NEU + } + + @Id + private String id; + private LocalDateTime createdAt = LocalDateTime.now(ZoneId.of("UTC")); + private String name; + + private Status status = Status.NEU; +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java new file mode 100644 index 000000000..065666b4e --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepository.java @@ -0,0 +1,7 @@ +package de.itvsh.ozg.pluto.vorgang; + +import org.springframework.data.repository.CrudRepository; + +public interface VorgangHeaderRepository extends CrudRepository<VorgangHeader, String> { + +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangMapper.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangMapper.java new file mode 100644 index 000000000..c0609ea45 --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangMapper.java @@ -0,0 +1,8 @@ +package de.itvsh.ozg.pluto.vorgang; + +import org.mapstruct.Mapper; + +@Mapper +interface VorgangMapper { + +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangRepository.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangRepository.java new file mode 100644 index 000000000..aee22961c --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangRepository.java @@ -0,0 +1,7 @@ +package de.itvsh.ozg.pluto.vorgang; + +import org.springframework.data.repository.CrudRepository; + +interface VorgangRepository extends CrudRepository<Vorgang, String> { + +} diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangService.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangService.java new file mode 100644 index 000000000..9cd87056d --- /dev/null +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangService.java @@ -0,0 +1,15 @@ +package de.itvsh.ozg.pluto.vorgang; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +class VorgangService { + + @Autowired + private VorgangRepository repository; + + public void createVorgang(Eingang eingang) { + repository.save(Vorgang.builder().eingang(eingang).build()); + } +} diff --git a/pluto-server/src/main/resources/application-local.yml b/pluto-server/src/main/resources/application-local.yml new file mode 100644 index 000000000..e69de29bb diff --git a/pluto-server/src/main/resources/application-oc.yml b/pluto-server/src/main/resources/application-oc.yml new file mode 100644 index 000000000..21b95724c --- /dev/null +++ b/pluto-server/src/main/resources/application-oc.yml @@ -0,0 +1,7 @@ +spring: + data: + mongodb: + host: 172.30.190.222 + authentication-database: admin + username: root + password: ldsjfa0avjklz \ No newline at end of file diff --git a/pluto-server/src/main/resources/application.properties b/pluto-server/src/main/resources/application.yml similarity index 100% rename from pluto-server/src/main/resources/application.properties rename to pluto-server/src/main/resources/application.yml -- GitLab