From 9356b7aa2f94f64f9be2260dbd93e68752fdc41e Mon Sep 17 00:00:00 2001
From: Henry Borasch <Henry.Borasch@sinc.de>
Date: Tue, 28 Feb 2023 13:19:28 +0100
Subject: [PATCH] save temporary changes

---
 .../model/submission}/SubmissionPayload.java       |  2 +-
 .../dev/fitko/fitconnect/api/services/Sender.java  |  7 ++-----
 .../api/services/schema/SchemaProvider.java        | 10 ++++++++++
 .../dev/fitko/fitconnect/client/SenderClient.java  |  2 +-
 .../fitconnect/client/cli/CommandExecutor.java     |  2 +-
 .../client/sender/SubmissionBuilder.java           |  2 +-
 .../fitconnect/client/sender/steps/BuildStep.java  |  2 +-
 .../strategies/SendNewSubmissionStrategy.java      |  4 +---
 .../fitconnect/client/util/ValidDataGuard.java     |  2 +-
 .../fitko/fitconnect/client/SenderClientTest.java  |  2 +-
 .../client/cli/CommandLineClientTest.java          |  2 +-
 .../fitconnect/client/util/ValidDataGuardTest.java |  2 +-
 .../fitko/fitconnect/core/SubmissionSender.java    |  8 ++------
 .../core/schema/SchemaResourceProvider.java        | 14 ++++++++++++++
 14 files changed, 38 insertions(+), 23 deletions(-)
 rename {client/src/main/java/dev/fitko/fitconnect/client/sender/model => api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission}/SubmissionPayload.java (94%)

diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/model/SubmissionPayload.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission/SubmissionPayload.java
similarity index 94%
rename from client/src/main/java/dev/fitko/fitconnect/client/sender/model/SubmissionPayload.java
rename to api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission/SubmissionPayload.java
index fc7956049..f276501e0 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/sender/model/SubmissionPayload.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/submission/SubmissionPayload.java
@@ -1,4 +1,4 @@
-package dev.fitko.fitconnect.client.sender.model;
+package dev.fitko.fitconnect.api.domain.model.submission;
 
 import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType;
 import dev.fitko.fitconnect.api.domain.model.submission.ServiceType;
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java b/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java
index 1078da6fa..ecee117fa 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/services/Sender.java
@@ -8,10 +8,7 @@ import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment;
 import dev.fitko.fitconnect.api.domain.model.metadata.data.Data;
-import dev.fitko.fitconnect.api.domain.model.submission.CreateSubmission;
-import dev.fitko.fitconnect.api.domain.model.submission.Submission;
-import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup;
-import dev.fitko.fitconnect.api.domain.model.submission.SubmitSubmission;
+import dev.fitko.fitconnect.api.domain.model.submission.*;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.exceptions.*;
 
@@ -146,7 +143,7 @@ public interface Sender {
      *
      * @return a {@link ValidationResult} with an optional error
      */
-    ValidationResult validateJsonFormat(String json);
+    ValidationResult validateJsonFormat(SubmissionPayload json);
 
     /**
      * Tests if a given string is well-formed XML syntax.
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java b/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java
index 95bf3bedc..af69d63c2 100644
--- a/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java
+++ b/api/src/main/java/dev/fitko/fitconnect/api/services/schema/SchemaProvider.java
@@ -60,4 +60,14 @@ public interface SchemaProvider {
      * @throws SchemaNotFoundException if the schema is not existing
      */
     String loadDestinationSchema(URI schemaUri) throws SchemaNotFoundException;
+
+    /**
+     * Load the schema for the submission data.
+     *
+     * @param schemaUri uri of the submission data schema that should be loaded
+     * @return the schema as string
+     *
+     * @throws SchemaNotFoundException if the schema is not existing
+     */
+    String loadSubmissionDataSchema(final URI schemaUri) throws SchemaNotFoundException;
 }
\ No newline at end of file
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java b/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java
index 523193e43..4970c09ef 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/SenderClient.java
@@ -11,7 +11,7 @@ import dev.fitko.fitconnect.api.domain.model.submission.SubmitSubmission;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import dev.fitko.fitconnect.client.sender.strategies.SendEncryptedSubmissionStrategy;
 import dev.fitko.fitconnect.client.sender.strategies.SendNewSubmissionStrategy;
 import dev.fitko.fitconnect.client.util.ValidDataGuard;
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java b/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java
index 7410ce89e..c3f6b15ce 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/cli/CommandExecutor.java
@@ -10,7 +10,7 @@ import dev.fitko.fitconnect.client.cli.batch.ImportRecord;
 import dev.fitko.fitconnect.client.cli.commands.*;
 import dev.fitko.fitconnect.client.cli.util.AttachmentDataType;
 import dev.fitko.fitconnect.client.sender.SubmissionBuilder;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import dev.fitko.fitconnect.client.subscriber.ReceivedSubmission;
 import dev.fitko.fitconnect.client.subscriber.model.ReceivedAttachment;
 import dev.fitko.fitconnect.core.util.StopWatch;
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java
index 89a55fd23..4298f6431 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/SubmissionBuilder.java
@@ -2,7 +2,7 @@ package dev.fitko.fitconnect.client.sender;
 
 import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType;
 import dev.fitko.fitconnect.api.domain.model.submission.ServiceType;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import dev.fitko.fitconnect.client.sender.steps.*;
 import lombok.Getter;
 import org.slf4j.Logger;
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java
index 2ecd116d6..a5e1defc9 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/steps/BuildStep.java
@@ -1,6 +1,6 @@
 package dev.fitko.fitconnect.client.sender.steps;
 
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 
 public interface BuildStep {
 
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java b/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java
index 664109153..fbe3e33e1 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/sender/strategies/SendNewSubmissionStrategy.java
@@ -2,7 +2,6 @@ package dev.fitko.fitconnect.client.sender.strategies;
 
 import com.nimbusds.jose.jwk.RSAKey;
 import dev.fitko.fitconnect.api.domain.model.destination.Destination;
-import dev.fitko.fitconnect.api.domain.model.destination.DestinationService;
 import dev.fitko.fitconnect.api.domain.model.metadata.ContentStructure;
 import dev.fitko.fitconnect.api.domain.model.metadata.Hash;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
@@ -28,7 +27,7 @@ import dev.fitko.fitconnect.api.exceptions.SchemaNotFoundException;
 import dev.fitko.fitconnect.api.exceptions.SubmissionNotCreatedException;
 import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.model.AttachmentPayload;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import dev.fitko.fitconnect.core.util.StopWatch;
 import org.apache.tika.Tika;
 import org.slf4j.Logger;
@@ -41,7 +40,6 @@ import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
diff --git a/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java b/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java
index 3fc9bc633..0e15340da 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/util/ValidDataGuard.java
@@ -7,7 +7,7 @@ import dev.fitko.fitconnect.api.domain.model.submission.ServiceType;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 
 import java.net.URI;
 import java.util.Objects;
diff --git a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java
index 723b1e260..3ae0ca490 100644
--- a/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java
+++ b/client/src/test/java/dev/fitko/fitconnect/client/SenderClientTest.java
@@ -23,7 +23,7 @@ import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.EncryptedSubmissionBuilder;
 import dev.fitko.fitconnect.client.sender.SubmissionBuilder;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import dev.fitko.fitconnect.client.testutil.LogCaptor;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java
index 61e54c21a..ae4a9f465 100644
--- a/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java
+++ b/client/src/test/java/dev/fitko/fitconnect/client/cli/CommandLineClientTest.java
@@ -11,7 +11,7 @@ import dev.fitko.fitconnect.client.SubscriberClient;
 import dev.fitko.fitconnect.client.cli.batch.CsvImporter;
 import dev.fitko.fitconnect.client.cli.batch.ImportRecord;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import dev.fitko.fitconnect.client.subscriber.ReceivedSubmission;
 import dev.fitko.fitconnect.client.subscriber.model.ReceivedAttachment;
 import dev.fitko.fitconnect.client.subscriber.model.ReceivedData;
diff --git a/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java b/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java
index 6dc3c8699..a3e1453fe 100644
--- a/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java
+++ b/client/src/test/java/dev/fitko/fitconnect/client/util/ValidDataGuardTest.java
@@ -9,7 +9,7 @@ import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.client.sender.EncryptedSubmissionBuilder;
 import dev.fitko.fitconnect.client.sender.SubmissionBuilder;
 import dev.fitko.fitconnect.client.sender.model.EncryptedSubmissionPayload;
-import dev.fitko.fitconnect.client.sender.model.SubmissionPayload;
+import dev.fitko.fitconnect.api.domain.model.submission.SubmissionPayload;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
diff --git a/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java b/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java
index f66087eab..eb5cc289f 100644
--- a/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java
+++ b/core/src/main/java/dev/fitko/fitconnect/core/SubmissionSender.java
@@ -6,10 +6,7 @@ import dev.fitko.fitconnect.api.domain.model.event.EventLogEntry;
 import dev.fitko.fitconnect.api.domain.model.event.EventStatus;
 import dev.fitko.fitconnect.api.domain.model.event.authtags.AuthenticationTags;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
-import dev.fitko.fitconnect.api.domain.model.submission.CreateSubmission;
-import dev.fitko.fitconnect.api.domain.model.submission.Submission;
-import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup;
-import dev.fitko.fitconnect.api.domain.model.submission.SubmitSubmission;
+import dev.fitko.fitconnect.api.domain.model.submission.*;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.services.Sender;
 import dev.fitko.fitconnect.api.services.crypto.CryptoService;
@@ -108,7 +105,6 @@ public class SubmissionSender implements Sender {
         return keyService.getPublicEncryptionKey(destinationId);
     }
 
-
     @Override
     public Submission sendSubmission(final SubmitSubmission submission) {
         LOGGER.info("Sending submission {}", submission.getSubmissionId());
@@ -116,7 +112,7 @@ public class SubmissionSender implements Sender {
     }
 
     @Override
-    public ValidationResult validateJsonFormat(final String json) {
+    public ValidationResult validateJsonFormat(final SubmissionPayload json) {
         LOGGER.info("Validating data json format");
         return validationService.validateJsonFormat(json);
     }
diff --git a/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java b/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java
index 88433e047..cb5cfef45 100644
--- a/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java
+++ b/core/src/main/java/dev/fitko/fitconnect/core/schema/SchemaResourceProvider.java
@@ -96,6 +96,20 @@ public class SchemaResourceProvider implements SchemaProvider {
         return schema;
     }
 
+    @Override
+    public String loadSubmissionDataSchema(final URI schemaUri) throws SchemaNotFoundException {
+
+        String schema;
+        if(schemaUri.toString().matches("http.+")) {
+            schema = "load schema from remote";
+        }
+        schema = destinationSchemas.get(schemaUri);
+        if (schema == null) {
+            throw new SchemaNotFoundException("Destination schema " + schemaUri.toString() + " is not available.");
+        }
+        return schema;
+    }
+
     private void addSetSchema(final String schema) {
         setSchemas.put(readIdFromSchema(schema), schema);
     }
-- 
GitLab