diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..181fd1c3b1e5dcd980742f50851c58b363294c72 --- /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 0000000000000000000000000000000000000000..17c966c310a02bf46627ef97b11e8a5a0eb33348 --- /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 342cccb4b257dfb6d78a64d0e1f5d1943746a40c..ee17425c44e4483f5f268dddf6dfa4b9c1de77fc 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 0000000000000000000000000000000000000000..75aee531f9d68f3eb3a2f0fc0071076c8e94f683 --- /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 5a6cfab875579f27cb0c060997ef03133e674a10..e6b53aedb801192668580f711107fba139bd2752 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 0000000000000000000000000000000000000000..2aacfd46cce48575dd7aafbfc9beb1f81c10fa77 --- /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 0000000000000000000000000000000000000000..fcbdfa67a6670e74166f4e3f5b234411603765b0 --- /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 4320ce829f60ad2b5bd01b4e876081dca7ff0da0..e21b98ad2fcb658bf575b0a2cb48ab87937eda03 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 0000000000000000000000000000000000000000..a6d5f385e549cb8aa1e06ab48458b893837a4fdb --- /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 0000000000000000000000000000000000000000..edb0f97eafb1e73a25c8c5ab54cf13677a2975a6 --- /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 0000000000000000000000000000000000000000..065666b4eb2986ef190e6e19400ea6c9098bd251 --- /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 0000000000000000000000000000000000000000..c0609ea454e65759f6927a9a039ee334b4d99a78 --- /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 0000000000000000000000000000000000000000..aee22961c5c0c7620d773ae24f7c03fa10a396be --- /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 0000000000000000000000000000000000000000..9cd87056dc797f7e4746825762cbea17a42cf558 --- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 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 0000000000000000000000000000000000000000..21b95724c030255ce5cf7f4e5e2972eb0517d397 --- /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