diff --git a/pluto-interface/src/main/protobuf/vorgang.proto b/pluto-interface/src/main/protobuf/vorgang.proto index 8a397d8f408f6114cefeb0f945dcdc958d786667..93a7bfcbb5309c29328b4372b4981c34b5a95017 100644 --- a/pluto-interface/src/main/protobuf/vorgang.proto +++ b/pluto-interface/src/main/protobuf/vorgang.proto @@ -10,8 +10,12 @@ service VorgangService { rpc CreateVorgang(CreateVorgangRequest) returns (CreateVorgangReply) { } + + rpc FindVorgang(FindVorgangRequest) returns (FindVorgangReply) { + } } +/* Create Vorgang */ message CreateVorgangRequest { Eingang eingang = 1; } @@ -58,4 +62,23 @@ message Field { message CreateVorgangReply { string message = 1; +} + +/* FindVorgang */ + +message FindVorgangRequest { + int32 offset = 1; + int32 limit = 2; +} + +message FindVorgangReply { + int32 total = 1; + repeated VorgangHeader vorgang = 2; +} + +message VorgangHeader { + string id = 1; + string status = 2; + string name = 3; + string createdAt = 4; } \ No newline at end of file diff --git a/pluto-server/pom.xml b/pluto-server/pom.xml index e4639f8879463c5ad63a6b5c79b935432a921821..5a6cfab875579f27cb0c060997ef03133e674a10 100644 --- a/pluto-server/pom.xml +++ b/pluto-server/pom.xml @@ -13,12 +13,16 @@ <artifactId>pluto-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Pluto Server</name> - <description>Server Implementierung des VorgangManagers (Pluto)</description> + <description>Server Implementierung des VorgangManagers (Pluto) + </description> <properties> <java.version>15</java.version> - <grpc.spring-boot-starter.version>2.10.1.RELEASE</grpc.spring-boot-starter.version> + <grpc.spring-boot-starter.version>2.10.1.RELEASE + </grpc.spring-boot-starter.version> + <lorem.version>2.1</lorem.version> + <faker.version>1.0.2</faker.version> </properties> <dependencies> @@ -40,6 +44,18 @@ <version>${project.version}</version> </dependency> + <!-- Tools --> + <dependency> + <groupId>com.thedeanda</groupId> + <artifactId>lorem</artifactId> + <version>${lorem.version}</version> + </dependency> + <dependency> + <groupId>com.github.javafaker</groupId> + <artifactId>javafaker</artifactId> + <version>${faker.version}</version> + </dependency> + <!-- Dev --> <dependency> <groupId>org.springframework.boot</groupId> 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 b68e07a391ed2d5ac5278903e907c4d5caccc7f8..d45547a2672e3aa7338d9063a7ecbf910e6573e7 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 @@ -1,5 +1,13 @@ package de.itvsh.ozg.pluto.vorgang; +import java.util.Locale; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import com.github.javafaker.Faker; +import com.thedeanda.lorem.Lorem; +import com.thedeanda.lorem.LoremIpsum; + import io.grpc.stub.StreamObserver; import lombok.extern.log4j.Log4j2; import net.devh.boot.grpc.server.service.GrpcService; @@ -8,6 +16,11 @@ import net.devh.boot.grpc.server.service.GrpcService; @Log4j2 class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase { + private static final Lorem LOREM = LoremIpsum.getInstance(); + private static final Faker FAKER = new Faker(Locale.GERMANY); + + private static final int TOTAL_VORGAENGE = 1000; + @Override public void createVorgang(de.itvsh.ozg.pluto.vorgang.CreateVorgangRequest request, StreamObserver<CreateVorgangReply> responseObserver) { @@ -17,4 +30,34 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase { responseObserver.onNext(reply); responseObserver.onCompleted(); } + + @Override + public void findVorgang(FindVorgangRequest request, + io.grpc.stub.StreamObserver<de.itvsh.ozg.pluto.vorgang.FindVorgangReply> responseObserver) { + LOG.info("looking for {} vorgaenge", request.getLimit()); + + responseObserver.onNext(buildFindVorgangReply(request)); + responseObserver.onCompleted(); + } + + private FindVorgangReply buildFindVorgangReply(FindVorgangRequest request) { + var builder = FindVorgangReply.newBuilder(); + builder.setTotal(TOTAL_VORGAENGE); + + int numberOfVorgaenge = request.getLimit(); + for (int n = 0; n < numberOfVorgaenge; n++) { + builder.addVorgang(buildVorgangHeader()); + } + return builder.build(); + } + + private VorgangHeader buildVorgangHeader() { + return VorgangHeader.newBuilder()// + .setId(UUID.randomUUID().toString())// + .setStatus("NEU")// + .setName(LOREM.getWords(2, 7)) + .setCreatedAt(FAKER.date().past(14, TimeUnit.DAYS).toString())// + .build(); + } + }